跳至主要內容

3.2 逻辑结构与数据模型 🎉

刘春龙...大约 2 分钟数据库mongodb

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