听了MongoDB表现这么多好事后,我们决定让Mongodb尝试解决我们遇到的问题.我开始将我们在几个mysql数据库中的所有记录移动到mongodb中的单个集合.这导致了一个包含2900万个文档的集合(每个文档至少有20个字段),在HD中占用大约100 GB的空间.我们决定将它们全部放在一个集合中,因为所有文档都具有相同的结构,我们想要查询并汇总所有这些文档的结果.
我创建了一些索引以匹配我的查询,否则即使简单的count()也需要很长时间.但是,诸如distinct()和group()之类的查询仍然需要太长时间.
例:
// creation of a compound index
db.collection.ensureIndex({'metadata.system':1, 'metadata.company':1})
// query to get all the combinations companies and systems
db.collection.group({key: { 'metadata.system':true, 'metadata.company':true }, reduce: function(obj,prev) {}, initial: {} });
Run Code Online (Sandbox Code Playgroud)
我看了一下mongod日志,它有很多像这样的行(在执行上面的查询时):
Thu Apr 8 14:40:05 getmore database.collection cid:973023491046432059 ntoreturn:0 query: {} bytes:1048890 nreturned:417 154ms
Thu Apr 8 14:40:08 getmore database.collection cid:973023491046432059 ntoreturn:0 query: {} bytes:1050205 nreturned:414 430ms
Thu Apr 8 14:40:18 getmore database.collection cid:973023491046432059 ntoreturn:0 query: {} bytes:1049748 nreturned:201 130ms
Thu Apr 8 …Run Code Online (Sandbox Code Playgroud)