作为最流行的NoSQL解决方案之一,MongoDB具有这种方法的大多数优点。但我仍然在努力的一个问题是如何在NoSQL数据存储中反映对象关系,特别是 - MongoDB。在MongoDB中模拟关系
例如,让我们考虑一个简单的数据模型:User,Post和Comment。我很清楚,评论本身没有价值,因此成为帖子的嵌入对象。但是,当涉及到用户 - 这变得棘手,因为用户本身是一个实体,而不是与Post结合。现在,如果我需要列出具有用户全名和网页上的配置文件链接的帖子,我需要列出关于帖子作者的帖子和信息(至少name和id)。
我在这里看到2个可能的解决方案:
- 德规范,每个岗位条目包含了作者的ID和全名(以及任何其他用户属性列表的帖子的时候我可能需要)的方式中的数据。这样我会查询数据非常简单,但是当用户更新他/她的配置文件时,我需要用户更新所有帖子。但是,我还需要将用户属性存储在评论对象中,这意味着更新用户配置文件本质上要求我更新用户至少有一条评论的所有帖子,除非我想将评论存储在单独的集合中。
- 只在发布对象中存储用户标识并运行2个查询:一个获取帖子列表,另一个获取用户列表,其中用户标识位于帖子作者列表中。这需要在我的应用程序代码中进行2次查询和额外处理才能将用户映射到帖子。
我敢肯定,我不是第一个面对这个问题,但不幸的是,迄今为止,我还没有找到关于此主题的任何最佳实践。意见?
你使用了哪种方法模式? 解决方案1?或解决方案2? – koeder 2011-02-10 22:56:01
在TTT的回答中有很好的描述 - 取决于你的数据需要什么,你需要选择。我在我的应用程序中实现了两种方法。 – 2011-02-11 07:55:55
只是好奇,你喜欢mongodb吗?你的经历如何使用mongo? – koeder 2011-02-12 08:29:10