【问题标题】:Designing mongodb data model: embedding vs. referencing设计 mongodb 数据模型:嵌入与引用
【发布时间】:2019-05-30 11:23:22
【问题描述】:

我正在编写一个应用程序来收集跨多个社交网络帐户的用户统计信息。我有一个用户集合,我想存储每个用户的统计信息。

现在,我有两个选择:

  1. 创建一个存储用户统计文档的集合,并为每个用户文档添加一个引用对象,将其链接到统计集合中的相应文档。
  2. 在每个用户文档中嵌入一个统计文档。

除了查询性能(我不太关心):

  1. 这些方法的优缺点是什么?
  2. 如果我选择使用引用而不是在用户文档中嵌入信息,我应该考虑什么?

【问题讨论】:

  • 在我看来,如果实体之间有一对一或一对多的关系,嵌入是好的,如果你有多对多的关系,引用是好的。

标签: mongodb


【解决方案1】:

数据的形状由应用程序本身决定。

很有可能在处理用户数据时,您可能需要统计详细信息。

关于在文档中放入什么内容的决定很大程度上取决于应用程序如何使用数据。

作为用户文档一起使用的数据非常适合预先加入或嵌入。

这种方法的一个限制是文档的大小。最大应为 16 MB。

另一种方法是在多个集合之间拆分数据。

这种方法的一个限制是 MongoDB 中没有约束,因此也没有外键约束。

数据库不保证数据的一致性。作为一名程序员,您是否需要注意您的数据没有孤儿。

可以通过应用查找运算符来连接来自多个集合的数据。但是,集合是磁盘上的一个单独文件,因此在多个集合上查找意味着从多个文件中查找,也就是说,正如您可能猜到的那样,速度很慢。

一般来说,嵌入数据是更可取的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 2011-10-13
    • 2011-04-18
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2021-04-08
    相关资源
    最近更新 更多