我正在评估来自Membased / memcached的MongoDB,因为我想要更多的灵活性。
当然,Membase非常适合快速(多)键查找。
我喜欢MongoDB给我的其他选项,但它在快速进行多键查找时也是如此?我已经看过$或$ in运算符,我确信我可以用它来模拟它。我只是想知道它是否与Membase一样高性能(在同一个联盟中)。
用例,例如,Lucene / Solr返回20个产品ID。在Couchdb中查找这些产品ID以返回文档/相应字段。谢谢, 吉尔特-扬
答案 0 :(得分:3)
对于您的用例,根据我的经验,我会说:我将一些分析破解成我的数据库,该数据库对数千个ID进行了大量$in
查询,并且工作正常(它是一个黑客)。令我惊讶的是,它在较低的毫秒区域内工作得相当好。
当然,很难对此进行比较,而且 - 通常 - 理论在性能方面是一个不好的伴侣。我想解决问题的最佳方法是迁移一些测试数据并向系统发送一些查询。
使用MongoDB优秀的内置分析器,使用$explain
,记住每个查询规则的一个索引,查看日志,密切关注mongostat,并做一些基准测试。这不应该花太长时间,给你一个肯定和肯定的答案。如果你的查询结果很慢,那么这里和新闻组的人可能会有一些想法如何改进确切的查询或索引。
答案 1 :(得分:1)
每个查询一个索引。有时会认为查询是多个 密钥可以使用多个索引; MongoDB不是这种情况。如果 你有一个在多个键上选择的查询,你想要它 查询有效地使用索引,然后是复合键索引 必要的。
http://www.mongodb.org/display/DOCS/Indexing+Advice+and+FAQ#IndexingAdviceandFAQ-Oneindexperquery
关于索引,该页面上还有更多信息。
如果您的索引在内存中并且您要使用复合键查询要查询的列,那么底线是Mongo会很棒。如果你的索引很差,那么你的表现就会受到影响。这几乎与大多数系统一致。