Ale*_*inn 22 database architecture database-design mongodb nosql
作为最受欢迎的NoSQL解决方案之一,MongoDB具有此方法的大部分优势.但是我仍在努力解决的一个问题是如何反映NoSQL数据存储中的对象关系,特别是MongoDB.
例如,让我们考虑一个简单的数据模型:User,Post和Comment.我很清楚,评论本身没有任何价值,因此成为帖子的嵌入对象.但是当涉及到用户时 - 这变得棘手,因为用户本身就是一个实体,而不是Post.现在,如果我需要列出具有用户全名的帖子以及网页上个人资料的链接,我需要有一个帖子列表和帖子作者信息(至少名称和ID).
我在这里看到两种可能的解决方
我确信我不是第一个面临这个问题的人,但遗憾的是到目前为止我还没有找到关于这个主题的最佳实践.意见?
TTT*_*TTT 14
两者都是有效的解决方案,解决方案1的优点是您可以显示这样的页面,只从数据库中检索一个文档.用户不会经常更新其个人资料,您可以在更改用户个人资料后更新所有帖子和嵌入式评论异步.您可以将用户ID上的帖子和嵌入式注释编入索引,以便更新速度快.在mongodb中更新是非常快的,因为mongodb执行就地更新并且您无法回滚或提交,因此mongodb不必记录更改.
但是,像stackoverflow这样的网站上的用户也有声誉,而且这个声誉的变化比他们的个人资料更多.
解决方案2需要每页检索更多文档,但是您可以使用$ in运算符和userid列表(post + userid的注释用户ID),因此您只需要两个"选择语句".