经典案例
比如用户在下载一款 APP 之后,第一次登录需要进行用户注册,当用户在填好资料,点击注册按钮后,一条用户注册的数据就会被发送到后端服务器,然后后端服务器会将数据发送到数据库进行持久化存储。
存储 & 数据库简介
存储系统:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件。
单机存储系统做到高性能/高性价比/高可靠性:RAID。
单块大容量磁盘的价格 > 多块小容量磁盘,单块磁盘的写入性能 < 多块磁盘的并发写入性能,单块磁盘的容错能力有限,不够安全。所以使用 RAID 0+1 的方式。
关系型数据库是存储系统,但是除去存储外,又发展出其他能力。
非关系型数据库也是存储系统,但是一般不要求严格的结构化。
主流产品剖析
单机存储
单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交互
Linux 经典哲学:一切皆文件
常见使用方式: put(k, v) & get(k)
常见数据结构: LSM-Tree,某种程度上牺牲读性能,追求写入性能
拳头产品: RocksDB
分布式存储
分布式存储 = 在单机存储基础上实现了分布式协议,涉及大量网络交互
HDFS:支持海量数据存储、高容错性、弱POSIX语义、使用普通x86服务器,性价比高。
Ceph:一套系统支持对象接口、块接口、文件接口但是一切皆对象、数据写入采用主备复制模型、数据分布模型采用CRUSH算法(HASH + 权重 + 随机抽签)。
单机关系型数据库
单机数据库 = 单个计算机节点上的数据库系统事务在单机内执行,也可能通过网络交互实现分布式事务
Mysql & PostgreSQL
单机非关系型数据库
MongoDB、Redis、ElasticSearch三足鼎立。
分布式数据库
分布式数据库主要解决以下问题:
- 容量
- 弹性
- 性价比
新技术演进