使用MongoDB时如何设计表及其层次结构

时间:2015-11-15 13:39:24

标签: mongodb

我是MongoDB的新手,并且一直在使用Node.js来玩MongoDB。我正在开发一个示例项目,以了解哪个是像github这样的问题跟踪器。

我不清楚在设计存储数据的文档时使用的是什么方法。

选项1

来自关系模型世界,我发现创建像

这样的文档非常自然
  • 项目{id,name}
  • ProjectUserMapping {id,projectid,userid}
  • 问题{id,projectid,name,blah,blah ..}

等等。

选项2

在互联网上阅读了几篇文章之后,我发现人们在这一行上使用了一些东西

Project {
 Users ['yasser', 'neel', 'ian'],
 Issues [
  {'how do I turn this on', '22/12/2014'...'}
 ]

考虑到以下因素,哪种方法更好 - 许多项目和每个项目都会有很多问题,标签,过滤器等 - 查询时间。例如,如果我需要对问题进行通用搜索。我是否需要扫描所有项目下的问题,因为与以前不同,我没有单独的问题表。

请帮我理解这一点。

1 个答案:

答案 0 :(得分:0)

这是一个有问题但最好的起点是:

Mongo data structures

在不知道您想要获取的大小/比例的情况下,您将运行的所有查询列表,可用硬件和期望性能级别都很难为您提供更多信息。

但首先要制作一个你将要运行的查询列表,然后创建允许你有效运行这些查询的数据结构(参见上面的链接)似乎很聪明。

此外,mongo喜欢存储和访问内存中的数据,因此强烈建议有足够的内存来存储常见查询的数据。