我有一个像应用程序一样的博客文章。用户和项目存储在两个不同的集合中,即多对多。用户可能有2-10个项目。一个项目可能有5-100个用户,通常大约10个.Post是另一个具有以下对象的集合:
{
"project_id": 123,
"user_id": 456,
"text": "some text",
"comments": [{Comment object}]
}
目前我使用标准化方法。我启动一次性查询,以便在应用程序首次加载时使用项目用户名检索所有当前用户的项目名称。然后将它们存储在一个全局变量中,以便它可以在我的应用程序中的任何位置访问。这种方法的唯一缺点是初始加载时间会稍长,具体取决于您拥有的项目数量以及项目中的用户数量。这并不是什么大不了的事。
然而,许多文章都建议使用非规范化。我知道利弊。由于project_name和user_name存在于太多字段和不同集合中。如果已修改项目名称或用户名,则传播更改可能是一项长期运行的任务。也就是说,这不会经常发生。
只想知道我目前的方法是否有意义。或者,就MongoDB而言,非规范化也是一种很好的做法。请讨论并提出建议。感谢。