数据模型设计

在本页面

有效的数据模型可满足您的应用程序需求。文档结构的关键考虑因素是决定embed还是use references

嵌入式数据模型

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

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

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

通常,嵌入可为读取操作提供更好的性能,以及在单个数据库操作中请求和检索相关数据的能力。嵌入式数据模型使在单个原子写入操作中更新相关数据成为可能。

但是,将相关数据嵌入文档中可能会导致文档在创建后增长的情况。使用 MMAPv1 存储引擎,文档的增长会影响写入性能并导致数据碎片。

在 3.0.0 版中,MongoDB 使用2 大小分配的幂作为 MMAPv1 的默认分配策略,以解决文档增长的问题,从而最大程度地减少了数据碎片的可能性。有关详情,请参见2 大小分配的幂。此外,MongoDB 中的文档必须小于BSON 文档的最大大小。对于批量二进制数据,请考虑GridFS

要与嵌入式文档进行交互,请使用dot notation“进入”嵌入式文档。有关访问数组和嵌入式文档中数据的更多示例,请参见查询数组中的数据查询嵌入文档中的数据

标准化数据模型

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

通常,使用标准化数据模型:

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

MongoDB 还提供了引用以跨集合连接数据。

有关规范化数据模型的示例,请参见具有文档引用的一对多关系模型

有关各种树模型的示例,请参见模型树结构

首页