第四章 分布式模型

  面向聚合数据库非常适用于横向扩展方式,因为聚合此时就自然成了数据分布单元。

  数据分布有两条路径: 复制分片,这两种方法可以混合用

  复制:同一份数据拷贝到多个节点。有主从式和对等式两种。

  分片:不同数据存放在不同节点中。

4.1 单一服务器:

4.2 分片

  一般,数据库的繁忙体现在:不同用户需要访问的数据集中的不同部分。这种情况下,把数据的各个部分存放在不同的服务器中,实现横向扩展。

  理想情况下,不同的服务器节点服务于不同的用户。理想情况是:需要同时访问的那些数据都放在同一个节点上。“聚合”这一结构,就是为了把经常需要同时访问的数据放在一起。

  数据就近存储(聚合存储在在离用户最近的节点);负载均衡(聚合数据均匀分布;可以把有可能需要依次读取的集合放在一起。

  不应该让应用程序处理分片,那样如果分片变化了,要改程序,还要做数据迁移。

  应该让数据库做分片,对应用程序透明。

  分片也存在单点故障的问题。

4.3 主从复制

  主节点:处理数据更新操作。

  从节点:要与主节点保持同步。

  频繁读取的情况下,主从复制方式更加有利于提升数据访问性能。

    这种方式缺点是:不一致。

4.4 对等复制

  没有主从之分。

4.5 结合“分片”和“复制”  

   列族数据库,经常将对等复制和分片结合。这种情况下,数据可能分布于集群中若干个节点上, 比如一开始可以用3作为复制因子(也就是把每个分片数据放在3个节点上)

4.6 要点: