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