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

标签 mongodb sharding

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

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

最佳答案

如果您希望数据基于哈希键进行分发,MongoDB 有一个内置的方法可以做到这一点:

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

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

请注意,您不能同时拥有逻辑键范围和随机数据分布。要么是其中之一,要么是另一个,它们是相互排斥的。所以:

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

关于mongodb 使用字符串字段进行范围分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431084/

相关文章:

postgresql - 在 postgres 中有很多序列有什么问题吗?

java - 如何在 Spring MVC 的 contextConfigLocation 中设置 MongoDB ReadPreference

mySQL - 获取正在查询的分片

mongodb - 混合 Linux 和 Windows MongoDB 副本集,对分片来说同等重要的硬件

json - 带有 postgres 的 Django 的非关系数据库模式

mongodb - 你如何访问从 Meteor 中的 Mongo 查询的对象的属性

java - 如何正确处理服务器端和客户端的时间节省问题

javascript - mongodb - 不明白为什么/如何使用 map-reduce

mongodb - Node.js 和 Mongoose,太慢无法将 Schema 定义放在单独的文件中?

size - ElasticSearch - 确定最大分片大小