一、云数据库概念
云数据库是在 SaaS(software-as-a-service:软件即服务)成为应用趋势的大背景下发展起来的云计算技术,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易,同时也虚拟化了许多后端功能。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。可以说,云数据库是数据库技术的未来发展方向。目前,对于云数据库的概念界定不尽相同,主要有:
云数据库即CloudDB,或者简称为“云库”。它把各种关系型数据库看成一系列简单的二维表,并基于简化版本的SQL或访问对象进行操作。[1]
云数据库定义是:云数据库是部署和虚拟化在云计算环境中的数据库。[2]
云数据库解决了数据集中与共享的问题,剩下的是前端设计、应用逻辑和各种应用层开发资源的问题。使用云数据库的用户不能控制运行着原始数据库的机器,也不必了解它身在何处。
如图1 所示,在云数据库应用中,客户端不需要了解云数据库的底层细节,所有的底层硬件
都已经被虚拟化,对客户端而言是透明的。它就像在使用一个运行在单一服务器上的数据库一样,非常方便、容易,同时又可以获得理论上近乎无限的存储和处理能力。
二、云数据库的特性
云数据库具有以下特性:[3]
(1) 动态可扩展:理论上,云数据库具有无限可扩展性,可以满足不断增加的数据存储需求。
在面对不断变化的条件时,云数据库可以表现出很好的弹性。例如,对于一个从事产品零售的电子商务公司,会存在季节性或突发性的产品需求变化;或者对于类似Animoto 的网络社区站点,可能会经历一个指数级的增长阶段。这时,就可以分配额外的数据库存储资源来处理增加的需求,这个过程只需要几分钟。一旦需求过去以后,就可以立即释放这些资源。
(2) 高可用性:不存在单点失效问题。如果一个节点失效了,剩余的节点就会接管未完成的事务。而且在云数据库中,数据通常是复制的,在地理上也是分布的。诸如Google,Amazon 和IBM等大型云计算供应商具有分布在世界范围内的数据中心,通过在不同地理区间内进行数据复制,可以提供高水平的容错能力。例如,Amazon SimpleDB 会在不同的区间内进行数据复制,因此,即使整个区域内的云设施发生失效,也能保证数据继续可用。
(3) 较低的使用代价:通常采用多租户(multi-tenancy)的形式,这种共享资源的形式对于用户而言可以节省开销;而且用户采用按需付费的方式使用云计算环境中的各种软、硬件资源,不会产生不必要的资源浪费。另外,云数据库底层存储通常采用大量廉价的商业服务器,这也大幅度降低了用户开销。
(4) 易用性:使用云数据库的用户不必控制运行原始数据库的机器,也不必了解它身在何处。用户只需要一个有效地链接字符串就可以开始使用云数据库。
(5) 大规模并行处理:支持几乎实时的面向用户的应用、科学应用和新类型的商务解决方案。
三、云数据库与传统的分布式数据库
分布式数据库是计算机网络环境中各场地或节点上的数据库的逻辑集合。逻辑上它们属于同一系统,而物理上它们分散在用计算机网络连接的多个节点,并统一由一个分布式数据库管理系统管理。
分布式数据库已经存在很多年,它可以用来管理大量的分布存储的数据,并且通常采用非共享的体系架构。云数据库和传统的分布式数据库具有相似之处,比如,都把数据存放到不同的节点上。但是,分布式数据库在可扩展性方面是无法与云数据库相比的。由于需要考虑数据同步和分区失败等开销,前者随着节点的增加会导致性能快速下降。而后者则具有很好的可扩展性,因为后者在设计时就已经避免了许多会影响到可扩展性的因素,比如
采用更加简单的数据模型、对元数据和应用数据进行分离以及放松对一致性的要求等等[4]。另外,在使用方式上,云数据库也不同于传统的分布式数据库。云数据库通常采用多租户模式,即多个租户共用一个实例,租户的数据既有隔离又有共享,从而解决数据存储的问题,同时也降低了用户使用数据库的成本。
四、云数据库的影响
    (一)数据存储的变革。[5]云数据库把以往数据库中的逻辑设计简化为基于一个地址的简单访问模型。但为了满足足够的带宽和数据容量,物理设计就显得更为重要。以往我们采用商用数据库产品设计存储时,一般采用两种存储方式:NAS(网络连接存储)和SAN(存储区域网络)。不过,因为受到单个主机和数据库集节点的限制,我们在单个集中能协同的机器非常有限,这对于云数据库环境的应用远远不够。从应用成本和容错的角度分析,Google 和Amazon 尝试了一种全新的选择,即分散文件集。所谓“分散文件”既可能是运行在某个有完善管理数据中心的SAN 集,也可能是运行在某“堆”老旧服务器上的磁盘塔。尽管存储效率不同,但对于云数据库而言,保存在它们之上的数据只要可以按照客户的相应要求保质保量交付就可以。
    (二)极大地改变企业管理数据的方式。Forrester Research 分析师Yuhanna 指出,18%的企业正在把目光投向云数据库。对于中小企业而言,云数据库可以允许他们在Web上快速搭建各类数据库应用,越来越多的本地数据和服务将逐渐被转移到云中。企业用户在任意地点通过简单的终端设备,就可以对企业数据进行全面的管理。此外,云数据库可以很好地支持企业开展一些短期项目,降低开销,而不需要企业为某个项目单独建立昂贵的数据中心。但是,云数据库的成熟仍然需要一段时间。中小企业会更多地采用云数据库产品,但是对于大企业而言,云数据库并非首选,因为大企业通常自己建造数据中心。[6]
