简介
- 属于NoSQL(NoSQL = Not Only SQL ) 数据库的一种
- 是一个基于分布式文件存储的数据库。Elasticsearch 也是面向文档型 NoSQL 数据库
- 由 C++ 编写
- 是介于关系数据库和非关系数据库之间的产品,但是非关系型数据库中功能最丰富,最像关系数据库的
- 支持多种编程语言:如 Ruby,Python,Java,C++,PHP,C# 等
- 监控工具
- Munin:网络和系统监控工具,它作为一个插件应用于MongoDB中
- Gangila:是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中
- GUI
- Fang of Mongo:Web版, 由Django和jQuery所构成
- Database Master:Windows的mongodb管理工具
- MongoHub:适用于OSX的应用程序
- RockMongo:最好的PHP语言的MongoDB管理工具,轻量级, 支持多国语言
MongoDB 概念
MongoDB 和 Elasticsearch、关系型数据库概念对比如下:
关系数据库(RDB) ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列
Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段
MongoDB ⇒ 数据库 ⇒ 集合 ⇒ 文档 ⇒ 域
MongoDB 数据类型
类型 | 说明 |
---|---|
String | 字符串类型。MongoDB中UTF-8的字符串才合法 |
Integer | 整型。根据机器,分为32位或64位 |
Boolean | 布尔型 |
Double | 双精度浮点型 |
Min/Max keys | 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比 |
Arrays | 数组 |
Timestamp | 时间戳 |
Object | 用于内嵌文档 |
Null | 用于创建空值 |
Date | 存储日期时间 |
Binary Data | 存储二进制数据 |
Code | 代码类型,用于存储JS代码 |
Regular expression | 正则式类型,用于存储正则式 |
... | ... |
附录:RDBMS与NoSQL
RDBMS(关系型数据库管理系统)
- 高度结构化数据
- 使用SQL(结构化查询语言)
- 遵循ACID规则(正是事务的四特性):
- A (Atomicity):原子性,即事务中的所有操作要么全部做完,要么都不做。只要有一个操作失败,整个事务就失败,就需要回滚
- C(Consistency):一致性,即数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。如有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
- I(Isolation):独立性,即并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响
- D(Durability):持久性,指一旦事务提交后,它所做的修改将会永久保存在数据库上
NoSQL (非关系型数据库)
- 常用于超大规模数据存储(如日志存储)。
- 没有限制查询语言,不仅仅是SQL
- 没有预定义的模式,可以基于键值对存储、列存储、文档存储、图存储等
- 列存储:按列存储数据,最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。如 HBase
- 文档存储:用类似 json 的格式存储,存储的内容是文档型的。如 Elasticsearch、MongoDB
- key-value存储:可以通过key快速查询到其value。如 Redis
- 对象存储:通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。如 Swift
- 图存储:图形关系的最佳存储。如 Neo4J
- 遵循最终一致性,而不是ACID原则
- 非结构化
- 高性能、高可用、高扩展
- BASE原则:NoSQL对可用性和一致性的弱要求原则
- Basically Availble:基本可用
- Soft-state :软状态/柔性事务。 "Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的
- Eventual Consistency:最终一致性 最终一致性, 也是是 ACID 的最终目的。
- CAP定理:一个分布式系统不可能同时很好的满足一致性(C),可用性(A)和分区容错性(Partition tolerance),最多只能同时较好的满足两个
- C:所有节点在同一时间具有相同的数据
- A:保证每个请求不管成功或者失败都有响应
- P:系统中任意信息的丢失或失败不会影响系统的继续运作
根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:
- CA集群:单点集群,通常在可扩展性上不太强大
- CP集群:通常性能不是很高
- AP集群:通常可能对一致性要求低一些
参考文献
1.菜鸟教程 mongodb:http://www.runoob.com/mongodb/mongodb-linux-install.html