MongoDB适合加载随机记录吗?

时间:2012-06-26 13:43:23

标签: mongodb

我们的应用程序存储包含较短文本的记录(字符串为100-1000个字符)。 它提供了对给定查询文本的大多数类似记录的搜索。 我们使用Lucene索引文本。 完整记录存储在数据库中。 每条记录只属于一个域,现在有超过1000个域。域数量不受限制但增长缓慢。 记录正在不断地添加到所有域(非统一)。

我们使用Mysql作为数据库,每个域都有自己的表。 现在我们尝试迁移到MongoDB,因为它是向外扩展的。所有记录都存储在那里的单个集合中,domain是记录的属性。 仍然从Lucene搜索获得ID。 但是我们观察到MongDB加载记录的性能较差,与Mysql的解决方案相比较。 我怀疑MongoDB的“内存映射存储引擎”是原因。 每次搜索都可以返回“随机记录”。来自一个域的搜索通常会连续进行。来自一个域的记录不存储在集合中的一个位置。 这可能会导致许多页面错误。

我的解释是对的吗? MongoDB适合这种记录加载吗?有什么可以改善表现? MongoDB服务器和应用程序在Linux上运行。 非常感谢。

1 个答案:

答案 0 :(得分:1)

因此,您的工作集(数据和索引)适合RAM。这里有很多帖子/博客,所以只是google“MongoDB工作集”,但是如你所知,从RAM访问而不是分页到磁盘更快。

请记住,如果你有一个写密集的环境,你需要看看缩放你的写入,这是你需要查看sharding然后关键决定是选择正确的分片键。这是非常重要的,它是不可变的,所以给它很多思考:)这是一个很好的doc选择密钥。

另一件事,关于Java驱动程序,使用version 2.8,已经发生了很多变化,包括一些sharding-related

最后,您可以免费使用Mongo Monitoring Service来帮助监控您的实施。它非常适合概述,也适合深入挖掘。