0

我来这里是为了获得一些关于在我的应用程序中构建数据模型 (mongodb) 的最佳方式的建议。

假设我将拥有这些实体:

用户:具有所有常用属性的用户,我需要每个用户都有一个关注者和关注者列表。每个用户还将有一个他觉得有趣的“帖子”列表。

帖子:帖子将包含内容、创建日期、作者(用户)、喜欢帖子的用户列表(我希望能够从帖子中检索用户信息)、评论列表(评论)

评论:评论将有作者(用户)、内容,并且必须链接到帖子。

我认为这个应用程序可以处理大量内容和用户,这就是我真正关心这个数据模型的原因,我希望能够在可维护性和性能方面以最佳方式构建它。

我真的无法自行决定在哪种情况下我需要使用嵌入文档功能或重现类似关系的数据模型。

您将如何构建此数据模型?

4

1 回答 1

1

我们正在将我们的帖子从 MySQL 迁移到 MongoDB,所以我考虑了这些相同的事情。

我们决定将用户和帖子保留在单独的集合中,并仅嵌入我们对每种方式感兴趣的属性。例如,在一篇文章中,我们有一个喜欢该文章的用户数组,但数组中的每个元素只有用户的姓名和用户名。在显示帖子时,我们可以显示喜欢该帖子的用户的名称列表,并使用用户名生成指向每个用户的链接。

需要考虑的事情是,如果用户更改了他们的姓名或用户名,那么您需要更新他们创建或喜欢的每个帖子。我们不允许更改用户名,并决定在我们的案例中不需要更新名称。

这种方法在性能方面的问题是 MongoDB 自动添加到文档以允许它们增长的填充,以及如果文档增长超过分配给它的这个空间,则移动文档的开销。我们的系统在阅读方面比对提要帖子的写入要重得多,所以这些都是我们乐于处理的事情。

在 MongoDB 中设计架构的正确方法最终取决于您访问数据的方式以及您的特定用例。我们也才刚刚开始,但这种方法现在对我们有意义。

于 2013-10-10T09:11:52.670 回答