NoSQL数据模型设计和关系型数据库模型设计有很大的不同,在浏览MongDB官方文档时发现有不少篇幅介绍数据模型设计,特翻译并整理成此系列供参考学习。本系列内容主要来自MongoDB Document - Date Models部分,其设计思想和方式不仅适用于MongoDB,也可应用到所有的NoSQL数据库上。
NoSQL数据模型
NoSQL主要有两种数据模型
嵌入数据模型
MongoDB支持嵌套文档结构,这允许将相关数据都放入一个文档中保存。这也被称为反范式设计。
使用场景
- 1对1关系数据合并保存在一起保存。
- 1对多关系数据,多方数据以数组形式保存在1方文档或者父文档中。
一般,嵌套数据模型具有更好的读性能,并可以在一次读取中获得全部数据。同时能够保证写操作原子性。但要注意单个文档16MB大小限制。
范化数据模型(引用模型)
范化数据模型符合关系型数据设计的范式要求,文档中保存其它文档的引用。
使用场景
- 嵌入数据模型导致的数据重复影响超过其带来的读性能提升
- 针对复杂的多对多关系数据
- 针对大型层次化数据集
网友评论