NoSQL现状

通过了至少4年的激烈争论,如今是对NoSQL的现状作一个阶段性结论的时候了。围绕着NoSQL发生了如此之多的事情,以致于很难对其做出一个简单归纳,也很难判断它达到了什么目标以及在什么方面没有达到预期。html

在不少领域,NoSQL不只在行业内也在学术领域中取得了成功。大学开始认识到NoSQL必需要加入到课程中。只是反复讲解标准数据库已经不够了。固然,这不意味着深刻学习关系型数据库是错误的。相反,NoSQL是很好的很重要的补充。sql

发生了什么?数据库

NoSQL领域在短短的4到5年的时间里,爆炸性地产生了50到150个新的数据库。nosql-database.org列出了150个这样的数据库,包括一些像对象数据库这样很古老但很强大的。固然,一些有意思的合并正在发生,如CouchDB和Membase交易产生的CouchBase。可是咱们稍后会在本文中讨论每个主要的系统。编程

不少人都曾经假设在NoSQL领域会有一个巨大地整合。可是这并无发生。NoSQL过去是爆炸性地增加,如今依旧如此。就像计算机科学中的全部领域同样——如编程语言——如今有愈来愈多的空白领域须要大量的数据库。这是与互联网、大数据、传感器以及未来不少技术的爆炸性增加同步的,这致使了更多的数据以及对它们进行处理的不一样需求。在过去的四年中,咱们只看到了一个重要的系统离开了舞台:德国的Graph数据库Sones。为数众多的NoSQL依然快乐地生存着,要么在开源社区,不用考虑任何的金钱回报,要么在商业领域。缓存

可见性与金钱?安全

另一个重要的方面就是可见性与行业采用的状况。在这个方面,咱们能够看到在传统的行业中——要保护投资——与新兴的行业(主要是初创公司)之间有很大的差异。几乎全部热门的基于Web的创业公司如Pinterest和Instagram 都在使用混合式(SQL + NoSQL)的架构,而传统的行业依然纠结因而否采用NoSQL。可是观察显示,愈来愈多这样的公司正在试图将它们的一部分数据流用NoSQL方案进行处理并在之后进行分析,这样的方案包括Hadoop、MongoDB以及Cassandra等。服务器

这同时致使了对具有NoSQL知识的架构师和开发人员的需求持续增加。最近的调查显示行业中最须要的开发人员技能以下:session

  1. HTML5
  2. MongoDB
  3. iOS
  4. Android
  5. Mobile Apps
  6. Puppet
  7. Hadoop
  8. jQuery
  9. PaaS
  10. Social Media

在前十名的技术需求中,有两个NoSQL数据库。有一个甚至排在了iOS前面。若是这不是对它的赞赏,那是什么呢?!架构

可是,跟最初预计相比,对NoSQL的采用变得愈来愈快,愈来愈深刻。在2011年夏天,Oracle曾经发布过一个著名白皮书,它提到NoSQL数据库感受就像是冰淇淋的风味,可是你不该该过于依附它,由于它不会持续太长时间。可是仅仅在几个月以后,Oracle就展示了它们将Hadoop集成到大数据设备的方案。甚至,他们创建了本身的NoSQL数据库,那是对BerkeleyDB的修改。今后以后,全部的厂商在集成Hadoop方面展开了竞赛。Microsoft、Sybase、IBM、Greenplum、Pervasive以及不少的公司都已经对它有了紧密的集成。有一个模式随处可见:不能击败它,就拥抱它。nosql

可是,关于NoSQL被普遍采用的另外一个很重要但不被你们关注的重要信号就是NoSQL成为了一个PaaS标准。借助于众多NoSQL数据库的易安装和管理,像Redis和MongoDB这样的数据库能够在不少的PaaS服务中看到,如Cloud Foundry、OPENSHIFT、dotCloud、Jelastic等。随着全部的事情都在往云上迁移,NoSQL会对传统的关系型数据库产生很大的压力。例如当面临选择MySQL/PostGres或MongoDB/Redis时,将会强制人们再三考虑他们的模型、需求以及随之而来的其余重要问题。

另一个颇有意思的技术指示器就是ThoughtWorks的技术雷达,即使你可能不彻底赞成它所包含的全部事情,但它总会包含一些有意思的事情。让咱们看一下他们2012年10月份的技术雷达,如图1:

NoSQL的现状

图1:ThoughtWorks技术雷达,2012年10月——平台

在他们的平台象限中,列出了5个数据库:

  1. Neo4j (采用)
  2. MongoDB(试用阶段可是采用)
  3. Riak(试用)
  4. CouchBase(试用)
  5. Datomic(评估)

