论文导读:On the elasticity of NoSQL databases over cloud management platforms

[KonstantinouABTK11]Ioannis Konstantinou, Evangelos Angelou, Christina Boumpouka, Dimitrios Tsoumakos, Nectarios Koziris: On the elasticity of NoSQL databases over cloud management platforms. CIKM 2011:2385-2388

温馨提示:“论文导读”旨在推荐他人发表的本领域相关论文。本论文摘要由厦门大学计算机系林子雨老师(http://www.cs.xmu.edu.cn/linziyu)翻译,如果您对该论文细节感兴趣,可以阅读英文原文(全文PDF版权归出版商所有,因此需要到出版商网站下载该论文PDF)。

【摘要】NoSQL数据库主要关注大规模数据集的分析处理,它可以在廉价的商业服务器上提供不断增加的扩展性。NoSQL数据库的一个显著特性就是弹性(elasticity),可以实现费用的合理分配,同时取得较高的性能,并且可以直接部署到云计算平台中。然而,资源的动态扩展和收缩的过程,通常包含了簇配置的人工操作。到目前为止,在下面两个方面还没有相关的研究:(1)对NoSQL数据库的代价进行量化;(2)在云平台上提供NoSQL数据库服务的有效性。本文中,我们提出了一个可以在云中使用的框架,它可以对NoSQL数据库系统进行动态监控。我们在一个开源的云平台上,对一些比较流行的NoSQL数据库的弹性特征进行了研究。在这个研究的基础上,我们一个决策支持系统的原型实现,它可以根据管理员或者应用定义的约束条件,对任何NoSQL数据库引擎实现自动弹性操作。

【部分正文内容翻译】

商务智能和社会网络这些应用存储的数据都已经达到PB级别,这些应用的计算和存储需求,已经达到了类似SQL这种集中式数据库的能力极限[8]。这就导致了水平可扩展、分布式、非关系型数据库的兴起,即NoSQL数据库,比如Google BigTable[9]和它的开源实现HBase[5],以及Facebook的Cassandra[12]。NoSQL系统具备存储和索引任意数量大数据集的能力,同时可以处理来自大量并发用户的请求。它们是IaaS云(比如Amazon EC2[1],或者它的开源实现OpenStack[6])理想候选应用。NoSQL管理员可以充分利用云平台的API,根据实际需要来分配资源,比如虚拟机的数量和存储空间大小。

云平台的特性和NoSQL数据库的特性是高度兼容的,即都提供弹性(elasticity)和分区(sharding)。弹性,是指根据应用的实际需要来扩展和收缩资源。分区,是指在非共享体系架构内进行数据的水平划分。很显然,这两种特性是相互关联的:随着计算资源的增加和缩减,数据分区也必须进行类似的操作,并且需要保证不发生数据丢失,还要保证一定数量的副本。

许多NoSQL系统[5,12,7]都声称,可以根据参与的商业服务器节点的数量,实现自适应的弹性。但是,这种资源分配的操作通常是采用人工的方式进行的,当出现不可预期的高负载情况时,就会影响系统的可用性,就比如最近的Four-square的运行中断。许多云供应商都以服务的方式提供了自适应框架,比如Amazon SimpleDB[2]和Google App Engine[4]就可以提供近乎无限的存储能力和处理能力。但是,这些服务都是运行在专有服务器上,它们的体系架构并没有公开的资料,它们的代价很高,性能也值得怀疑[11]。

最近的一些研究工作[11,10]专注于不同分析平台的性能研究,而没有关注虚拟化资源的弹性问题。文献[13][15]关注了这个问题,但是,不是针对NoSQL数据库的。因此,虽然NoSQL和云设施在本质上都是弹性的,但是,没有研究关注在实际应用中这些弹性的有效性到底如何。就我们所知,目前还没有实际的系统可以结合两个方面的技术,并且可以根据负载的动态变化,实现NoSQL簇尺寸的自动调整。

在对目前最流行的NoSQL解决方案和OpenStack IaaS[6]进行了调研以后,我们的贡献主要包括:我们提供了一个通用的控制模块,可以对NoSQL簇进行监控;我们研究了在不同的负载类型下,一些关键性能指标(比如CPU和内存)的变化情况。在一个簇的尺寸发生变化后,我们对由此带来的代价和收益进行了记录。在不同的负载下增加簇的尺寸时,我们会记录由此带来的性能收益;我们设计了一个原型系统演示来证明我们框架的有效性,它可以实现簇尺寸的自动调整。为了演示我们的系统的模块性,我们融合了三个流行的NoSQL系统,即HBase[5],Cassandra[12]和Riak[7],这三个系统都支持弹性可扩展。我们利用了YCSB[10],它是Yahoo的开源客户端。

我们的弹性测试框架,是一个开源项目,包含了两千多行代码,它的体系架构如图1所示。Command Issuing模块用来发起命令,对簇的大小进行调整,它和Cloud Mangement模块进行协调,后者会直接和Cloud Provider进行联系,通过增加或减少虚拟机的数量来改变簇的大小。Rebalancing模块可以保证新加入簇的节点,会承担起相等份额的负载。Cluster Coordinator模块根据所采用的系统,会执行更高层次的增加、减少或重新平衡命令。最后,Monitoring模块维护从簇节点收集的、最近的性能指标。