mongodb范围使用字符串字段进行分片

时间:2015-10-30 07:52:40

标签: mongodb sharding

我在mongodb文档中使用'id'字段,它是'_id'的HASH(由mongo生成的ObjectId字段)。我想在'id'字段中使用RANGE分片。问题如下:

当'shardKey'是一些长字符串(例如64个字符)时,如何为每个分片设置范围?

1 个答案:

答案 0 :(得分:2)

如果您希望基于散列键分发数据,MongoDB有一种内置方式:

sh.shardCollection("yourDB.yourCollection", { _id: "hashed" })

这样,数据将在您的分片之间随机分布,也可以均匀分布(或非常接近分片)。

请注意,您不能同时拥有逻辑键范围和随机数据。它是一个或另一个,它们是互斥的。所以:

  • 如果您想要随机数据分发,请使用{ fieldName: "hashed" }作为分片键定义。
  • 如果要手动控制数据的分发和访问方式,请使用普通的分片键并定义shard tags