存储与数据库
术语:
数据流动:用户数据👉后端服务器👉数据库系统
持久化数据:相当于让数据长久留存
数据库持久化:校验数据合法性👉修改内存(组织数据)👉写入存储介质
存储系统
定义:提供了读写、控制类接口,能够安全有效地把数据持久化的软件
特点:性能敏感、易受硬件影响(顺应硬件变更而改变)、代码简单但要考虑多种异常情况
例子:RAID技术
存储器的层级结构:略(persistent memory)
数据如何从应用到存储介质:略
需要关注两点:
缓存很重要(软件实现cache,以硬件友好的方式访问硬件)
注意拷贝的使用(消耗cpu,要尽量减少拷贝)
数据库系统
关系:集合(表达事物间的关系)
关系代数:对关系做运算的抽象查询语言
SQL:方便人类阅读的关系代数表达形式(SDL)
关系型数据库
是一种存储系统,但功能不止存储,比如支持事务(ACID)、支持复杂查询语言、结构化数据友好
非关系型数据库
不要求严格的结构化,对半结构化数据友好。可能支持事务和复杂查询语言
数据库和经典存储在结构化数据管理的比较
1.管理结构
数据库:表形式管理
经典存储:自行定义管理结构
2.事务能力(ACID)
数据库有优越的事务能力
经典存储只能做深度的代码逻辑来满足一些高级需求
3.复杂查询能力
数据库:代码更简洁、灵活
经典存储
主流产品剖析
1.单机存储系统
单个计算机节点上的存储软件系统,一般不涉及网络交互
本地文件系统:linux
key-value存储系统:
常见数据结构:LSM-Tree
2.分布式存储
在单机存储基础上实现了分布式协议,涉及大量网络交互(注重网络交互的性能)
分布式文件系统
分布式对象存储系统
eg:HDFS、ceph
3.单机数据库
单个计算机节点上的数据库系统。事务在单机内执行,也可能通过网络交互实现分布式事务。
关系型数据库
非关系型数据库
4.分布式数据库
目的:解决容量问题、解决弹性问题、解决性价比问题