MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)
1 什么是NoSQL
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
2 关系型数据库 PK 非关系型数据库
关系型数据库 | NoSQL数据库 |
---|---|
高度组织化结构化数据 | 代表着不仅仅是SQL |
结构化查询语言(SQL) | 没有声明性查询语言 |
数据和关系都存储在单独的表中 | 没有预定义的模式 |
数据操作语言,数据定义语言 | 键-值对存储,列存储,文档存储,图形数据库 |
严格的一致性 | 最终一致性,而非ACID属性 |
基础事务 | 非结构化和不可预知的数据 |
CAP定理 | |
高性能,高可用性和可伸缩性 |
3 NoSQL数据库分类
类型 | 典型代表 | 特点 |
---|---|---|
列存储 | Hbase Cassandra Hypertable |
顾名思义,是按照列存储数据的。最大的特点是方便存储结构化和半结构化的数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势 |
文档存储 | MongoDB CounchDB |
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。 |
Key-value存储 | Tokyo Cabinet/Tyrant Berkelery DB Memcache Redis |
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |