我目前正在开发基于MongoDB的系统,该系统将存储至少10亿个文档.这将每月增加约5000万.
主集合的id的格式为YYYYMM_SOURCEID_DOCTYPE_UUID,并用作分片索引.每条记录产生大约1kb的索引. 99%的操作将在最近三个月的数据中发生.我们希望支持文档的关键字搜索,在最近三个月的数据中具有非常好的性能,并且至少在旧版本上表现不佳.
MongoDB听起来像是一个合理的解决方案,只要我能将索引的活动结束保存在内存中吗?
最佳答案 我建议你更改你的分片键,就像当前的那样,你可能会在最后一个分片中找到所有内容,因为键的YYYYMM位会使所有新的插入始终转到“最右边”的分片.
http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key#ChoosingaShardKey-Cardinality还有更多信息.
根据“关键字”字段的基数,您可能希望选择它作为分片键.这样,mongodb可以轻松地从一个分片中获取属于关键字的所有文档.所有写入仍将转到所有分片,因为它是按关键字分区的.
如果“关键字”的基数不是很高(即<100),那么这不是一个好的分片键,但是,您可以将它与年份和月份组合,例如keywords_YYYYMM.