这里写目录标题
1.MongoDB概述
1.1 什么是MongoDB
MongoDB是一个文档数据库,类似 JSON 的文档内存储数据。
1.2 开发商
Mongo、MongoDB 和 MongoDB 的树叶标识均是 MongoDB, Inc.的注册商标。
1.3 是否免费使用
MongoDB提供数据库的社区版和企业版:
MongoDB社区版是MongoDB的开源和免费版本。
MongoDB企业版作为MongoDB高级企业版订阅的一部分提供,并包括对MongoDB部署的全面支持。
1.4 文档数据库
文档数据库区别于传统的其它数据库,它是用来管理文档。在传统的数据库中,信息被分割成离散的数据段,文档是处理信息的基本单位。一文档可以很长、很复杂、可以无结构,与字处理文档类似。一个文档相当于关系数据库中的一条记录。
MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。
1.5 主要特点
- 读写效率高-由于文档模型把相关数据集中在一块,在普通机械盘上读数据的时候不用花太多时间去定位磁头,因此在IO性能上有先天独厚的优势;
- 可扩展能力强-关系型数据库很难做分布式的原因就是多节点海量数据关联有巨大的性能问题。如果不考虑关联,数据分区分库,水平扩展就比较简单;
- 动态模式-文档模型支持可变的数据模式,不要求每个文档都具有完全相同的结构。对很多异构数据场景支持非常好;
- 模型自然-文档模型最接近于我们熟悉的对象模型。从内存到存储,无需经过ORM的双向转换,性能上和理解上都很自然易懂。
2.MongoDB版本
2.1 版本管理
MongoDB的版本管理按照X.Y.Z的形式,其中X.Y是发行版本序列号或者开发版本序列号,Z是版本号或者修订号。
- 如果Y是偶数,则X.Y为发行版本序号;例如,4.0是一个发行版本序列号,4.2也是一个发行版本序列号。发行版本通常比较稳定,可用于生产环境。
- 如果Y是奇数, 则X.Y为开发版本;例如,4.1是一个开发版本序列号,4.3也是一个开发版本序列号。开发版本应该仅用于测试,不能用于生产环境。
例如,MongoDB版本号4.0.12,4.0是发行版本序列号,.12是此发行版本的修订号。
2.2 历史版本
2008 年 发布0.x版本
2010年发布1.x版本:支持分片和副本集
2012年发布2.x版本:查询引擎、安全等丰富数据库功能
2014年发布3.x版本:WiredTiger 作为默认存储引擎,集合联合查询
2018年发布4.x版本:支持事务
3.MongoDB特点
3.1 高性能
-
对嵌入式数据模型的支持减少了数据库系统上的I / O操作。
-
索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。
3.2 高可用
MongoDB的复制工具(称为副本集)提供:
- 自动故障转移
- 数据冗余。
副本集是一组维护相同数据集合的 mongod实例,提供了冗余和提高了数据可用性。
3.3 高扩展
MongoDB提供水平可伸缩性作为其核心 功能的一部分:
- 分片将数据分布在一个集群的机器上。
- 从3.4开始,MongoDB支持基于分片键创建数据区域。在平衡群集中,MongoDB仅将区域覆盖的读写定向到区域内的那些分片。
3.4 丰富的查询语言
MongoDB支持丰富的查询语言以支持[读写操作(CRUD)以及数据聚合、文本搜索和地理空间查询。
4.MongoDB应用场景
- 物流场景
MongoDB存储用户订单数据。
- 社交场景
MongoDB存储朋友圈信息、地理位置信息数据。
- 游戏场景
MongoDB存储游戏中的人物信息、装备等数据。
- 物联场景
MongoDB存储智能设备的连接信息数据。
5.MongoDB技术选型
- 不需要事务和辅助的join查询
- 需求变化,数据模型无法确定,快速迭代开发
- 读写QPS在2000以上
- 需要TB以上级别的存储
- 需要大量的地理和文本查询
6.码农来洞见
MongoDB 不是芒果(mango),它在拉丁文中的原意是巨大的意思。mongo是一个高可用、分布式、灵活模式的文档数据库。MongoDB都是目前NoSQL,或者说非关系型的数据库中的领头羊。那么,mongo和传统关系数据库的最本质的区别在那里呢?我们说是它的文档模型。关系模型和文档模型的区别在哪里?是我们后续着重讨论的话题。