- 服务器对存储系统的要求
- 必须是增量级存储系统,不能是
- 开始时保证高性能,稳定的,不要求容灾,选这个低峰事情备份就行了
- 随着互联网的普及,容灾级别要求变高,单机变多机器互相热备,这就是数据库主从结构的由来
- 然后,单机存储量有限,开始手工分库分表,最后分布式数据库出现了
- 单机可靠性不够,开始两地三中心
- 存储即数据结构
- 业务服务器无状态
- 数据库的种类
- 关系型数据库:
MySQL
、Oracle
、SQLServer
,强schema约束 - 文档型数据库:
MongoDB
,无schema - 键值存储:Cassandra ,只有明确唯一索引
- 事务
- ACID
- 原子性:
- 一致性
- 隔离性
- 持久性
- 锁
- 乐观锁:先进行冲突检查,如果没有冲突直接提交,否则放弃本次修改
- 悲观锁:先互斥,在修改数据,不管是否发生了冲突,都会互斥
- 主从结构
- 为了数据库业务的可用性和数据持久性,我们需要考虑多副本存储,这就引发了数据一致性的问题,我们可以才有主从结构,主负责提供读和写,从提供读,同时主负责把最新数据同步到从从上,为了保证主失败后,从可以替换,需要才有集群结构,我们才从重新选举,必须大于半数节点统一才可以,所以需要集群为奇数个,为了保证选举的从未最新数据,必须保证主写入从至少一个最新的数据。
- 分布式
- 多副本可用性和持久性得到了解决,
- 数据规模大了,单个物理节点放不了那么大的数据量
- 主承受的读写压力太大,单台节点承受不来这么高的吞吐能力
- 采用分布式,把数据分片到多台设备上,一起构成一个单副本的数据库,同时还要有每个分片的副本,存放在不同的机器,保证备份
- 哈希分片(一致性hash)
- 范围分类
- CAP理论(只能选择二,必须保证P,否则就不是分布式了)
- 数据一致性
- 服务可用性
- 分区容错性