(三)催生新一代的数据库技术。IDC 的数据库分析师Olofson 认为,云模型提供了无限的处理能力以及大量的RAM,因此,云模型将会极大地改变数据库的设计方式,将会出现第三代数据库技术。第一代是20 世纪70 年代的早期关系数据库,第二代是20 世纪80 年代~90 年代的更加先进的关系模型。第三代的数据库技术,要求数据库能够灵活处理各种类型的数据,而不是强制让数据去适应预先定制的数据结构。事实上,从目前云数据库产品中的数据模型设计方式来看,已经有些产品(比如SimpleDB,Hbase,Dynamo,BigTable)放弃传统的行存储方式,而采用键/值存储,从而可以在分布式的云环境中获得更好的性能。可以预期的是,云数据库将会吸引越来越多的学术界的目光,该领域的相关问题也将
成为未来一段时间内数据库研究的重点内容,比如云数据库的体系架构和数据模型等等。
五、云数据库的缺陷和风险
    (一)数据的传输问题。虽然概念上云数据库与传统的应用流程差别不大,但这个通路因为超出了用户的控制范围,因此在实际执行效率、服务响应质量方面增加了很多不确定的因素。例如,用户把客户业务办理申请的信息提交给云数据库,由于企业的业务人员散布在亚洲、欧洲的几个中心城市,所以云运营商把他们实际存储在莫斯科、东京、班加罗尔这三个中心。但有一天老板在张家界的会议期间需要尽快获得一个投资豆油的敏感客户列表,以便对这一人加强审查和防范。IT 部门提交了一个查询,接着一个很壮观的查询便在地球上“蔓延”,这个时间可能就如您打开Google Russia、Google Japan 和Google India 那么长,但究竟有多长,还得看情况。不过这还不算最糟糕的,IT部门提交了一个查询,结果几毫秒内就获得一个服务不可用的异常,您的Web 服务器运转正常、应用服务器健康状态非常好,可惜没有数据,因为数据并不在您自己手中。[7]
    (二)数据安全问题。用户对于云库安全,最关心的是用户怎么相信云库提供商,或者云库提供商的内部工作人员,不会利用数据去干非法行为。比如我们的个人隐私被泄露、云数据库服务
