关系数据库模型已经流行了几十年了,但是一种新类型的数据库——被称为NoSQL,正在引起企业的注意。下面是关于它的优势和劣势的一个概述。二十多年以来,对数据库管理来说,关系数据库(RDBMS)模型一直是一个占统治地位的数据库模型。但是,今天,非关系数据库,“云”数据库,或“NoSQL”数据库作为关系数据库以外的一些选择,正在引起大家的广泛关注。在这篇文章里,我们将主要关注那些非关系的NoSQL数据库的十大利弊:包括五大优势和五大挑战。
NoSQL的五大优势
1,灵活的可扩展性
多年以来,数据库管理员们都是通过“纵向扩展”的方式(当数据库的负载增加的时候,购买更大型的服务器来承载增加的负载)来进行扩展的,而不是通过“横向扩展”的方式(当数据库负载增加的时候,在多台主机上分配增加的负载)来进行扩展。但是,随着交易率和可用性需求的增加,数据库也正在迁移到云端或虚拟化环境中,“横向扩展”在commodity hardware方面的经济优势变得更加明显了,对各大企业来说,这种“诱惑”是无法抗拒的。
在commodity clusters上,要对RDBMS做“横向扩展”,并不是很容易,但是各种新类型的NoSQL数据库主要是为了进行透明的扩展,来利用新节点而设计的,而且,它们通常都是为了低成本的commodity hardware而设计的。
2,大数据
在过去的十年里,正如交易率发生了翻天覆地的增长一样,需要存储的数据量也发生了急剧地膨胀。O’Reilly把这种现象称为:“数据的工业革命”。为了满足数据量增长的需要,RDBMS的容量也在日益增加,但是,对一些企业来说,随着交易率的增加,单一数据库需要管理的数据约束的数量也变得越来越让人无法忍受了。现在,大量的“大数据”可以通过NoSQL系统(例如:Hadoop)来处理,它们能够处理的数据量远远超出了最大型的RDBMS所能处理的极限。
3,“永别了”!DBA们!(再见?)
在过去的几年里,虽然一些RDBMS供应商们声称在可管理性方面做出了很多的改进,但是高端的RDBMS系统维护起来仍然十分昂贵,而且还需要训练有素的DBA们的协助。DBA们需要亲自参与高端的RDBMS系统的设计,安装和调优。
NoSQL数据库从一开始就是为了降低管理方面的要求而设计的:从理论上来说,自动修复,数据分配和简单的数据模型的确可以让管理和调优方面的要求降低很多。但是,DBA的死期将至的谣言未免有些过于夸张了。总是需要有人对关键性的数据库的性能和可用性负责的。
4,经济
NoSQL数据库通常使用廉价的commodity servers集群来管理膨胀的数据和事务数量,而RDBMS通常需要依靠昂贵的专有服务器和存储系统来做到这一点。使用NoSQL,每GB的成本或每秒处理的事务的成本都比使用RDBMS的成本少很多倍,这可以让你花费更低的成本存储和处理更多的数据。
5,灵活的数据模型
对于大型的生产性的RDBMS来说,变更管理是一件很令人头痛的事情。即使只对一个RDBMS的数据模型做了很小的改动,也必须要十分小心地管理,也许还需要停机或降低服务水平。NoSQL数据库在数据模型约束方面是更加宽松的,甚至可以说并不存在数据模型约束。NoSQL的主键值数据库和文档数据库可以让应用程序在一个数据元素里存储任何结构的数据。即使是规定更加严格的基于“大表”的NoSQL数据库(例如:Cassandra, HBase)通常也允许创建新列,这并不会造成什么麻烦。
应用程序变更和数据库模式的变更并不需要作为一个复杂的变更单元来管理。从理论上来说,这可以让应用程序迭代的更快,但是,很明显,如果应用程序无法维护数据的完整性,那么这会带来一些不良的副作用。
NoSQL的五大挑战
NoSQL的种种承诺引发了一场热潮,但是在它们得到主流的企业的青睐以前,它们还有许多困难需要克服。下面是NoSQL需要面对的一些挑战。
1,成熟度
RDBMS系统已经发展很长时间了。NoSQL的拥护者们认为,RDBMS系统那超长的发展的年限恰恰表示它们已经过时了,但是对于大多数的CIO们来说,RDBMS的成熟度更加令它们放心。大多数情况下,RDBMS系统更加稳定,而且功能也更加丰富。相比之下,大多数的NoSQL数据库都是pre-production版本,许多关键性的功能还有待实现。
对于大多数开发者来说,处于技术的最前沿的确是很令人兴奋的,但是企业应该怀着极端谨慎的态度来处理此事。
2,支持
企业都希望能得到这样的保证:如果一个关键性的系统出现问题了,他们可以获得及时有效的支持。所有的RDBMS供应商都在竭尽全力地提供高水平的企业支持。
相反,大多数的NoSQL系统都是开源项目,虽然对于每个NoSQL数据库来说,通常也会有一个或多个公司对它们提供支持,但是那些公司通常是小型的创业公司,在支持的范围,支持的资源,或可信度方面,它们和Oracle, Microsoft或IBM是无法相提并论的。
3,分析和商业智能化
NoSQL数据库现在已经可以满足现代的Web2.0应用程序的高度的可扩展性的要求了。这直接导致的结果是,它们的大多数功能都是面向这些应用程序而设计的。但是,在一个应用程序中,具有商业价值的数据早就已经超出了一个标准的Web应用程序需要的“插入-读取-更新-删除”的范畴了。在公司的数据库中进行商业信息的挖掘可以提高企业的效率和竞争力,而且对于所有的中到大型的公司来说,商业智能化(BI)一直是一个至关重要的IT问题。
NoSQL数据库几乎没有提供什么专用的查询和分析工具。即使是一个简单的查询,也要求操作者具有很高超的编程技术,而且,常用的BI工具是无法连接到NoSQL的。
像HIVE或PIG那样的新出现的一些解决方案在这方面可以提供一些帮助,它们可以让访问Hadoop集群中的数据变得更加容易,最后也许还会支持其他的NoSQL数据库。Quest软件已经开发了一个产品——Toad for Cloud Databases——它给各种NoSQL数据库提供了专用的查询功能。
4,管理
NoSQL的设计目标是提供一个“零管理”的解决方案,但是目前来说,还远远没有达到这个目标。安装NoSQL还是需要很多技巧的,同时,维护它也需要付出很多的努力。
5,专业知识
毫不夸张地说,全世界有数百万的开发者,他们都对RDBMS的概念和编程方法很熟悉,在每个业务部门中都有这样的开发者。相反,几乎每一个NoSQL开发者都正处于学习状态中。虽然这种情况会随着时间的推移而改变,但是现在,找到一些有经验的RDBMS程序员或管理员要比找到一个NoSQL专家容易的多。
结论
NoSQL数据库正在逐渐地成为数据库领域中不可或缺的一部分,如果使用方法得当的话,能获得很多的好处。但是,企业应该谨慎行事,要充分地认识到这些数据库的一些限制和问题。