MongoDB逻辑结构
MongoDB与MySQL中的架构差不多,底层都使用了可插拔的存储引擎以满足不同的用户需求,用户可以根据自己所需要的特性来选择不同存储引擎。在最新版本的MongoDB中使用了WiredTiger作为默认的存储引擎,WiredTiger提供了不同粒度的并发控制和压缩机制,能为不同的应用提供更好的性能和存储率。
MongoDB的数据模型
内嵌
内嵌的方式是指,一个文档嵌入到另外一个文档中,MongoDB中允许一个字段或者数组中的值为一个对象。
引用
通过引用的方式来存储对象之间的关联,类似与MySql中的外键,应用程序可以在解析的时候访问到这些关联起来的对象。
如何选择数据模型
选择内嵌
- 数据对象之间有包含关系,通常是一对多或者一对一的关系。
- 读取的时候需要一起读取
- 有map-reduce或者aggregation需求的时候,因为这些操作一次只能操作一个collection
选择引用
- 当内嵌的数据会造成大量的重复,并且读取的性能优势不足以掩盖数据重复的弊端
- 需要表达比较复杂的关联关系
- 有比较深层的嵌套的时候,内嵌不能满足需求