2012-04-05 53 views
0
碎片键“月”字段

目前,我们正在实施一个解决方案,我们有我们要基于以下领域的分片集合:使用“年”,并收集在MongDB

年(INT)

月(INT)

我们希望产生每年大约有数据收集的2GB。

+1

你的问题是什么?这是否是一个好主意?创建时间是年,月还是DOB?还是什么? – 2012-04-05 15:33:03

回答

6

如果你不介意我问,你为什么要考虑分片? 2GB应该很容易安装在一台服务器上。这就是说,如果你肯定要分割你的集合,那么选择一个非递增的分片密钥是非常重要的,这个分片密钥足够精细,从而永远不会发生分块不能分裂的情况。

例如,如果一个集合被单独拆分月那么就只有12种可能的块。如果1月份是插入的流行月份,那么可能会出现这种情况,即一百万(只是选择一个大数目)记录可能会插入到该块中,并且永远无法分割。

不选择递增(或递减)的分片键也很重要。随着新文档被插入到集合中,每个后续文档都将被添加到同一个块中,直到该块达到其大小限制并且必须被分割。然后可以将较低的块移动到不同的服务器,创建一个“瀑布”效果(一个碎片不断填满块,然后移动到其他碎片)。与此同时,所有新文档都会不断写入同一个碎片,创建所谓的“热点”。如果插入速率足够,磁盘可能会达到其IO限制,尝试写入新文档,同时将现有数据迁移到另一个分片。

蒙戈“分片介绍”的文件,对文件 如何存储在分片集合的详细信息。 http://www.mongodb.org/display/DOCS/Sharding+Introduction

此外,蒙戈文件“选择碎片密钥”提供了选择片键时需考虑什么好 细节。 http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key

如果可能,我建议您阅读Kristina Chodorow的“Scaling MongoDB”。 http://shop.oreilly.com/product/0636920018308.do这提供了一个很好的介绍分片以及更详细的解释Dos和选择上面提到的分片密钥。

以下是其他用户询问有关分片和选择分片密钥的一些问题的链接。 (您可能会认识到一些链接和一些作者)希望这些资源可以提高您对分片工作原理的理解,并且如果您仍然决定分割您的集合,请允许您选择一个高效的分片键。

“拆分不平衡” - http://groups.google.com/group/mongodb-user/browse_thread/thread/1328250382087448

“什么是设计用于该数据集的碎片指数最好的方法” - http://groups.google.com/group/mongodb-user/browse_thread/thread/5bda4a39d9be54f5

“低基数碎片键” - http://groups.google.com/group/mongodb-user/browse_thread/thread/3c96d1c254f113b1

“片键分析“ -​​