经过了至少4年的激烈争论,现在是对NoSQL的现状做一个阶段性结论的时候了。围绕着 NoSQL发生了如此之多的事情,以至于很难对其作出一个简单概括,也很难判断它达到了什么 目标以及在什么方面没有达到预期。
在很多领域,NoSQL不仅在行业内也在学术领域 中取得了成功。大学开始认识到NoSQL必须要加入到课程中。只是反复讲解标准数据库已经不 够了。当然,这不意味着深入学习关系型数据库是错误的。相反,NoSQL是很好的很重要的补 充。
发生了什么?
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知识的架构师和开发人员的需 求持续增长。最近的调查显示行业中最需要的开发人员技能如下:
HTML5
MongoDB
iOS
Android
Mobile Apps
Puppet
Hadoop
jQuery
PaaS
Social Media
在前十名的技术需求中,有两个NoSQL数据库。有一个甚至排在了iOS前面。如果这不是对 它的赞扬,那是什么呢?!
但是,跟最初预计相比,对NoSQL的采用变得越来越快, 越来越深入。在2011年夏天,Oracle曾经发布过一个著名白皮书,它提到NoSQL数据库感觉就 像是冰淇淋的风味,但是你不应该过于依附它,因为它不会持续太长时间。但是仅仅在几个 月之后,Oracle就展现了它们将Hadoop集成到大数据设备的方案。甚至,他们建立了自己的 NoSQL数据库,那是对BerkeleyDB的修改。从此之后,所有的厂商在集成Hadoop方面展开了竞 赛。Microsoft、Sybase、IBM、Greenplum、Pervasive以及很多的公司都已经对它有了紧密 的集成。有一个模式随处可见:不能击败它,就拥抱它。
但是,关于NoSQL被广泛采 用的另一个很重要但不被大家关注的重要信号就是NoSQL成为了一个PaaS标准。借助于众多 NoSQL数据库的易安装和管理,像Redis和MongoDB这样的数据库可以在很多的PaaS服务中看到 ,如Cloud Foundry、OPENSHIFT、dotCloud、Jelastic等。随着所有的事情都在往云上迁移 ,NoSQL会对传统的关系型数据库产生很大的压力。例如当面临选择MySQL/PostGres或 MongoDB/Redis时,将会强制人们再三考虑他们的模型、需求以及随之而来的其他重要问题。
另外一个很有意思的技术指示器就是ThoughtWorks的技术雷达,即便你可能不完全同 意它所包含的所有事情,但它总会包含一些有意思的事情。让我们看一下他们2012年10月份 的技术雷达,如图1:
图1: ThoughtWorks技术雷达,2012年10月——平台