Skip to main content

分区

分区是一种将大型数据库分解成小型数据库的方式,主要的目的是增加系统伸缩性 Scalability。

键值数据分区

  1. 根据键的范围分区(利于范围查询)
  2. 根据目录分片(利于点查询)
  3. 根据地理位置分片(CDN)
  4. 根据键的散列分区(利于负载均衡)

无论哪种分区,都无法完全避免某些数据热点问题,需要应用端来处理它们。

分区与次级索引

  1. 基于文档的次级索引进行分区
  2. 基于关键词的次级索引进行分区

分区在平衡

要求

  1. 再平衡后,负载应保持平衡
  2. 再平衡时,数据继续读取和写入
  3. 在平衡中,只移动必要的数据,减少网络和磁盘 I/O 负载

再平衡策略

  1. hash mod N
  2. 固定数量的分区
  3. 动态分区(固定大小分区)
  4. 按节点比例分区

请求路由

  1. 在节点上
  2. 在路由层
  3. 在客户端

服务发现 (Zookeeper) 注册与订阅。