或者网上购物的购买行为被记录等,对于用户来讲,这都侵犯了用户的隐私。对于企业的核心数据来说,就绝对没那么简单。目前比较成熟的云服务商业模式,大多数还是云服务提供商本身是内容提供商,企业能够把核心业务直接迁移至公共云端,成功的案例有限。这会成为制约未来云计算发展的一个重要障碍。
六、现有的云数据库产品
云数据库供应商主要分为 3 类:
• 传统的数据库厂商:Teradata,Oracle,IBM DB2 和Microsoft SQL Server;
• 涉足数据库市场的云供应商:Amazon,Google 和Yahoo;
• 新兴小公司:Vertica,LongJump 和EnterpriseDB。
就目前阶段而言,虽然一些云数据库产品,如Google BigTable,SimpleDB 和HBase,在一定程度上实现了对于海量数据的管理,但是这些系统暂时还不完善,只是云数据库的雏形。让这些系统支持更加丰富的操作以及更加完善的数据管理功能(比如复杂查询和事务处理)以满足更加丰富的应用,仍然需要研究人员的不断努力。
表1 给出了目前市场上常见的云数据库产品,对于其中一些主要产品,下面会作简要介绍。
(一)Amazon的云数据库产品
Amazon 是云数据库市场的先行者。Amazon 除了提供著名的S3 存储服务和EC2 计算服务以外,还提供基于云的数据库服务Dynamo。Dynamo 采用“键/值”存储,其所存储的数据是非结构化数据,不识别任何结构化数据,需要用户自己完成对值的解析。Dynamo 系统中的键(key)不是以字符串的方式进行存储,而是采用md5_key(通过md5 算法转换后得到)的
方式进行存储,因此,它只能根据key 去访问,不支持查询。SimpleDB 是Amazon 公司开发的一个可供查询的分布数据存储系统,它是Dynamo“键/值”存储的补充和丰富。顾名思义,SimpleDB 的目的是作为一个简单的数据库来使用,它的存储元素(属性和值)是由一个id 字段来确定行的位置。这种结构可以满足用户基本的读、写和查询功能。SimpleDB 提供易用的API 来快速地存储和访问数据。但是,SimpleDB 不是一个关系型数据库,传统的关系型数据库采用行存储,而SimpleDB 采用了“键/值”存储,它主要是服务于那些不需要关系数据库的Web 开发者。
Amazon RDS(Amazon relational database service)是Amazon 开发的一种Web 服务,它可以让用户在云环境中建立、操作关系型数据库(目前支持MySQL 和Oracle 数据库)。用户只需要关注应用和业务层面的内容,而不需要在繁琐的数据库管理工作上耗费过多的时间。
此外,Amazon 和其他数据库厂商开展了很好的合作,Amazon EC2 应用托管服务已经可以部署很多种数据库产品,包括SQL Server,Oracle 11g,MySQL 和IBM DB2 等主流数据库平台,以及其他一些数据库产品,比如EnerpriseDB。作为一种可扩展的托管环境,开发者可以在EC2 环境中开发并托管自己的数据库应用。
(二)Google的云数据库产品
Google BigTable 是一种满足弱一致性要求的大规模数据库系统。Google 设计BigTable 的目的,是为了处理Google 内部大量的格式化及半格式化数据。目前,许多Google 应用都是建立在BigTable 上的,比如Web 索引、Google Earth、Google Finance、Google Maps 和Search History。BigTable 提供的简单数据模型,它允许客户端对数据部署和格式进行动态控制,并且描述了BigTable 的设计和实现方法。BigTable 是构建在其他几个Google 基础设施之上的:首先,BigTable 使用了分布式Google 文件系统GFS(Google file system)来存储日志和数据文件;其次,BigTable 依赖一个高可用的、持久性的分布式锁服务Chubby;再次,BigTable 依赖一个簇管理系统来调度作业、在共享机器上调度资源、处理机器失败和监督机器状态。
但是,与Amazon SimpleDB 类似,目前来说,BigTable 实际上还不是真正的DBMS(database management system),它无法提供事务一致性、数据一致性。这些产品基本上可以被看成是云环境中的表单。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。