/ 中存储网

什么是NoSQL?What is NoSQL?谁在用?

2012-05-18 13:23:14 来源:中存储网

NoSQL是什么?顾名思义就是“不要SQL”。SQL我们都知道是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

一提到数据库,我们习惯而自然的想到SQL,的确,在Oracle、Sybase、SQL Server这些关系型数据库中,几乎任何操作都离不开SQL语句。SQL其实也代表了关系型数据库。

NoSQL一词首先是Carlo Strozzi在1998年提出来的,指的是他开发的一个没有SQL功能,轻量级的,开源的关系型数据库。注意,这个定义跟我们现在对NoSQL的定义有很大的区别,它确确实实字如其名,指的就是“没有SQL”的数据库。不过,NoSQL的发展慢慢偏离了初衷,Carlo Strozzi也发觉,其实我们要的不是"no sql",而应该是"no relational",也就是我们现在常说的非关系型数据库了。

2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中再次提出了NoSQL一词,用于指代那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据储存系统的出现和兴起。 Eric Evans使用NoSQL这个词,并不是因为字面上的“没有SQL”的意思,他只是觉得很多经典的关系型数据库名字都叫"**SQL"(例如 MySQL,MS SQL,PostgreSQL),所以为了表示跟这些关系型数据库在定位上的截然不同,就用了"NoSQL"一词。

Wikipedia上对NoSQL的定义是这样的:NoSQL 是一项运动,这个运动推动了广义定义的非关系型数据储存系统的发展,并破除了长久以来关系型数据库一家独大的局面。论文和研究中一般将这些数据库称为结构化储存系统 。

不要叫它们数据库

Amazon.com的首席技术官Werner Vogels将他们的重要的Dynamo系统称作“高可用性的键值商店”。Google将自己的BigTable称作“管理结构化数据的分布式存储系统”,之前曾提到,Google的Big Table不是SQL数据库,原因是SQL数据库支持的一些功能实在难以进行分割,这与我们跨机器存储数据的想法无法结合。它们都是许多NoSQL追随者的效仿模式。#p#NoSQL可以处理大量数据,更适合大数据现状#e#

它们可以处理超大量的数据

比如Zvents公司以BigTable模式搭建的开源数据库 Hypertable,据Zvents工程师Doug Judd介绍,它可以每天在搜索引擎中写入10亿单元数据。另外,BigTable与其姊妹技术MapReduce相结合,每天可以处理多达20PB的数据。

“毫无疑问,数据量越来越巨大也让人们寻找其他的数据库替代技术,”SpringSource的Travis说。

它们运行在便宜的PC服务器集群上

PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本。Google曾表示一个BigTable的大集群可以管理数千台服务器上多达6PB的数据。

“Oracle会告诉你需要购买一些硬件然后正确配置Oracle RAC,然而用其他的神奇软件你也可以达到相同的可扩展性。但是两者的开销可是天差地别。”SpringSource首席技术官Javier Soltero说。

它们击碎了性能瓶颈

NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成 SQL友好格式的时间,执行速度变得更快。

“SQL并非适用于所有的程序代码,”数据库分析师Curt Monash说。对于那些繁重的重复操作的数据,SQL值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。

Adobe公司资深计算机科学家Raffaele Sena说,当一年半前Adobe准备重新更新ConnectNow网络协作服务时,正是由于上面的理由,他们决定不采用关系型数据库。Adobe决定使用Terracotta 提供的Java集群软件,管理Java格式的数据,Sena说,这使ConnectNow的性能提高到前一版本的2至3倍。

没有过多的操作

虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么多。

以Adobe的ConnectNow为例,Sena说,当用户在线时它会不通过数据库而制作三份会话数据,在离线后删除。“因此我们并不需要数据库,因为具体所需要的数据是在内存中的,”他说。

Bootstrap支持

因为NoSQL项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。但是一些人承认,没有正式的官方支持,万一出了差错会是可怕的,至少很多管理人员是这样看。

“我们确实需要做一些说服工作,”Adobe的Sena承认,“但基本在他们看到我们的第一个原型运行良好之后,我们就能够说服他们,这是条正确的道路。”

“大多数大型企业已经习惯于使用关系型数据库管理系统。因此他们会想为什么要改变呢?”Monash说。比如MapReduce和类似的项目“对企业有意。但是在具体使用时,它很可能会和一个分析DBMS(数据库管理系统)相集成。”

即使NoSQL的组织者Oskarsson也承认,就算是他自己的公司Last.fm也还没有做好转为NoSQL替代者的准备,现在依然在使用开源数据库。他认为这场NoSQL革命目前仍然需要等待。

没有了