新知一下
海量新知
6 3 0 4 2 6 0

MongoDB数据模型设计

MongoDB中文社区 | MongoDB爱好者交流平台 2020/10/21 17:45

新知达人, MongoDB数据模型设计

MongoDB Manual (Version 4.2)> Data Models > Data Modeling Concepts > Data Model Design

有效的数据模型支持您的应用程序需求。文档结构的关键 考虑 因素是嵌入或使用 引用 本次我们将从以下两方面来了解MongoDB数据模型设计。

  • 嵌入式数据模型

  • 规范化数据模型

嵌入式数据模型

使用MongoDB,您可以将相关数据嵌入到单个结构或文档中。这些模式通常被称为“非规范化”模型,并利用MongoDB的丰富文档。参考下图:

新知达人, MongoDB数据模型设计

嵌入式数据模型允许应用程序在同一个数据库记录中存储相关信息。因此,应用程序可能需要发出更少的查询和更新来完成常见操作。

通常,在以下情况下使用嵌入式数据模型:

  • 实体之间存在“包含”关系。见与嵌入文档建立一对一关系模型。

  • 实体之间有一对多的关系。在这些关系中,“多个”或子文档始终与“一个”或父文档一起出现或在其上下文中查看。见与嵌入文档建立一对多关系模型。

一般来说,嵌入为读取操作提供了更好的性能,并且能够在单个数据库操作中请求和检索相关数据。嵌入式数据模型使得在单个原子写入操作中更新相关数据成为可能。

要访问嵌入文档中的数据,请使用点符号 “访问”嵌入文档。有关访问数组和嵌入文档中的数据的更多示例,请参见查询数组中的数据和 查询嵌入文档中的数据。

嵌入式数据模型和文档大小限制

MongoDB中的文档必须小于

BSON文档的最大大小

对于大容量二进制数据,请考虑GridFS。

规范化数据模型

规范化数据模型使用文档之间的 引用来描述关系。

新知达人, MongoDB数据模型设计

通常,使用规范化数据模型:

  • 当嵌入将导致重复数据,但不会提供足够的读取性能优势,超过重复的影响。

  • 表示更复杂的多对多关系。

  • 为大型分层数据集建模。

要加入集合,MongoDB提供聚合阶段:

  • $lookup

    (从MongoDB 3.2开始提供)

  • $graphLookup

    (从MongoDB 3.4开始提供)

MongoDB还提供了跨集合联接数据的引用。

对于规范化数据模型的示例, 见 使用文档引用建立一对多关系模型。

各种树模型的示例, 见 模型树结构。

原文链接:

https://docs.mongodb.com/manual/core/data-model-design/

译者:张鹏 Mo ngoDB中文社区翻译小组成员

更多“MongoDB”相关内容

更多“MongoDB”相关内容

新知精选

更多新知精选