3.2 逻辑结构与数据模型 🎉
...大约 2 分钟
3.2 逻辑结构与数据模型 🎉
MongoDB逻辑结构 💎
MongoDB 与 MySQL 中的架构相差不多,底层都使用了可插拔的存储引擎以满足用户的不同需要。用户可以根据程序的数据特征选择不同的存储引擎,在最新版本的 MongoDB 中使用了 WiredTiger 作为默认的存储引擎,WiredTiger 提供了不同粒度的并发控制和压缩机制,能够为不同种类的应用提供了最好的性能和存储率。
在存储引擎上层的就是 MongoDB 的数据模型和查询语言了,由于 MongoDB 对数据的存储与 RDBMS(关系型数据库)有较大的差异,所以它创建了一套不同的数据模型和查询语言。
MongoDB数据模型 💎
与SQL数据库不同,在SQL数据库中,在插入数据之前必须确定和声明表的架构,默认情况下,MongoDB的集合不要求其文档具有相同的架构。
结构灵活
单个集合中的文档不需要具有相同的字段集合,并且集合中的文档之间的字段数据类型可能不同;
可灵活更改集合中文档的结构,如添加新字段、删除现有字段或将字段值更改为新类型,将文档更新为新结构。
文档结构
内嵌
- 内嵌的方式指的是把相关联的数据保存在同一个文档结构之中。MongoDB的文档结构允许一个字段或者一个数组内的值作为一个嵌套的文档。
引用
- 引用方式通过存储数据引用信息来实现两个不同文档之间的关联,应用程序可以通过解析这些数据引用来访问相关数据。
如何选择数据模型
选择内嵌:
数据对象之间有包含关系 ,一般是数据对象之间有一对多或者一对一的关系 。
需要经常一起读取的数据。
有 map-reduce/aggregation 需求的数据放在一起,这些操作都只能操作单个 collection。
选择引用:
当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于覆盖数据重复的弊端 。
需要表达比较复杂的多对多关系的时候 。
大型层次结果数据集 嵌套不要太深。
Powered by Waline v2.15.7