小编Ale*_*inn的帖子

模拟MongoDB中的关系

作为最受欢迎的NoSQL解决方案之一,MongoDB具有此方法的大部分优势.但是我仍在努力解决的一个问题是如何反映NoSQL数据存储中的对象关系,特别是MongoDB.

例如,让我们考虑一个简单的数据模型:User,Post和Comment.我很清楚,评论本身没有任何价值,因此成为帖子的嵌入对象.但是当涉及到用户时 - 这变得棘手,因为用户本身就是一个实体,而不是Post.现在,如果我需要列出具有用户全名的帖子以及网页上个人资料的链接,我需要有一个帖子列表和帖子作者信息(至少名称和ID).

我在这里看到两种可能的解决方

  1. 以每个帖子条目包含其作者的ID和全名(以及列出帖子时可能需要的任何其他用户属性)的方式对数据进行去规范化.这样我就可以非常简单地查询数据,但是当用户更新他/她的个人资料时,我还需要更新用户的所有帖子.但是我还需要在注释对象中存储用户属性,这意味着更新用户配置文件本质上要求我更新用户至少有一条注释的所有帖子,除非我想将注释存储在单独的集合中.
  2. 仅在post对象中存储用户ID并运行2个查询:一个用于获取帖子列表,另一个用于获取用户ID在帖子作者列表中的用户列表.这需要在我的应用程序代码中进行2次查询和额外处理,以将用户映射到帖子.

我确信我不是第一个面临这个问题的人,但遗憾的是到目前为止我还没有找到关于这个主题的最佳实践.意见?

database architecture database-design mongodb nosql

22
推荐指数
1
解决办法
4068
查看次数

避免Django应用程序中的循环依赖

在处理基于Django的项目时,我总是试图遵循Django对可重用应用程序的方法 - 我试图将我的应用程序彼此分离,特别是试图避免交叉引用,但有时似乎不可能.

让我们考虑一个包含2个应用程序的简单示例:文章和用户.文章应用定义了文章模型,文章列表视图和单篇文章视图,用户应用定义了用户模型和用户配置文件视图.文章引用了作者字段中的用户,因此文章应用程序显然依赖于用户应用程序,这很好.

但是当谈到用户配置文件时,我想在该页面上显示用户创作的最新文章(可能是用户查看的最新文章),但这会让用户应用程序知道文章应用程序,这正是我想要避免的.

我显然可以尝试将所有这些引用推送到模板级别,但它仍然无法完全解决问题,同时有时可能在数据库查询方面效率非常低.

在这种情况下你们做了什么?

architecture django circular-dependency

3
推荐指数
1
解决办法
1362
查看次数