第六周总结
一、数据分片
解决单表的访问压力和存储压力
概念:将一张表拆分成若干片,分布到多个服务器上;
挑战:
需要大量的额外代码,处理逻辑因此变得更加复杂
无法执行多分片的联合查询
无法使用数据库事务
随着数据的增加,如何增加更多的服务器 --- 伸缩性,扩容
分布式数据库中间件(Mycat)
如何做集群的伸缩
单服务单数据库
单服务数据库主从
业务分服务和分库
业务划分+单业务主从复制+分片
二、NoSQL
1、CAP原理
一致性(Consisitency):每次读取的数据都应该是最近写入的数据或者返回一个错误,而不是过期数据,也就是说,数据是一致性的;
可用性(Availability):每次请求都应该得到一个相应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的,也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但是并不保证响应的数据是最新的;
分区耐受性(Partition tolerance): 即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的
2、最终一致性
根据时间戳,最后写入覆盖
客户端冲突解决,业务上进行解决
投票解决冲突(写入三个节点,大于等于2个节点成功才返回)
3、Hbase架构
4、ACID与BASE
关系型数据库ACID的概念
原子性(Atomicity)
NoSql数据库BASE的概念
基本可用(Basically Available): 系统在出现不可预知的故障时,允许损失部分可用性,如响应时间上的损失或者功能上的损失
5、NoSql数据库案例(Doris — 海量KV Engine)
评论