数据模型设计

在本页

有效的数据模型支持您的应用程序需求。文档结构的关键考虑因素是嵌入使用引用的决定。

嵌入式数据模型

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

Data model with embedded fields that contain all related information.

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

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

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

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

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

MongoDB中的文档必须小于BSON文档的最大大小

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

规范化数据模型

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

Data model using references to link documents. Both the ``contact`` document and the ``access`` document contain a reference to the ``user`` document.

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

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

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

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

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

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

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

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

进一步阅读

有关MongoDB数据建模的更多信息, 请下载MongoDB应用程序现代化指南

下载包括以下资源:

  • MongoDB的数据建模方法

  • 白皮书涵盖了从 RDBMS数据模型迁移到MongoDB的最佳实践和考虑事项

  • 引用MongoDB模式及其等效关系数据库

  • 应用程序现代化记分卡

原文链接:https://docs.mongodb.com/manual/core/data-model-design/

译者:张鹏

最后更新于