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

即 _id=1 到服务器 1,_id=2 到服务器 2,_id=3 到服务器 1,_id=>4 到服务器 2……等等

(因为 _ids 是线性的,我们希望两台服务器在写入时同样平衡)

我们如何为此配置 mongos?

4

1 回答 1

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

于 2012-09-12T12:15:09.603 回答