MongoDB Manual (Version 4.2)> Data Models > Data Modeling Concepts > Data Model Design
有效的数据模型支持您的应用程序需求。文档结构的关键考虑因素是嵌入或使用引用的决定。本次我们将从以下两方面来了解MongoDB数据模型设计。
嵌入式数据模型
规范化数据模型
嵌入式数据模型
使用MongoDB,您可以将相关数据嵌入到单个结构或文档中。这些模式通常被称为“非规范化”模型,并利用MongoDB的丰富文档。参考下图:
嵌入式数据模型允许应用程序在同一个数据库记录中存储相关信息。因此,应用程序可能需要发出更少的查询和更新来完成常见操作。
通常,在以下情况下使用嵌入式数据模型:
实体之间存在“包含”关系。见与嵌入文档建立一对一关系模型。
实体之间有一对多的关系。在这些关系中,“多个”或子文档始终与“一个”或父文档一起出现或在其上下文中查看。见与嵌入文档建立一对多关系模型。
一般来说,嵌入为读取操作提供了更好的性能,并且能够在单个数据库操作中请求和检索相关数据。嵌入式数据模型使得在单个原子写入操作中更新相关数据成为可能。
要访问嵌入文档中的数据,请使用点符号 “访问”嵌入文档。有关访问数组和嵌入文档中的数据的更多示例,请参见查询数组中的数据和 查询嵌入文档中的数据。
嵌入式数据模型和文档大小限制
MongoDB中的文档必须小于BSON文档的最大大小
。
对于大容量二进制数据,请考虑GridFS。
规范化数据模型
规范化数据模型使用文档之间的 引用来描述关系。
通常,使用规范化数据模型:
当嵌入将导致重复数据,但不会提供足够的读取性能优势,超过重复的影响。
表示更复杂的多对多关系。
为大型分层数据集建模。
要加入集合,MongoDB提供聚合阶段:
$lookup
(从MongoDB 3.2开始提供)$graphLookup
(从MongoDB 3.4开始提供)
MongoDB还提供了跨集合联接数据的引用。
对于规范化数据模型的示例, 见 使用文档引用建立一对多关系模型。
各种树模型的示例, 见 模型树结构。
原文链接:
https://docs.mongodb.com/manual/core/data-model-design/
译者:张鹏 MongoDB中文社区翻译小组成员
往期发布:
*查看更多翻译请移步至MongoDB中文社区网站(mongoing.com)查阅中文用户手册。
The mongo Shell
— mongo 命令行
— 配置 mongo shell
— 查看 mongo shell帮助文档
MongoDB CRUD操作
— MongoDB中的CRUD操作
—— MongoDB读隔离性,一致性与近因性
— 批量写操作
— 读关注
— 写关注
数据模型
— MongoDB数据建模介绍
事务
— 事务
— 事务操作
索引
— 2dsphere索引
— 哈希索引
— 索引属性
— 在集合上创建索引
— 度量索引使用情况
安全
— 安全检查列表
— 启用访问控制
— 身份验证
— 审计
—— 配置审计
—— 配置审计过滤器
—— 系统事件审计消息
— 网络和配置强化
— 安全参考
—— system.roles 集合
—— system.users 集合
—— 资源文档
—— 权限操作
—— 附录A:用于测试的 OpenSSl CA 证书
—— 附录B:用于测试的OpenSSL服务器证书
—— 附录C:用于测试的OpenSSL客户端证书
复制
— 副本集成员
— 副本集Oplog
— 副本集数据同步
— 副本集部署架构
分片
— 分片键
—— 在分片集群中拆分数据块chunks
— 哈希分片
— 范围分片
管理
— 产品说明
— 操作检查表
— 开发检查表
— 性能
— 配置和维护
— 备份方法
存储
—— WiredTiger存储引擎
—— 内存存储引擎
— 常见问答:MongoDB 存储
喜欢我们,
请分享、点赞、在看三连哦~