面向聚合数据库非常适用于横向扩展方式,因为聚合此时就自然成了数据分布单元。
数据分布有两条路径: 复制和分片,这两种方法可以混合用
复制:同一份数据拷贝到多个节点。有主从式和对等式两种。
分片:不同数据存放在不同节点中。
4.1 单一服务器:
4.2 分片
一般,数据库的繁忙体现在:不同用户需要访问的数据集中的不同部分。这种情况下,把数据的各个部分存放在不同的服务器中,实现横向扩展。
理想情况下,不同的服务器节点服务于不同的用户。理想情况是:需要同时访问的那些数据都放在同一个节点上。“聚合”这一结构,就是为了把经常需要同时访问的数据放在一起。
数据就近存储(聚合存储在在离用户最近的节点);负载均衡(聚合数据均匀分布;可以把有可能需要依次读取的集合放在一起。
不应该让应用程序处理分片,那样如果分片变化了,要改程序,还要做数据迁移。
应该让数据库做分片,对应用程序透明。
分片也存在单点故障的问题。
4.3 主从复制
主节点:处理数据更新操作。
从节点:要与主节点保持同步。
频繁读取的情况下,主从复制方式更加有利于提升数据访问性能。
这种方式缺点是:不一致。
4.4 对等复制
没有主从之分。
4.5 结合“分片”和“复制”
列族数据库,经常将对等复制和分片结合。这种情况下,数据可能分布于集群中若干个节点上, 比如一开始可以用3作为复制因子(也就是把每个分片数据放在3个节点上)
4.6 要点: