认识存储&数据库 | 青训营笔记

89 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

今天学习了关于数据库的存储方面的理论知识,认识了存储的本质,以及了解了市面上主流的关系型数据库和非关系型数据库.

一、经典案例

数据的产生

image.png

数据的流动

image.png

数据的持久化

image.png

从数据的产生开始,到数据的流动最终数据的持久化,在这个过程中有很多潜在问题:

  • 数据库怎么保证数据不丢?
  • 数据库怎么处理多人同时修改?
  • 为什么用数据库,除了数据库还能存到别的存储系统吗??
  • 数据库只能处理结构化数据吗?
  • 有哪些操作数据库的方式,要用什么编程语言?

二、存储&数据库简介

存储系统

一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统

系统特点

  • 作为后端软件的底座,性能敏感
  • 存储系统软件架构,容易受硬件影响
  • 存储系统代码,“简单"又“复杂”

存储器的层级结构

image.png

数据从应用到存储介质

  • 缓存很重要,贯穿整个存储体系
  • 拷贝很昂贵,应该尽量减少
  • 硬件设备五花八门,需要有抽象统一的接入层

关系型数据库

特点

  1. 存储结构:存储结构化的数据,需要事先定义好字段名称,字段类型,字段个数 数据存储在行与列的交汇处(称之为Cell单元格)
  2. 存储规范:为了充分利用存储空间,尽可能的避免重复(数据冗余),按照数据最小关系表的形式存储,数 据清晰,一目了然
  3. 查询方式:采用结构化查询语言(SQL)对数据进行管理
  4. 事务性:为了保证数据的商业业务逻辑以及数据安全性,支持ACID的事务特性
  5. 读写性能:关系型数据库追求的是数据实时性和数据的一致性

缺点

  1. 一旦数据表中存储数据后,修改表结构变得特别困难。
  2. 如果我们想扩展字段时,会对表结构产生影响。
  3. 即使某一行中的某个字段没有赋值,也要使用null填充
  4. 一旦涉及到多张表,因为数据表存在着复杂的关系,管理非常不方便。
  5. 一旦面对海量数据的处理时,读写性能特别差,尤其在高并发这一块。

非关系数据库

  1. 存储非结构化的数据,比如文本、图片、音频、视频
  2. 表与表之间没有关联,可扩展性强。
  3. 保证数据的最终一致性。遵循BASE理论。
  4. 支持海量数据的存储和高并发的高效读写。
  5. 支持分布式,能够对数据进行分片存储,扩缩容简单

三、主流产品剖析

单机数据库

image.png

关系型数据库

image.png

非关系型数据库

Redis, MingoDB, Elasticsearch三足鼎立

image.png

image.png

分布式数据库

解决容量问题

image.png

解决弹性问题 image.png

解决性价比问题 image.png