Nosql(Nosql = Not Only sql ),意即"不仅仅是sql"。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。Nosql 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。Nosql的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
什么是Nosql?
Nosql,指的是非关系型的数据库。Nosql有时也称作Not Only sql的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
Nosql用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
为什么使用Nosql?
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那sql数据库已经不适合这些应用了,Nosql数据库的发展也却能很好的处理这些大的数据。
RDBMS vs Nosql
RDBMS:
Nosql:
Nosql的优点/缺点
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点:
类型
|
部分代表 | 特点 |
列存储 |
Hbase
Cassandra
Hypertable
|
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 |
MongoDB
CouchDB
|
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 |
Tokyo Cabinet / Tyrant
Berkeley DB
MemcacheDB
Redis
|
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
图存储 |
Neo4J
FlockDB
|
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 |
db4o
Versant
|
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 |
Berkeley DB XML
BaseX
|
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |