在过去几十年,关系型数据库管理系统一直是数据管理的主要模型,随着Web应用数据规模的显著增长,NoSQL系统逐渐引起关注。领域专家Sherif Sakr分析指出,NoSQL具备的优势(能够水平扩展数据、支持较弱的一致性模型、能够使用灵活模式和数据模型、支持简单的低级查询接口)使其更适合在云计算领域做数据管理。
Sherif认为,云模型导致了云数据库模型的出现,事实上,有三个主要技术常用于在云平台上部署软件应用程序的数据库层:
- 虚拟化数据库服务器
- 数据库即服务平台
- NoSQL存储系统
对于虚拟化来说,一般而言,资源虚拟化技术在应用程序和应用程序使用的资源之间添加了一个灵活的可编程的软件层。定义虚拟化数据库服务器的概念充分利用了这些优势,特别是当软件应用程序的现有数据库层可直接导入公共云中的虚拟机时,这些软件应用程序是专为在传统数据中心使用而设计的。
这样一个迁移过程通常只需要在部署的应用程序代码或基础架构中进行微小改变。和其他软件组件一样,在该虚拟化数据库方法中,数据库服务器被迁移到虚拟机中运行。为每个数据库副本部署一个 VM 会带来性能开销,这类开销估计小于 10%。实际上,虚拟化数据库服务器方法的一个主要优势是,应用程序可根据需要完全动态控制数据库层(数据库服务器)物理资源的分配和配置。
“数据库即服务”是这样一个概念,第三方服务器供应商托管一个关系型数据库作为一种服务。这类服务缓解了用户购买昂贵硬件和软件、处理软件升级以及雇佣专业人员进行管理和维护的需求。
实践中,如果现有软件应用程序的底层 RDBMS 与提供的服务相兼容,那么将任何软件应用程序的数据库层迁移 到关系数据库服务中预计不会太困难。但是服务供应商可能因为各种原因带来一些限制或约束(比如,托管数据库的最大容量,可行并发连接的最大数量)。此外,软件应用程序可能在控制其应用程序的分配资源方面不够灵活(可能动态分配过多的资源来处理不断增长的工作负载,或动态减少分配资源以降低操作成本)。整个资源管理和分配过程由供应商控制,对于数据库层来说,这需要一个准确的分配计算资源计划,并通过利用云计算环境的弹性和可伸缩性来限制用户应用程序功能,从而最大限度地增加其获益。
Sherif指出,不断增长的可伸缩性和新应用程序 需求为传统 RDBMS 带来了新的挑战,包括某些大规模网络应用程序对这个 “万能” 方法的不满。这个问题的解决方法是新一代的低成本、高性能数据库软件,专门设计用于挑战关系数据库管理系统优势。NoSQL 运动的一个主要原因是不同的 Web、企业和云计算应用程序的实现有不同的数据库需求,例如,不是每个应用程序都需要严格的数据一致性。再比如:像 eBay、Amazon、Twitter 或 Facebook 这类大流量网站,对可伸缩性和高可用性都是非常严格的要求,不容妥协。对于这些应用程序,即使是最轻微的故障都会带来重大的经济后果,从而影响顾客信任。
Sherif列举了NoSQL 系统具有的主要优势:
- 弹性伸缩:多年来,数据库管理员一直依赖纵向扩展方法,而不是横向扩展方法;随着目前事务级别和高可用性需求的不断增加,横向扩展(特别是在商用硬件上)的经济优势变得极具吸引力。NoSQL 系统设计具有透明扩展能力,可利用新节点添加优势。
- 更少的管理:NoSQL 数据库通常旨在支持诸如自动修复和简单的数据模型等特性;这会导致较低的管理和调优需求。
- 更好的经济效益:NoSQL 数据库通常使用大量廉价商品服务器来管理激增的数据和事务量。
- 灵活的数据模型:NoSQL 数据库具有更为宽松的数据模型限制(如果有的话),因此应用程序和数据库模式改动可能更小。
但是,NoSQL 数据库仍然需要克服许多障碍,Sherif认为需要改进的地方:
- 编程模型:NoSQL 数据库提供一些专用查询和分析设施。即使一个简单的查询也需要大量的编程知识 。由于缺少声明表述支持,重要的
join
操作一直被认为是这些系统的主要限制。 - 事务支持:事务管理是功能最强大的一个 RDBMS 特性。目前,对于那些被接受用来实现任务关键系统的事务来说,NoSQL 数据库系统上的事务概念的非存在限制(limited-to-non-existent)支持是一个障碍。
- 成熟性:众所周知,RDBMS 系统具有高稳定性和丰富的功能性。相比之下,大多数 NoSQL 替代方案还处于预生产版本阶段,很多功能尚不稳定,且无法实现。这意味着企业在进入新一波数据管理时仍需谨慎。
- 支持:企业还在寻求保障,如果系统出现故障,那么他们能够得到及时的、足够的支持。RDBMS 供应商竭尽全力提供高级支持。相比之下,很多 NoSQL 系统是开源项目,目前尚未获得支持。
- 专业人士:几乎每个 NoSQL 开发人员都处于学习阶段;当然,这种状况不会持续太长时间。但是目前寻找经验丰富的 RDBMS 程序员或管理员比寻找 NoSQL 专家更容易。