第1章 NoSQL数据库简介
1.1 NoSQL数据库回顾
1.1.1 什么是NoSQL
- NOSQL=Not Only SQL
- 1998年Carlo Strozzi首次提出(不提供SQL功能的关系型数据库)
- 2009年Eric Evans再次提出NoSQL概念
- NoSQL、Relational Database相铺相成
1.1.2 NoSQL数据库四大家族
- 列存储:Hbase
- 键值(Key-Value)存储:Redis
- 图像存储:Neo4J
- 文档存储:MongoDB
1.1.3 NoSQL的优势
- 高可扩展性,水平扩展灵活
- 分布式计算
- 没有复杂的关系,但可以进行复杂查询
- 低成本
- 架构灵活
- 性能高:结构化数据
- 安全性比较强
- 存储方式灵活:json方式存储,更便于我们的应用使用读取,没有复杂的结构化。
第2章 MongoDB简介
2.1 MongoDB优缺点
2.2 MongoDB特性
MongoDB既有关系型数据库的强大查询功能、强一致性和二级索引,又有非关系型数据库的灵活模式、高扩展性和高性能的特性,所以MongoDB可以说是最接近关系型数据库的非关系型数据库。
2.3 MongoDB的设计理念
2.3.1 关系与非关系模型
关系型数据库将存储数据原子化,需要哪些信息就提取哪些信息,再“组装”起来反馈给用户;非关系型数据库将数据整体存储起来,使用的时候直接调用数据,因此性能相对要高。
2.4 MongoDB与RDBMS的区别
MongoDB与RDBMS最大的区别在于:没有固定的行列组织数据结构
2.4.1 MongoDB数据存储格式
2.4.1.1 文档型(JSON)
- MongoDB 使用JSON(JavaScriptObjectNotation)文档存储记录
- JSON数据库语句可以容易被解析
- Web 应用大量使用
- NAME-VALUE 配对,例如:{product: “car”, brand: “Benz”, color: “blue” }
2.4.1.2 BSON
- 二进制的JSON,JSON文档的二进制编码存储格式
- BSON有JSON没有的Date和BinData
- MongoDB中document以BSON形式存放:> db.meeting.insert({meeting:"SHOUG June",Date:"2015-06-15"});
2.4.1.3 灵活的数据格式
文档里嵌入文档嵌入文档...... | 一个KEY对应一个数组 |
{
_id: ObjectID("1"), username: “Silence”, regDate: “10-10-2015”, scores: { math: "80", english: "200" } }
|
{
_id: ObjectID("1"), username: “Silence”, regDate: “10-10-2015”, scores: { math: "80", english: "200" } Attr:[“a1”,”a2”] } |
2.5 MongoDB的优势
2.5.1 开源
- MongoDB是开源产品
- On GitHub
- Licensed under the AGPL
- 起源&赞助by MongoDB公司
- 提供商业版licenses 许可
2.5.2 水平扩展
随着应用的扩大,节点的需求也在增大,在MongoDB中不需要关机即可将新节点添加到现有的MongoDB集群中。
2.5.3 支持多种存储引擎
2.5.3.1 MongoDB存储引擎
3.0版本以前默认为MMAPv1存储引擎,3.0版本以后开始支持WiredTiger存储引擎(弱事务功能,类似关系型数据库的功能),且3.0版本以后MongoDB在架构和安全性都得到了巨大提升,所以在3.0版本后得到了广泛使用。
2.5.3.2 各种存储引擎的比较
2.5.4 具备丰富的功能
- JSON 文档模型动态的数据模式
- 二级索引强大查询功能
- 自动分片水平扩展
- 自动复制高可用
- 文本搜索
- 企业级安全
- 聚合框架MapReduce
- 大文件存储GridFS
2.6 MongoDB体系结构
2.6.1 跨平台
Linux、Unix、Mac、Windows等,且整体架构相同:
- MongoDB Server:实例、数据库及其对应关系
- 数据逻辑结构:文档、集合、数据库
- 数据存储:元数据、实际数据
2.6.2 数据逻辑结构层次关系
数据库(database)包含了多个集合(collection),集合中会有多个文档(document)
- Mongodb和MySQL数据库的对比:
mongodb | MySQL |
数据库 | 数据库 |
集合 | 表 |
文档(json) | 行、列信息 |
2.6.3 MongoDB与RDBMS数据结构逻辑对比
2.7 MongoDB适用场景
- 网站数据,互联网应用较多
- 缓存
- 大尺寸、低价值的数据存储
- 高伸缩性的场景:
- 业务结构经常发生变化的场景(表结构经常变或需求总在变的情况)
- 架构变化频繁的场景(数据或业务量膨胀式增长的情况)
- 对与json应用平滑的业务,比如说 python、java等
2.7.1 互联网典型应用
2.7.2 MongoDB 商业价值
- 利用数据和技术以最大化竞争优势
- 减少关键任务的部署风险
- 更快的价值实现
- 更低的总体拥有成本
2.8 MongoDB软件获取与帮助
下载地址:https://www.mongodb.org/dl/linux/x86_64

我的微信
如果有技术上的问题可以扫一扫我的微信