01-NoSQL简介

Catalogue
  1. 1. 什么是NoSQL?
  2. 2. 为什么使用NoSQL ?
  3. 3. NoSQL 数据库分类
  4. 4. RDBMS vs NoSQL
  5. 5. NoSQL的优点/缺点
  6. 6. 常见问题
  7. 7. 参考资料

什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。

NoSQL 数据库分类

类型 部分代表 特点
列存储 Hbase、Cassandra、Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储 MongoDB、CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储 MemcacheDB、Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储 Neo4J、FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储 db4o、Versant 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库 Berkeley DB XML、BaseX 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

RDBMS vs NoSQL

RDBMS 

  • 高度组织化结构化数据 
  • 结构化查询语言(SQL) (SQL) 
  • 数据和关系都存储在单独的表中。 
  • 数据操纵语言,数据定义语言 
  • 严格的一致性
  • 基础事务

NoSQL 

  • 代表着不仅仅是SQL
  • 没有声明性查询语言
  • 没有预定义的模式,键 - 值对存储,列存储,文档存储,图形数据库
  • 最终一致性,而非ACID属性
  • 非结构化和不可预知的数据
  • CAP定理 
  • 高性能,高可用性和可伸缩性

NoSQL的优点/缺点

优点:

  • - 高可扩展性
  • - 分布式计算
  • - 低成本
  • - 架构的灵活性,半结构化数据
  • - 没有复杂的关系

缺点:

  • - 没有标准化
  • - 有限的查询功能(到目前为止)
  • - 最终一致是不直观的程序

常见问题

  1. Mongodb相对hbase、MySQL来说,有哪些优势?

这里就简单说一下题主说的几个数据库中,mongodb优势的地方

  • vs Hbase:

hbase是基于row key存储宽列的一款nosql,乍一看结构类似mongodb的_id主键和可变长的列数量。具体的原理和区别这里不展开。

mongodb的优势在于轻量化部署非常简单,不用像hbase那样搭一整套hadoop集群,即开即用。hbase更适合离线的海量数据分析

  • vs MySQL/PostgreSQL

这两款都是关系型数据库,所以放在一起比较。

MongoDB的优势主要有3个:

  1. 结构灵活,表结构更改比较自由,不用每次alter的时候付出代价,适合业务快速迭代,而且json原生和大多数的语言有天然的契合。还支持数组,嵌套文档等数据类型
  2. 自带高可用,自动主从切换(副本集)
  3. 自带水平分片(分片),内置了路由,配置管理。应用只要连接路由,对应用来说是透明的。

参考资料