你会发现它们中至少有四个得到了不少的风险投资。若是你将NoSQL领域的全部风险投资加起来,结果确定是在一亿和十亿美圆之间!Neo4j就是一个例子,它在一系列的B类资助中获得了一千一百万美圆。其余获得一千万到三千万之间资助的公司是Aerospike、Cloudera、DataStax、MongoDB以及CouchBase等。可是,让咱们再看一下这个列表:Neo4j、MongoDB、Riak以及CouchBase已经在这个领域超过四年了而且在不断地证实它们是特定需求的市场领导者。第五名的数据库——Datomic——是一个使人惊讶的全新数据库,它是由一个小团队按照全新的范式编写的。这必定是很热门的东西,在后面简要讨论全部数据库的时候,咱们更更深刻地了解它们。

标准

已经有不少人要求NoSQL标准了,但他们没有看到NoSQL涵盖了一个范围如此之大的模型和需求。因此,适用于全部主要领域的统一语言如Wide Column、Key/Value、Document和Graph数据库确定不会持续很长时间,由于它不可能涵盖全部的领域。有一些方式,如Spring Data,试图创建一个统一层,但这取决于读者来测试这一层在构建多持久化环境时是否是一个飞跃。

大多数的Graph和Document数据库在它们的领域中已经提出了标准。在Graph数据库世界,由于它的tinkerpop blueprints、Gremlin、Sparql以及Cypher使得它更为成功一些。在Document数据库领域,UnQL和jaql填补了一些位置,尽管前者缺乏现实世界NoSQL数据库的支持。可是借助Hadoop的力量,不少项目正在将著名的ETL语言如Pig和Hive使用到其余NoSQL数据库中。因此标准世界是高度分裂的,但这只是由于NoSQL是一个范围很广的领域。

格局

做为最好的数据库格局图之一,是由451 Group的Matt Aslett在一个报告中给出的。最近,他更新了该图片从而可以让咱们能够更好得深刻理解他所提到的分类。你能够在下面的图片中看到,这个格局是高度碎片化和重叠的:

NoSQL的现状

图2:Matt Aslett(451 Group)给出的数据库格局

你能够看到在这个图片中有多个维度。关系型的以及非关系型的、分析型的以及操做型的、NoSQL类型的以及NewSQL类型的。最后的两个分类中,对于NoSQL有著名的子分类Key-Value、Document、Graph以及Big Tables,而对于NewSQL有子分类Storage-Engine、Clustering-Sharding、New Database、Cloud Service Solution。这个图有趣的地方在于,将一个数据放在一个精确的位置变得愈来愈难。每个都在拼命地集成其余范围数据库中的特性。NewSQL系统实现NoSQL的核心特性,而NoSQL愈来愈多地试图实现“传统”数据库的特性如支持SQL或ACID,至少是可配置的持久化机制。

这一切都始于众多的数据库都提供与Hadoop进行集成。可是,也有不少其余的例子,如MarkLogic开始参与JSON浪潮,因此也很难对其进行定位。另外,更多的多模型数据库开始出现,如ArangoDB、OrientDB和AlechemyDB(如今它是颇有前途的Aerospike DB的一部分)。它们容许在起始的时候只有一个数据库模型(如document/JSON模型)并在新需求出现的时候添加新的模型(Graph或key-value)。

图书

另一个证实它开始变得成熟的标志就是图书市场。在2010年和2011年两本德语书出版以后,咱们看到Wiley出版了Shashank Tiwari的书。它的结构很棒而且饱含了深入伟大的看法。在2012年,这个竞赛围绕着两本书展开。“七周七数据库”(Seven Databases in Seven Weeks)固然是一本杰做。它的特色在于新颖的编写以及实用的基于亲身体验的看法:它选取了6种著名的NoSQL数据库以及PostGreSQL。这些都使得它成为一本高度推荐的图书。另外一方面,P.J. Sandalage以及Martin Fowler采起了一种更为全面的方法,涵盖了全部的特征并帮助你评估采用NoSQL的路径和决策。

可是,会有更多的书出现。Manning的书出如今市场上只是个时间问题:Dan McCreary和Ann Kelly正在编写一本名为“Making Sense of NoSQL”的书,首期的MEAP(指的是Manning Early Access Program——译者注)章节已经能够看到了。

在介绍完理念和模式后,他们的第三章看起来保证颇有吸引力:

  • 构建NoSQL大数据解决方案
  • 构建NoSQL搜索解决方案
  • 构建NoSQL高可用性解决方案
  • 使用NoSQL来提升敏捷性

