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

Jos*_*osh 5 mongodb

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

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

只要我可以将索引的活动端保留在内存中,MongoDB 听起来是否是一个合理的解决方案?

Der*_*ick 2

我建议您更改分片键,就像当前的分片键一样,您似乎可能会点击最后一个分片,因为的 YYYYMM 位将使所有新插入始终进入“最右边”的分片。http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key#ChoosingaShardKey-Cardinality有更多相关信息。

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

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