云计算之存储即服务-结构化数据存储(1)

来源:互联网 发布:mac系统镜像文件下载 编辑:程序博客网 时间:2024/04/30 15:22

如今,越来越多的用户开始接受并使用云计算提供的资源,访问量的激增对于基础设施的可用性和可扩展性是一个不小的考验。也许人们会问,能否采用传统的关系型数据库来实现结构化数据存储呢?实际上,一些web 2.0应用在诞生的初期也尝试过关系型数据库,比如,微博网站twitter就曾经用过MySQL,不过随着访问量的激增,MySQL表现出来的可扩展性越来越不如人意,最终twitter弃用了MySQL。从某种意义上来讲,基础设施即服务也属于web 2.0应用,使用传统的关系型数据库也会遇到同样的问题。

另外,我们还可以通过理论分析找到这个问题的根本原因。在2000年,加州大学伯克利分校的Eric Brewer教授在他的一篇论文里提出了CAP理论,2002年来自麻省理工大学的Seth Gilbert 和 Nancy Lynch证明了该理论的正确性。简而言之,CAP理论告诉我们,任何一个分布式计算机系统都不可能同时兼顾数据一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)这个三个需求,最多只能同时满足其中的两个。对于传统数据库而言,由于保证了数据一致性和可用性(ACID模型),要实现分布式系统非常困难。于是,为了满足web2.0应用对于可扩展性的需求,非关系型数据库(NoSQL)如雨后春笋般出现了,比如Amazon的Dynamo和SimpleDB, Facebook的Cassandra,Yahoo的Hadoop/HBase,Basho的Riak等等,这些数据库保证了系统的可用性和分区容忍性(BASE模型),而对于数据的一致性要求,它们采取了“最终一致性”。关系型数据库的强一致性要求数据必须在写入完成就立即达到各个节点同步,而“最终一致性”是一种弱一致性要求,它最终能保证数据在每个节点上是一致的,但是达到这个目标需要一定的时间。另外,这些数据库采用了“键-值”方式来存取数据,而且每个值可以包含一列或多列数据,这种方式增加了创建数据模型的灵活性。

当然,并不是所有的人都愿意牺牲数据一致性来换取可可扩展性,数据库领域的专家Mike Stonebraker认为可以在保持强数据一致性的前提下,通过某些技术手段来实现可扩展性,VoltDB2便是这样的一个开源项目。

总之,结构化数据存储服务的具体实现是由上层应用的特性决定的。对于传统应用领域,关系型数据库已经正常服务了近30年;对于某些新兴的web 2.0应用和云计算,非关系型数据库或许能够提供更好的服务。


[声明: 内容摘自<云计算宝典>一书,本博主是该内容的创作人员]

原创粉丝点击