2010-12-09 107 views
0

我正在为目录系统构建书签存储的Web应用程序。 我已经得到了这些集合设置:基础数据库(MongoDB)性能问题

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

  • 用户(S)

所以性能明智的,应该我:
- 用户ID添加到生成的路径
- 嵌入整个路径收集到特定的用户

我要挑选项2,但是,是的,我不知道......

编辑:
我还想着让Ajax化的整个界面。所以,这意味着我将通过ajax从特定路径(从登录用户)加载目录和链接。这样,速度更快,我不必触摸用户集合。也许这改变了事情?

就像我在评论中所说的,整个数据库中的1个巨大的收集看起来有点奇怪。对?

回答

1

好MongoDB的主要目的是为了支持冗余data.I会建议第二选项是更好,因为在你的情况是什么,我觉得,如果你嵌入路径收集到特定的用户,然后通过使用只有你一个查询可以获取有关用户的所有数据以及与路径收集相关的所有数据。

如果你遵循第一个选项,那么你必须触发两个分离查询来获取所有数据,这将增加你的工作。

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

+0

感谢您的回答。似乎有点奇怪的寿',只有一个巨大的收集在数据库中。不是吗?哦,还有别的..我会编辑这个问题...... – Icid 2010-12-09 15:11:36

+1

@Icid逻辑上,根据你的存储大小,你的数据库可以增长到任意大小,所以如果你执行索引,那么不用担心这个和大量的集合。得到更快的结果。如果你想做索引,然后使用类似solr的东西,因为mongodb也提供索引,但这会突然增加你的数据库的操作负载。如果你仍然对第二种方法有疑问,那么你可以采用第一种方法,并对光标进行第二次查询,这是我之前解释的。 – Rupeshit 2010-12-10 06:22:34

1

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