基本数据库(MongoDB)性能问题

时间:2010-12-09 13:13:13

标签: ruby-on-rails ruby mongodb mongoid database

我正在使用目录系统构建用于书签存储的Web应用程序。 我已经设置了这些集合:

  • 路径(S)
    --->目录(嵌入式文件)
    --->链接(嵌入文档)

  • (多个)用户

表现明智,我应该: - 将用户ID添加到创建的路径
- 将整个Paths集合嵌入特定用户

我想选择选项2,但是,我不知道......

编辑:
我也在考虑让整个界面变得更加灵活。所以,这意味着我将通过ajax从特定路径(从登录用户)加载目录和链接。这样,它更快,我不必触摸用户集合。也许这改变了一些事情?

就像我在评论中所说的那样,整个数据库中的一个巨大的集合似乎有点奇怪。正确?

2 个答案:

答案 0 :(得分:1)

mongoDB的主要目的是支持冗余数据。我建议 second 选项更好,因为在你的场景中我觉得如果你将路径集合嵌入到特定用户然后使用只有单个查询,您可以获取有关用户的所有数据以及与路径收集相关的所有数据。

如果您按照第一个选项进行操作,那么您必须触发两个分隔查询以获取所有可能会增加您工作量的数据。

由于mongodb将数据带入RAM,因此在从一个集合中获取数据后,您可以将其存储到游标中,并且可以从该游标数据中获取另一个集合中的数据。因此,如果我们看到表现明智,我认为它不会影响很多。

答案 1 :(得分:1)

RE:编辑。如果您要将所有内容存储在一个文档中并使用嵌入式文档,那么当您提出查询时,请确保只选择所需的数据,否则您将加载整个文档,包括嵌入式文档。