二十三 MongoDB
1 MongoDB介绍
MongoDB 是一款高性能的 NoSql 数据库,是基于文件存储的数据库,采用BSON 格式来存储数据。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、最像关系数据库的。(在高负载的情况下,通过添加更多的节点,可以保证服务器性能)
一个 MongDB 数据库是由多个集合(collection)构成的(相当于 mysql 中的表),每个集合中包含多个文档(document)(相当于 mysql 中的行),每个文档中包含多个字段(field)(相当于 mysql 中的列)
2 BSON 格式与 JSON 的区别与优势
BSON 是一种类 json 的一种二进制形式的存储格式,简称 Binary JSON,它和JSON 一样,支持内嵌的文档对象和数组对象,但是BSON 有 JSON 没有的一些数据类型,如 Date 和 Binary Data 类型。
BSON 可以做为网络数据交换的一种存储形式,是一种 schema-less 的存储形式。它的优点是灵活性高,但它的缺点是空间利用率不是很理想。
例如{key:value,key2:value2},其中 key 是字符串类型,后面的 value 值,它的类型一般是字串,double,Array,ISODate 等类型。
BSON 有三个特点:轻量性、可遍历性、高效性
3 MongoDB 数据模型的选择
一是内嵌:内嵌的方式指的是把相关联的数据保存在同一个文档结构之中。MongoDB 的文档结构允许一个字段或者一个数组内的值作为一个嵌套的文档。
①数据对象之间有包含关系 ,一般是数据对象之间有一对 多 或 者 一 对 一 的 关 系 。
②需 要 经 常 一 起 读 取 的 数 据 。
③有map-reduce/aggregation 需求的数据放在一起,这些操作都只能操作单个collection。
二是引用:引用方式通过存储数据引用信息来实现两个不同文档之间的关联,应用程序可以通过解析这些数据引用来访问相关数据。
①当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于覆盖数据重复的弊端 。
②需要表达比较复杂的多对多关系的时候 。
③大型层次结果数据集 嵌套不要太深。
4 MongoDB 存储引擎的优势
存储引擎是 MongoDB 的核心组件,负责管理数据如何存储在硬盘和内存上。MongoDB 支持的存储引擎有 MMAPv1,WiredTiger 和 InMemory。InM