使用非常大的数据集进行MongoDB扩展和内存使用

时间:2012-03-05 18:50:55

标签: mongodb

我目前正在开发基于MongoDB的系统,该系统将存储至少十亿个文档。这将每月增加约5000万。

主集合的ID的格式为YYYYMM_SOURCEID_DOCTYPE_UUID,并用作分片索引。每条记录产生大约1kb的索引。 99%的操作将在最近三个月的数据中发生。我们希望支持关键字搜索文档,在最近三个月的数据中表现非常出色,并且至少在旧版本上表现不佳。

只要我能将索引的活动结束保留在内存中,MongoDB听起来是否合理?

1 个答案:

答案 0 :(得分:2)

我建议您更改您的分片键,就像当前的那样,您可能会在所有内容的最后一个分片中找到它,因为该键的YYYYMM位将使所有新的插入转到“最正确的”碎片永远。 http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key#ChoosingaShardKey-Cardinality有更多信息。

根据“关键字”字段的基数,您可能希望将其选为分片键。这样,mongodb可以轻松地从一个分片中获取属于关键字的所有文档。所有写入仍将转到所有分片,因为它是按关键字分区的。

如果“关键字”的基数不是很高(即<100),那么这不是一个好的分片键,但是,你可以将它与年份和月份结合起来,例如keywords_YYYYMM。