Realm 数据模型设计
有效的数据模型支持您的应用程序需求。 文档结构的关键考量是决定是嵌入还是使用引用。
嵌入式数据模型
借助 MongoDB,您可将相关数据嵌入到单个结构或文档中。这些模式通常被称为“非规范化”模型,且可利用 MongoDB 的丰富文档。以下方的图表为例:
嵌入式数据模型允许应用程序将相关信息存储在同一数据库记录中。因此,应用程序完成常见操作所需要进行的查询和更新可能更少。
一般来说,在以下情况下使用嵌入式Realm 数据模型:
实体之间存在“包含”关系。 请参阅使用嵌入式文档建立一对一关系模型。
实体之间存在一对多关系。 在这些关系中,“多个”文档或子文档始终与“一个”文档或父文档一起出现,或者在“一个”文档或父文档的上下文中查看。 请参阅使用嵌入式文档建立一对多关系模型。
一般来说,嵌入为读取操作提供了更好的性能,以及在单个数据库操作中请求和检索相关数据的能力。嵌入式数据模型支持通过单次原子写入操作更新相关数据。
要访问嵌入式文档中的数据,请使用点表示法“进入”嵌入式文档。有关访问数组和嵌入式文档中数据的更多示例,请参阅查询数组中的数据和查询嵌入式文档中的数据。
嵌入式Realm 数据模型和文档大小限制
MongoDB 中的文档必须小于最大 BSON 文档大小。
对于批量二进制数据,请考虑使用 GridFS。
规范化Realm 数据模型
规范化Realm 数据模型使用文档之间的引用来描述关系。
一般来说,使用规范化的 Realm 数据模型:
当内嵌会导致数据重复,但无法提供足够的读取性能优势来抵消重复的不利影响时。
来表示更复杂的多对多关系。
对大型分层数据集进行建模。
为了连接集合,MongoDB 提供了聚合阶段:
$lookup
(从 MongoDB 3.2 开始提供)$graphLookup
(从 MongoDB 3.4 开始可用)
MongoDB 还提供对跨集合连接数据的引用。
有关规范化数据模型的示例,请参阅使用文档引用建立一对多关系模型。
有关各种树模型的示例,请参阅对树结构进行建模。
深入阅读
有关使用 MongoDB 进行数据建模的更多信息,请下载 MongoDB 应用程序现代化指南》。
下载内容包括以下资源:
介绍使用 MongoDB 进行数据建模的方法
白皮书介绍了从 RDBMS 数据模型迁移到 MongoDB 的最佳实践和注意事项
引用 MongoDB 模式及其 RDBMS 等效模式
应用程序现代化记分卡