Mongo shard:如何基于_id(整数)平衡服务器

时间:2012-09-12 04:49:54

标签: mongodb sharding

  • 我们想在分片中使用2个mongo服务器
  • 数据库中只有一个集合(~110M记录)。
  • 活动主要是写作,添加新记录,更新旧记录
  • 记录只有两个字段:_id和数组{:_id => 12345,:pp => [东西,东西......]}
  • _id实际上是我们的用户ID,整数
  • _id是集合中唯一的索引
  • 我们希望分片键基于:_id%2

即_id = 1进入服务器1,_id = 2进入服务器2,_id = 3进入服务器1,_id => 4进入服务器2 ......依此类推

(因为_ids是线性的,我们希望两个服务器在写作时均衡)

我们如何为此配置mongos?

1 个答案:

答案 0 :(得分:0)

您可以利用Mongo 2.2版本中添加的标记识别分片功能。 http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding

用例功能(用于地理位置分散)与您的情况有很大不同。

默认情况下(非标记识别选项)Mongo有效地管理跨群集的数据拆分。提供了具有均匀分布值的分片键,并且查询可能必须查看具有连续值的文档,mongo使用的默认算法是最佳的。它还将重新平衡以确保数据均匀分布(在您可以配置的范围内)。最好不要在不理解其含义的情况下改变它。

默认算法是将分片键值分解为范围块(块),然后将块分配给分片的不同成员。

以下几页的更多详情。

http://docs.mongodb.org/manual/core/sharding/

http://docs.mongodb.org/manual/core/sharding-internals/#sharding-migration-thresholds