本文是《数据密集型应用系统设计》(DDIA)的读书笔记,一共十二章,我已经全部阅读并且整理完毕。
采用一问一答的形式,并且用列表形式整理了原文。 笔记的内容大概是原文的 1/5 ~
1/3,所以你如果没有很多时间看书的话,看我的笔记也就够了!
什么是分区?
分区的优点?
本章内容
怎么避免热点?
优点:
缺点:
优点:
缺点:
组合索引:
存在的问题:
特点:
注意:
缺点:
然而被广泛使用:MongoDB,Riak ,Cassandra ,Elasticsearch ,SolrCloud 和VoltDB 【19】都使用文档分区二级索引。
优点:
缺点:
随着时间的推移,数据库会有各种变化:
所有这些更改都需要数据和请求从一个节点移动到另一个节点。 将负载从集群中的一个节点向另一个节点移动的过程称为再平衡(rebalancing)。
无论使用哪种分区方案,再平衡通常都要满足一些最低要求:
问题
优点
特点
缺点
采用关键字区间分区的数据库,如果边界设置有问题,可能导致数据倾斜到一个分区中。
特点:
优点:
缺点:
解决方法:
适用情况:
操作方式:
重要问题:自动还是手动进行?
完全自动重新平衡的缺点:
服务发现(service discovery)
概括来说,这个问题有几种不同的方案(如图6-7所示):
关键问题:
常见实现 ZooKeeper:
应用:
两种主要的分区方法:
两种方法搭配使用也是可行的,例如使用复合主键:
我们还讨论了分区和二级索引之间的相互作用。
次级索引也需要分区,有两种方法:
最后,我们讨论了将查询路由到适当的分区的技术,从简单的分区负载平衡到复杂的并行查询执行引擎。