只是一个全新的方式,绝对值得一读。

领导者的现状

让咱们快速了解一下各个NoSQL的领导者。做为市场上很明显的领导者之一,Hadoop是一个很奇怪的动物(做者使用这个词,多是由于Hadoop的标识是一只大象——译者注)。一方面,它拥有巨大的发展势头。正如前面所说,每一个传统的数据库提供商都急切地声明支持Hadoop。像Cloudera和MapR这样的公司会持续增加而且新的Hadoop扩展和继承者每周都在出现。
即使是Hive和Pig也在更好地获得接受。不过,有一个美中不足之处:公司们依然在抱怨非结构化的混乱(读取和解析文件本应该更快一些),MapReduce在批处理上作的还不够(甚至Google已经舍弃了它),管理依旧很困难,稳定性问题以及在本地很难找到培训/咨询。即使你能够解决一些上面的问题,若是Hadoop继续像如今这样发展或发生重大变化的话,它依然会是热点问题。

第二位领导者,MongoDB,一样面临激烈的争论。处于领导地位的数据库会得到更多的批评,这多是很天然的事情。不过,MongoDB经历了快速的增加,它受到的批评主要以下:

a)就老版本而言或者
b)缺乏怎样正确使用它的知识。尽管MongoDB在下载区域清楚地代表32位版本不能处理2GB的数据并建议使用64位版本,但这依然受到了不少近乎荒谬的抱怨。

无论怎样,MongoDB合做者和资助者推进了雄心勃勃的发展路线,包含了不少热门的东西:

  • 行业须要的一些安全性/LDAP特性,目前正在开发
  • 全文本搜索很快会推出
  • 针对MapReduce的V8将会推出
  • 将会出现比集合级别更好的锁级别
  • Hash分片键正在开发中

尤为是最后一点吸引了不少架构师的兴趣。MongoDB常常被抱怨(同时也被竞争对手)没有实现简洁一致的哈希,由于key很容易定义因此不能保证彻底正确。但在未来,将会有一个对hash分片键的配置。这意味着用户能够决定使用hash key来分片,仍是须要使用本身选择分片key所带来的优点(可能不多)。

Cassandra是这个领域中的另外一个产品,它作的很好而且添加了更多更好的特性,如更好的查询。可是不断有传言说运行Cassandra集群并不容易,须要一些很艰难的工做。但这里最吸引人的确定是DataStax。Cassandra的新公司——得到了两千五百万美圆的C类资助——极可能要处理分析和一些操做方面的问题。尤为是分析能力使得不少人感到惊讶,由于早期的Cassandra并无被视为强大的查询机器。可是这种现状在最近的几个版本中发生了变化,查询功能对一些现代分析来说已经足够了。

Redis的开发进度也值得关注。尽管Salvatore声明若是没有社区和Pieter Noordhuis的帮助,他作不成任何的事情,可是它依旧是至关棒的一个产品。对故障恢复的良好支持以及使用Lua的服务器端脚本语言是其最近的成就。使用Lua的决策对社区带来了一些震动,由于每一个人都在集成JavaScript做为服务器端的语言。可是,Lua是一个整洁的语言并为Redis开启新的潘多拉盒子带来了可能性。

CouchBase在可扩展性和其余潜在因素方面看起来也是一个很好的选择,尽管Facebook以及Zynga面临着巨大的风波。它确实不是很热门的查询机器,但若是他们可以在未来提升查询能力,那它的功能就会至关完整了。与CouchDB创立者的合并毫无疑问是很重要的一个步骤,CouchDB在CouchBase里面的影响值得关注。在每一个关于数据库的会议上,听到这样的讨论也是颇有意思的,那就是在Damien、Chris和Jan离开后,CouchDB会变得更好呢仍是更坏呢?你们在这里只能听到极端的观点。可是,只要数据库作得好谁关心这个呢。如今看起来,它确实作的很好。

最后一个须要说起的NoSQL数据库固然是Riak,在功能性和监控方面它也有了巨大的提高。在稳定性方面,它继续获得巨大的声誉:“像巨石通常稳定可靠且不显眼,并对你的睡眠有好处”。Riak CS fork在这种技术的模块化方面看起来也颇有趣。

有意思的新加入者

除了市场领导者,评估新的加入者一般是颇有意思的。让咱们深刻了解它们中的一部分。

毫无疑问,Elastic Search是最热门的新NoSQL产品,在一系列的A轮资助中它刚刚得到了一千万美圆,这是它热门的一个明证。做为构建在Lucene之上的高扩展性搜索引擎,它有不少的优点:a)它有一个公司提供服务而且b)利用了Lucene在过去的多年中已被充分证实的成就。它确定会比以往更加深刻得渗透到整个行业中,并在半结构化信息领域给重要的参与者带来冲击。

