一分钟玩转 MongoDB
MongoDB
是什么?
MongoDB
是个可扩展、高性能、开源、面向文档(document-oriented)的,由c 实现的,介于关系数据库和非关系数据库之间,基于分布式文件系统存储的开源数据库产品。目前最新版本: 4.2
1、MongoDB名字由来
摘自英文俚语 humongous
,意为“巨大”,可能也是 MongoDB
设计之初的理念,为处理大数据而生。
2、主要特点
- 面向文档存储的数据库
- 支持任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")。
- 相对传统数据库有更强的扩展性。
- 分布式
- 查询表达式丰富。查询指令使用
JSON
形式的标记 - 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段
Mongodb
中的Map/reduce
主要是用来对数据进行批量处理和聚合操作。GridFS
是MongoDB
中的一个内置功能,可以用于存放大量小文件。
3、专业术语表
3.1 概念/术语
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table | joins | 表连接,MongoDB不支持 |
primary | key | primary key 主键,MongoDB自动将_id字段设置为主键 |
3.2 RDBMS/MongoDB术语
RDBMS | MongodbDB |
---|---|
数据库 | 数据库 |
表格 | 集合 |
行 | 文档 |
列 | 字段 |
表联合 | 嵌入文档 |
主键 | 主键 (MongoDB 提供了 key 为 _id ) |
4、RDBMS vs NoSQL
4.1 RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
4.2 NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非
ACID
属性 - 非结构化和不可预知的数据
CAP定理
- 高性能,高可用性和可伸缩性
5、 NoSQL的优点/缺点
5.1 优点
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
5.2 缺点
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
6、与MySQL/pgSQL对比
6.1 底层存储引擎不同
- InnoDB
- mongoDB
6.2 应用场景不同
- 关系型数据库
- 这些数据通常需要做结构化查询,比如join,这时候,关系型数据库就要胜出一筹
- 这些数据的规模、增长的速度通常是可以预期的
- 事务性、一致性
- 非关系型数据库
- 这些数据通常用于模糊处理,如全文搜索、机器学习
- 这些数据是海量的,而且增长的速度是难以预期的,
- 根据数据的特点,NoSQL数据库通常具有无限(至少接近)伸缩性
- 按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差
- MongoDB应用场景
- 表结构不明确且数据不断变大
MongoDB
是非结构化文档数据库,扩展字段很容易且不会影响原有数据。内容管理或者博客平台等,例如圈子系统,存储用户评论之类的。 - 更高的写入负载
MongoDB
侧重高数据写入的性能,而非事务安全,适合业务系统中有大量“低价值”数据的场景。本身存的就是json格式数据。例如做日志系统。 - 数据量很大或者将来会变得很大
Mysql
单表数据量达到5-10G时会出现明细的性能降级,需要做数据的水平和垂直拆分、库的拆分完成扩展,MongoDB
内建了sharding、很多数据分片的特性,容易水平扩展,比较好的适应大数据量增长的需求。 - 高可用性 自带高可用,自动主从切换(副本集) 按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差
- 表结构不明确且数据不断变大
●ss的篡权
●AWK 专家必备的12个技巧
●远程工作日报!这样的才是老板想要的
●又一起删库跑路事件:微盟系统遭遇运维破坏
●微盟?出行巨头携程2015年的全站瘫痪还有多少人记得?
●价值100万的黄金人脉管理课程
●疫情之下,带给IT人哪些思考?
●曾经,我以为裁员降薪离我们很远
●提问的艺术
●IT人如何快乐的胖瘦自如