每日一句
I will not be afflicted at men’s not knowing me; I will be afflicted that I do not know men.
不患人之不己知,患不知人也。
概述
NoSQL(Not Only SQL),意即 ”不仅仅是SQL“。
在现代的计算系统中每天网络上都会产生庞大的数据量。
这些数据有很大一部分是由**关系型数据库管理系统(RDMBS)**来处理。1970年E.F.Codd’s 提出的关系模型的论文"A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。
通过应用实战证明,关系模型是非常适合于客户服务器编程,远远超出预期的收益,今天它是结构化数据存储在网络和商务应用的主导技术。
NoSQL是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于关系型数据库的应用,这一概念无疑是一种全新的思维注入。
为什么使用NoSQL ?
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。
RDBMS vs NoSQL
RDBMS
-
高度组织化结构化数据
-
结构化查询语言(SQL) (SQL)
-
数据和关系都存储在单独的表中。
-
数据操纵语言,数据定义语言
-
严格的一致性
-
基础事务
NoSQL
-
代表着不仅仅是SQL
-
没有声明性查询语言
-
没有预定义的模式
-键 - 值对存储,列存储,文档存储,图形数据库
-
最终一致性,而非ACID属性
-
非结构化和不可预知的数据
-
CAP定理
-
高性能,高可用性和可伸缩性
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。 |
美文佳句
似乎只是一夜风、一场雨,便暑去凉至,忽然秋天。沐浴在通透明丽的秋阳下,有几件渴望已久的事想要去做。
秋来了,我并无什么惊天动地的大事可为,却有许多细碎平淡的小事想做。想做就去做,秋天短暂,不等人的。做到了,那便是人生乐事,幸福着呢!