基于云的数据库的研究
来源:数据通信杂志 更新时间:2014-05-06
 
随着云计算的逐步发展,云数据库的也越来越重要,在未来数据库领域占有重要地位。文章介绍了云数据的现状、发展、特性、影响。最后讨论了云数据库的未来的发展方向。
    “云”和“大数据”是当今IT圈当之无愧的最热的两个关键词,云和大数据之间有着千丝万缕的联系,两者相互促进,共同发展。随着云计算的发展,数据量呈现爆炸式增长,海量的数据除了在本地存储,也可以在云上开辟新的空间。结构化数据、半结构化数据或者非结构化数据,云数据库都提供了相应的产品,协助用户管理和消费数据,将他们从繁琐的硬件配置和管理中解脱出来。
  1.云计算概述
  云计算已经成为当前全社会关注的热点,被看着继个人计算机变革和互联网变革后的第三次IT浪潮。云计算的出现可以上溯到上世纪60年代,麦卡锡曾经提出将计算能力作为一种和水电一样的公用事业提供给用户的理念,这可以算作云计算思想的起源。随着IT计算的发展,在网格计算、虚拟化技术、SOA、SaaS等技术的支撑下,云计算作为一种新的资源使用和交付模式,逐渐的得到认可和推广。
  对于众多IT厂商来说,云计算更多的是一种营销伞。目前被广泛认可的云计算的定义是美国国家标注与技术研究院对云计算的定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
  云计算主要有资源配置自动化、需求服务自动化、以网络为中心、服务可记量化以及资源的池化和透明化等特点。
  鉴于云计算的各种特点,近年来国内外各知名IT企业都在大力开发和推进云计算,如Google推出Google Apps服务,亚马逊推迟弹性计算云(EC2)服务,IBM推出“蓝云”计划,国内浪潮推出面向云计算的“云海”操作系统。
  2.云数据库
  2.1 数据库概述
  信息系统都需要对各种数据进行计算,然后存放在数据库系统中。云计算系统同样如此,在云计算中,可以把数据库简单的划分为三种:传统的关系数据库,NoSql数据库和云数据库(DBaaS)。
  传统数据库主要是关系型数据库,有商用和开源两种。商用关系型数据库经过多年的发展,已经非常的稳定可靠,诸如oracle、sql server等,但价格比较昂贵。开源数据库在稳定性方便不及商用数据库,但在价格方面有较大优势,如mysql、postgresql等开源数据库在业界也有广泛的应用。对于传统的关系数据库,在高并发和海量数据的情况下,对数据库配置管理以及应用系统的开发,都有较高要求,在维护成本和维护人员方面需求较高。对于很多中小型企业,这方面的费用过于昂贵。
  NoSql是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的数据库,有时也称作Not Only SQL的简写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSql数据库和传统的关系型数据库存在很多不同点,最重要的一个是NoSql不使用SQL作为查询语言。NoSql的结构通常提供弱一致性的保证,如最终一致性,或者仅限于单个的数据项。但多数NoSql系统都部署了分布式结构,使用分散式杂凑表将数据以冗余的方式保存在多台服务器上,以此提供了高可用性和高扩展性。
  而云数据库通常是指运行在云计算平台上的数据库系统。是指在SaaS模式下发展起来的一种云计算技术,是一种基于云的数据存储,提供数据的变更、查询、计算服务,对应用程序而言只需要提交一个数据库连接字符串即可访问的服务,且云数据库的用户不能直接控制运行原始数据库的主机。它增强了数据库的管理及运维能力,同时消除了用户、硬件和软件的重复配置,并且虚拟化了许多后端的功能,使软硬件的升级变的更容易和简单。
  2.2 云数据库的现状
  根据IDC的研究报告,企业对结构化数据的存储每年都有很大的增加,而对非结构化数据的存储需求增加的更快更多,小规模的应用,系统负载变化可以由系统的空闲资源来进行处理,但在大规模应用的情况下,存在海量的数据存储需求,而且应用对资源的需求也是动态变化的,这就意味着大量虚拟服务器的增加和减少,对于这样情况,传统的关系数据库已经无法满足这些需求,云数据库成了必然的选择,也就是说,海量数据存储催生了云数据库,并推动他不断向前发展。
  随着云计算的兴起,有众多的IT公司都参与了云数据库的开发,虽然在DBaaS中仍存在许多问题,尤其是关于存储在云的敏感信息,以及服务中断的问题,还有包括向云端数据库迁移困难,没有足够成熟的案例等问题,不过,云数据库和工具这一新兴市场仍在加速发展中,云数据库仍然是未来发展的大势。
  目前云数据库市场上主要有Google的Bigtable和Amazon的SimpleDB,10G也开发了自己的MongoDB,微软利用其SQL Server技术研发的Azure,以及甲骨文的开源的BekelyDB等新型开源数据库。但是Google和Amazon几乎占领了整个市场。
  2.3 云数据库的特点
  云数据库与传统的关系型数据库存在着根本的不同,云数据库主要对分布的、海量的数据进行存储,必须能够高效的管理大量的数据。相比传统的关系型数据库,云数据库具有以下几个特点:
  1) 动态可扩展
  因为面临出来海量数据的需求,从理论上来说,云数据库具有无限可扩展性,以满足不断增长的数据存储需求。在面对不断变化的需求时,云数据库能表现出更好的弹性。如需要分配额外的数据库存储资源来处理一些新增加的需求,在云数据库中这个过程只需几分钟,当需求降低的时候,也可以很方便的释放这些资源。
  2) 高可用性
  对云数据库来说,不存在单点失效的问题,如果某一个节点失效,剩余的节点就会接管该节点未完成的事务。而且在云数据库中,通常数据都是复制的,在地理分布上也是如此。各大型云计算服务提供商如Google、Amazon和IBM等都有分布在全球范围内的数据中心,通过在不同地理空间进行数据复制,可以提供高水平的容错能力。
  3) 使用代价较低
  云数据库通常是采用多租户(multi-tenancy)的形式,这种资源共享的方式对于用户来说,可以节省很多的开销,而且采用按需付费的方式来使用云计算环境下的各种软硬件资源,不会产生各种不必要的资源浪费。同时,云数据库的底层存储通常是采用大量廉价的商业服务器,可以更一步降低成本。
  4) 易用性
  云数据库对用户隐藏了底层的所有信息,所有的底层信息对用户程序来说都是绝对透明的。云数据库的用户不用控制运行原始数据库的服务器,也不必了解其他任何信息,只需要一个有效的链接字符串就可以方便的使用云数据库。使用云数据库的服务,如数据库的管理维护、备份、监控、服务器优化等日常工作,数据库主机的维护管理等工作都将由云数据库平台的自动化工具来完成,用户可以将时间和精力都花费在用户程序的优化和管理上面。
  5) 支持大规模的并行处理
  在云计算系统中,由于处理的是海量的数据,为了效率和有效的使用云计算系统的所有资源,数据库必须能够支持大规模的并行运算。而对于用户来说,他们看到的数据库只是一个虚拟的数据库,数据库管理平台会根据策略把用户的数据进行分拆存储到不同的物理主机或者虚拟机上,因此云数据能够有效的提供大规模的并行处理的服务。
  3.实例研究
  下面以Google的云数据库产品为例,介绍云数据库的实现和使用。Google研发的大规模数据库系统Google BigTable[8]只能满足弱一致性要求,它设计的目的是为了出来Google内部的海量的格式化和半格式化数据。它允许客户端进行数据部署以及对格式进行动态的控制。
    BigTable的实现是构建在Google其他几个基础设施之上的,它使用了Google的分布式文件系统GFS存储数据和日志文件,它还依赖一个持久性的、高可用的分布式锁服务Chubby,最后它还要依靠簇管理系统来调度作业、调度共享服务器上面的资源、处理服务器故障和监控服务器的状态。
  BigTable提供了一个和以往不同的简单动态的非关系型数据模型,采用的是键/值数据模型。一个BigTable实际上就可以看作一个永久的分布式的稀疏的多维排序图,采用row key、column key及timestamp来对该图进行索引,其中每个值都是一个未经解释的字节数组。
  在BigTable中,行列和时间戳都是保存在表格的单元里,然后里面的内容按行划分,多个行组成一个tablet(小表),然后被保存到一个服务器节点中。在一个数据簇中,存储有许多表,而没个表都是一个tablet集合。在最初,一个表只有一个table,随着表的增长,会分解成多个tablet,系统使用类似于B+树的一个3层的架构来存储这些tablet的信息。因为系统采用了键/值数据模型,表之间不存在关联操作,使得数据的分区操作相对比较简单。
  在BigTable的访问数据,首先是由客户端向管理器获取一份分区映射图,然后再图中根据键值搜寻数据的存储位置,然后向改数据节点请求数据,最后由改节点向客户端返回相应的数据。在实际应用中,为了提升性能,也是为了缓解在管理器端的性能瓶颈,客户端通常会缓存一份常用的分区映射图。
  4.总结及未来展望
  云数据库随着云计算技术的发展,越来越受到业界的关注,当前,很多IT公司都参与到云计算当中来,云数据库的影响也日趋扩大,主要体现在以下几个方面,包括改变了很多企业的数据管理的方式,促使数据库技术的发展,重新分配数据库市场的份额等。
  随着市场的发展,以及云数据库的成熟,云数据库在未来一段时间是数据库技术的发展趋势,云数据库的相关问题也是将来数据库研究的重点内容。