NoSQL简介

910 阅读3分钟

根本就没有什么NoSQL,或者人人都是NoSQL!

NoSQL是现在的一个流行词汇。在过去的数十年里,每当人们提到数据库,指的都是关系型数据库,而提到关系型数据库,就不得不提到那个男人——Edgar F. Codd以及他的结构化查询语句(SQL)。想用其他方式存储数据?疯了吧!任何其他方式都只是没有灵魂的文件。

但是,在过去的几年间,人们对此产生了怀疑。将数据以行与列的形式存储在表中真的是表现数据的唯一方式吗?经过不断的思考与编码,出现了一大批新的组织数据的理论,并且开始为此建立新的数据库管理系统。

这些数据库所应用的哲学思想或许有所不同,但是有一件事是相同的,那就是使用结构化查询语句已经不再合适。因此他们使用各自的查询语句替代了结构化查询语句。NoSQL应运而生,作为公然挑战传统关系型数据库模型的标签。

然而,各种NoSQL数据库之间也都各有差别,他们除了都不使用SQL以外,有些甚至找不到其它的共同点。NoSQL也有许多分类。

NoSQL数据库的分类

面向文档的数据库

例子:MongoDB,CouchDB

优势:处理异构数据,进行面向对象的敏捷开发。

它们的优势是它们不需要一致的数据结构。如果你的数据库布局不断变化,或者你处理的数据集虽然是一个整体但看起来还是很不一样,这些数据库就很有用。当你有许多表都包含有两列叫做“key”和“value”,那就值得考虑使用这种数据库。

图数据库

例子:Neo4j,GiraffeDB

优势:数据挖掘

虽然大部分的NoSQL数据库放弃管理数据关系,但这些数据库有时比所谓的关系型数据库更关心数据关系。

它们所关注的是使用数据与其他数据的关系来定义数据。如果你有许多表,它们的主键是另外两个表的主键(或有一些数据定义了它们之间的关系),这种数据库会很适合你。

键-值

例子:Redis,Cassandra, MemcacheDB

优势:根据键快速查找值

它们虽然简单,但胜在快与简单。如果你不需要存储过程,约束,粗发起以及所有其他高级特性,只想快速存取数据,这就是你想要的。

宽列/列族

例子:Hadoop / HBase ,Cloudata,Druid

SQL已死?

当然不是!

虽然有些场景SQL并不适用,但是它也有能发挥优势的地方。许多数据模型依然最适合用SQL表达。

NoSQL并不是SQL的替代品,而是与SQL互补的,每种都有能发挥优势的使用场景。

参考

stackoverflow

NoSQL

mongodb