Google在这个领域也推出了小巧可是迅速的LevelDB。在不少特殊的需求下,如压缩集成方面,它做为基础获得了不少的应用。即便是Riak都集成了LevelDB。考虑到Google的新数据库如Dremel和Spanner都有了对应的开源项目(如Apache Drill或Cloudera Impala),它依然被视为会继续存在的。

另一个技术变化固然就是在2012年初的DynamoDB。自从部署在Amazon中,他们将其视为增加最快的服务。它的可扩展性很强。新特性开发地比较慢但它关注于SSD,其潜力是很使人振奋的。

多模块数据库也是值得关注的一个领域。最著名的表明者是OrientDB,它如今并非新的加入者但它在很迅速地提升功能。可能它变化得太快了,不少使用者也许会很开心地看到OrientDB已经到达了1.0版本,但愿它能更稳定一些。对Graph、Document、Key-Value的支持以及对事务和SQL的支持,使得咱们有理由给它第二次表现的机会。尤为是对SQL的良好支持使得它对诸如Penthao这样的分析解决方案方面颇有吸引力。这个领域另外一个新的加入者是ArangoDB,它的进展很快,并不畏惧将本身与已肯定地位的参与者进行比较。
可是,若是有新的需求必需要实现而且具备不一样类型的新数据模型要进行持久化的话,对原生JSON和Graph的支持会省去不少的努力。

到目前位置,2012年的最大惊喜来自于Datomic。它由一些摇滚明星采用Clojure语言以难以使人置信的速度开发的,它发布了一些新的范式。另外,它还进入了ThoughtWorks的技术雷达,占据了推荐关注的位置。尽管它“只是”已有数据库中一个参与者,可是它有不少的优点,如:

  • 事务
  • 时间机器
  • 新颖且强大的查询方式
  • 新的模式方式
  • 缓存以及可扩展性的特性

目前,支持将DynamoDB、Riak、CouchBase、Infinispan以及SQL做为底层的存储引擎。它甚至容许你同时混合和查询不一样的数据库。不少有经验的人都很惊讶于这种颠覆性的范式转变是如何可能实现的。但幸运的是它就是这样。

总结

做为总结,咱们作出三点结论:

    1. 关于CAP理论,Eric Brewer的一些新文章应该几年前就发表。在这篇文章中这篇佳文的中文版地址——译者注),他指出“三选二”具备误导性,并指出了它的缘由,世界为什么远比简单的CP/AP更为复杂,如在ACID/BASE之间作出选择。虽然如此,近些年来有成千上万的对话和文章继续赞赏CAP理论而没有任何批评性的反思。Michael Stonebraker是NoSQL最强有力的审查者之一(NoSQL领域也对他颇多感激),他在多年前就指出了这些问题!遗憾的是,没有多少人在听。可是,既然Eric Brewer更新了他的理论,简单的CAP叙述时代确定要结束了。在指出CAP理论的真实和多样性的观点上,请站在时代的前列。
    2. 正如咱们所了解的那样,传统关系型数据库的不足致使了NoSQL领域的产生。但这也是传统帝国发起回击的时刻。在“NewSQL”这个术语之下,咱们能够看到许多新的引擎(如database.com、VoltDB、GenieDB等,见图2),它们提升了传统的解决方案、分片以及云计算方案的能力。这要感谢NoSQL运动。

      可是随着众多的数据库尝试实现全部的特性,明确的边界消失了
      肯定使用哪一种数据库比之前更为复杂了。
      你必需要知道50个用例、50个数据库并要回答至少50个问题。关于后者,笔者在过去两年多的NoSQL咨询中进行了收集,能够在如下地址找到:选择正确的数据库在NoSQL和NewSQL间进行选择

    3. 一个通用的真理就是,每一项技术的变化——从客户端-服务端技术开始甚至更早——须要十倍的成本才能进行转移。例如,从大型机到客户端-服务端、客户端-服务端到SOA、SOA到WEB、RDBMS到混合型持久化之间的转换都是如此。因此能够推断出,在将NoSQL加入到他们的产品决策上,不少的公司在迟疑和纠结。可是,你们也都知道,最早采用的公司会从这个两个领域获益而且可以快速集成NoSQL,因此在未来会占据更有利的位置。就这一点而言,NoSQL解决方案会一直存在而且评估起来会是有利可图的领域。
相关文章
相关标签/搜索