【发布时间】:2012-02-06 17:28:15
【问题描述】:
我就像许多其他人一样正在考虑在 Mongo 中对我的收藏进行分片的正确方法。主要问题是 - 自动分片是如何工作的?
官方文档说——“MongoDB 通过自动分片(分区)架构水平扩展”和“为了对集合进行分区,我们指定了一个分片键模式。”附注“为集合选择正确的分片键很重要”:)。
http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-ShardKeys
http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key
现在的问题是 - “这是正确的密钥”(按 ObjectID 分片)?
db.runCommand({ shardcollection : "test", key : { _id : 1 }})
Mongo 内部发生了什么?在这种情况下,Mongo 如何将数据拆分为块?假设我最初有 1000 万条记录和 2 个分片服务器 - 当我想在收集达到 2000 万条记录时再添加 2 个分片服务器时,Mongo 端会发生什么?我在 Mongo 相关资源的任何地方都找不到该级别的详细信息。
考虑到自动生成 _id 的随机性及其结构,
...http://www.mongodb.org/display/DOCS/Object+IDs...
我将按最低有效字节(rtl 顺序)分片,并按 2-3 个字节的值拆分块 - 这将提供一种简单的方法来分片 2^N 个分片服务器 - 2、4、8、..、 256 个分片服务器,每个分片上的负载或多或少均匀,所需配置最少。据我了解,Mongo 仅支持通过明确定义的范围进行分片/分块,并且我的想法行不通。是真的吗?
【问题讨论】:
-
是的,我正处于新项目的积极研究阶段 - 将审查我的所有问题并在研究完成后接受最适用的问题。
-
@XtraCoder 您的研究进展如何?这个答案似乎值得接受。
标签: mongodb