|
1.你了解国内外的哪些云数据库?
云数据库供应商主要分为 3 类:
• 传统的数据库厂商:Teradata,Oracle,IBM DB2 和Microsoft SQL Server;
• 涉足数据库市场的云供应商:Amazon,Google 和Yahoo;
• 新兴小公司:Vertica,LongJump 和EnterpriseDB。
就目前阶段而言,虽然一些云数据库产品,如Google BigTable,SimpleDB 和HBase,在一定程度上实现了对于海量数据的管理,但是这些系统暂时还不完善,只是云数据库的雏形。让这些系统支持更加丰富的操作以及更加完善的数据管理功能(比如复杂查询和事务处理)以满足更加丰富的应用,仍然需要研究人员的不断努力。
(一)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),它无法提供事务一致性、数据一致性。这些产品基本上可以被看成是云环境中的表单。
Google 开发的另一款云计算数据库产品是Fusion Tables。它采用了基于数据空间的技术。该技术在上世纪90 年代就已经出现。Google 充分利用了该技术的潜力。Fusion Tables 是一个与传统数据库完全不同的数据库,可以弥补传统数据库的很多缺陷。比如通过采用数据空间技术,它能够简单地解决RDBMS 中管理不同类型数据的麻烦,以及排序整合等常见操作的性能问题。Fusion Tables 可以上传100MB 的表格文件,同时支持CSV 和XLS 格式,并且具有处理大规模数据的能力。
(三)Microsoft的云数据库产品
2008 年3 月,微软通过SQL Data Service(SDS)提供SQL Server 的RDBMS 功能,这使得微软成为云数据库市场上的第一个大型数据库厂商。此后,微软对SDS 功能进行了扩充,并且重新命名为SQL Azure。微软的Azure平台提供了一个WEB 服务集合,可以允许用户通过网络在云中创建、查询和使用SQL SERVER 数据库,云中的SQL SERVER 服务器的位置对于用户而言是透明的。对于云计算而言,这是一个重要的里程碑。SQL Azure 具有以下特性:
• 属于关系型数据库:支持使用TSQL(transact structured query language)来管理、创建和操作云数据库;
• 支持存储过程:它的数据类型、存储过程和传统的SQL Server 具有很大的相似性,因此,应用可以在本地进行开发,然后部署到云平台上;
• 支持大量数据类型:包含了几乎所有典型的SQL Server 2008 的数据类型;
• 支持云中的事务:支持局部事务,但是不支持分布式事务。
(四)开源云数据库产品
HBase和Hypertable 利用开源MapReduce 平台Hadoop,提供了类似于BigTable 的可伸缩数据库实现。MapReduce是Google 开发的、用来运行大规模并行计算的框架。采用MapReduce 的应用更像一个人提交的批处理作业,但是这个批处理作业不是在单个服务器上运行,应用和数据都是分布在多个服务器上。Hadoop 是由Yahoo 资助的一个开源项目,是MapReduce 的开源实现,从本质上来说,它提供了一个使用大量节点来处理大规模数据集的方式。
HBase 已经成为Apache Hadoop 项目的重要组成部分,并且已经在生产系统中得到应用。与HBase 类似的是Hypertable。不过,HBase 的开发语言是Java,而Hypertable 则采用C/C++开发。与HBase 相比,Hypertable 具有更高的性能。但是,HBase 不支持SQL(structual query language)类型的查询语言。甲骨文开源数据库产品BerkelyDB 也提供了云计算环境中的实现。
(五)其他云数据库产品
Yahoo! PNUTS是一个为网页应用开发的、大规模并行的、地理分布的数据库系统,它是Yahoo!云计算平台重要的一部分。Vertica Systems 在2008 年发布了云版本的数据库。10Gen 公司的Mongo、AppJet 的AppJet数据库也都提供了相应的云数据库版本。M/DB:X 是一种云中的XML 数据库,它通过HTTP/REST 访问。FathomDB 旨在满足基于Web 的公司提出的高传输要求,它所提供的服务更倾向于在线事务处理而不是在线分析处理。IBM 投资的EnerpriseDB 也提供了一个运行在Amazon EC2 上的云版本。LongJump 是一个与Salesforce。com 竞争的新公司,它推出了基于开源数据库PostgreSQL 的云数据库产品。Intuit QuickBase 也提供了自己的云数据库系列。麻省理工学院研制的Relational Cloud可以自动区分负载的类型,并把类型近似的负载分配到同一个数据节点上,而且采用了基于图的数据分区策略,对于复杂的事务型负载也具有很好的可扩展性。此外,它还支持在加密的数据上运行SQL 查询。
下面列举的是最常用的几种云数据库产品:
mazon Web Services
Amazon Web Services上可以使用多种基于云端的数据库,有关系型的也有非关系型的。Amazon Relational Database(RDS)上可以运行MySQL、Oracle以及SQL Server等多种实例,而Amazon SimpleDB更是个专为小型用户设计的弱数据结构模型数据库。在NoSQL方面,Amazon DynamoDB更采用了SSD方案,并且自动的将工作复制到3个以上的可用空间。Wemer Vogles —— AWS CTO更透露说,DynamoDB是AWS史上增速最快的服务;Aamazon还发布了一些数据管理服务,比如:新发布的数据仓库Redshift以及Data Pipeline(用于管理多来源数据)。
EnterpriseDB
EnterpriseDB专注于开源的PostgreSQL数据库,但是它赖以成名的却是Oracle数据库应用程序上的实力。通过使用EnterpriseDB的Postgres Plus Advance Server,用户可以通过EnterpriseDB使用为本地Orcale数据库编写的应用程序。EnterpriseDB已同时实现对HP和AWS的支持。EnterpriseDB还同时具备了二进制复制及周期性备份。
Garantia Data
Garantia为用户提供了一个网关服务,通过这个服务用户可以在AWS公有云内存中运行开源的Redis和Memcached非关系数据库服务。使用Garantia的软件可以帮助开发者为这些开源数据平台自动的扩展节点,创建集群以及容错模型。
Google Cloud SQL
Google的云数据库服务主要出台了两个产品:Google Cloud SQL和Google BigQuery;Google Cloud SQL被Google打造成一个类MySQL的完全关系型数据库基础设施,而Google BigQuery则被塑造成在Google云基础设施上运行大数据集查询的分析工具。
Microsoft Azure
微软使用其SQL Server技术提供一个关系型数据库,允许用户直接访问云中SQL数据库或者在虚拟主机中托管SQL服务器实例。微软同时还强调混合型数据库,使用SQL Data Sync整合了用户本地及Azure云上的数据。微软同样有个基于云的NoSQL数据库 —— Tables,Blobs文件(2进制对象存储) —— 专门为媒体文件(视频、音频)做了优化。
MongoLab
在NoSQL世界中,有各种各样的数据库平台可以选择,包括MongoDB。MongoDB允许用户使用多个云供应商提供的服务访问数据库,包括:AWS、Azure和Joyent。就像其它的网关类型服务,MongoLab同样在应用层整合了多种PaaS工具。MongoLab既可以在共享的环境中访问,也可以在专用的环境中访问;而后者的开销通常比前者来的大。
Rackspace
Rackspace通过Cloud Databases实现了数据库云端访问以及托管双类型。Rackspace强调了Cloud Databases的container-based虚拟化,该公司指出这将赋予数据库服务远甚于基于纯虚拟化基础设施的性能。Cloud Databases还整合了SAN网络存储 —— 基于OpenStack平台。这个月Rackspace还将在云端发布一个来自Cloudant的NoSQL数据库。
SAP
企业软件巨头SAP通过HANA踏上了云端,一个建立在内存技术上的平台。HANA中的云数据库还补充了该公司其它的本地数据库工具(比如Sybase),现在只支持AWS公有云中使用。HANA同时还包括了其它非数据库应用,包括了商业管理工具和应用程序开发工具。
StormDB
不同于其它的云数据库,StormDB是在实体服务器中运行其分布的关系型数据库;这就意味着没有虚拟主机的存在。StormDB官员指出这样可以带来更好的性能及更简易的管理,因为用户不需要去给他们的数据库选择虚拟主机的大小。然而即使使用的是实体服务器,用户还是在共享使用集群中的服务器,虽然StormDB承诺所有用户的数据库都是独立的。StormDB同样在云中对数据库进行自动分片,该公司正在运行一个免费的测试版。
Xeround
Xeround是个可以横跨多个云供应商及平台去部署可扩展MySQL数据库的管理工具。Xeround提供了很高的可靠性和扩展性,可以横跨多个云供应商工作(比如:AWS,Rackspace、Joyent、HP以及OpenStack和Citrix平台)。
2.你认为云数据库和传统数据库最大的区别是什么?两者相比较而言分别有哪些优缺点?
云数据库是部署和虚拟化在云计算环境中的数据库。在云数据库应用中,客户端不需要了解云数据库的底层细节,所有的底层硬件都已经被虚拟化,对客户端而言是透明的。它就像在使用一个运行在单一服务器上的数据库一样,非常方便、容易,同时又可以获得理论上近乎无限的存储和处理能力。
云数据库与传统的分布式数据库非常相似,但两者有着不同的地方。分布式数据库是计算机网络环境中各场地或节点上的数据库的逻辑集合。逻辑上它们属于同一系统,而物理上它们分散在用计算机网络连接的多个节点,并统一由一个分布式数据库管理系统管理。
分布式数据库已经存在很多年,它可以用来管理大量的分布存储的数据,并且通常采用非共享的体系架构。云数据库和传统的分布式数据库具有相似之处,比如,都把数据存放到不同的节点上。但是,分布式数据库在可扩展性方面是无法与云数据库相比的。由于需要考虑数据同步和分区失败等开销,前者随着节点的增加会导致性能快速下降。而后者则具有很好的可扩展性,因为后者在设计时就已经避免了许多会影响到可扩展性的因素,比如采用更加简单的数据模型、对元数据和应用数据进行分离以及放松对一致性的要求等等。另外,在使用方式上,云数据库也不同于传统的分布式数据库。云数据库通常采用多租户模式,即多个租户共用一个实例,租户的数据既有隔离又有共享,从而解决数据存储的问题,同时也降低了用户使用数据库的成本。
云数据库具有以下特性:
(1) 动态可扩展:理论上,云数据库具有无限可扩展性,可以满足不断增加的数据存储需求。在面对不断变化的条件时,云数据库可以表现出很好的弹性。例如,对于一个从事产品零售的电子商务公司,会存在季节性或突发性的产品需求变化;或者对于类似Animoto 的网络社区站点,可能会经历一个指数级的增长阶段。这时,就可以分配额外的数据库存储资源来处理增加的需求,这个过程只需要几分钟。一旦需求过去以后,就可以立即释放这些资源。
(2) 高可用性:不存在单点失效问题。如果一个节点失效了,剩余的节点就会接管未完成的事务。而且在云数据库中,数据通常是复制的,在地理上也是分布的。诸如Google,Amazon 和IBM等大型云计算供应商具有分布在世界范围内的数据中心,通过在不同地理区间内进行数据复制,可以提供高水平的容错能力。例如,Amazon SimpleDB 会在不同的区间内进行数据复制,因此,即使整个区域内的云设施发生失效,也能保证数据继续可用。
(3) 较低的使用代价:通常采用多租户(multi-tenancy)的形式,这种共享资源的形式对于用户而言可以节省开销;而且用户采用按需付费的方式使用云计算环境中的各种软、硬件资源,不会产生不必要的资源浪费。另外,云数据库底层存储通常采用大量廉价的商业服务器,这也大幅度降低了用户开销。
(4) 易用性:使用云数据库的用户不必控制运行原始数据库的机器,也不必了解它身在何处。用户只需要一个有效地链接字符串就可以开始使用云数据库。
(5) 大规模并行处理:支持几乎实时的面向用户的应用、科学应用和新类型的商务解决方案。
云数据库的缺陷和风险:
(一)数据的传输问题。虽然概念上云数据库与传统的应用流程差别不大,但这个通路因为超出了用户的控制范围,因此在实际执行效率、服务响应质量方面增加了很多不确定的因素。例如,用户把客户业务办理申请的信息提交给云数据库,由于企业的业务人员散布在亚洲、欧洲的几个中心城市,所以云运营商把他们实际存储在莫斯科、东京、班加罗尔这三个中心。但有一天老板在张家界的会议期间需要尽快获得一个投资豆油的敏感客户列表,以便对这一人群加强审查和防范。IT 部门提交了一个查询,接着一个很壮观的查询便在地球上“蔓延”,这个时间可能就如您打开Google Russia、Google Japan 和Google India 那么长,但究竟有多长,还得看情况。不过这还不算最糟糕的,IT部门提交了一个查询,结果几毫秒内就获得一个服务不可用的异常,您的Web 服务器运转正常、应用服务器健康状态非常好,可惜没有数据,因为数据并不在您自己手中。
(二)数据安全问题。用户对于云库安全,最关心的是用户怎么相信云库提供商,或者云库提供商的内部工作人员,不会利用数据去干非法行为。比如我们的个人隐私被泄露、或者网上购物的购买行为被记录等,对于用户来讲,这都侵犯了用户的隐私。对于企业的核心数据来说,就绝对没那么简单。目前比较成熟的云服务商业模式,大多数还是云服务提供商本身是内容提供商,企业能够把核心业务直接迁移至公共云端,成功的案例有限。这会成为制约未来云计算发展的一个重要障碍。
3.你所在的公司会不会选择云数据库代替传统数据库?请说明理由。
云数据库目前来说在数据传输和安全方面做的不够完美,就我们所在的金融公司来说,很多数据是非常重要,安全性要求非常高。这些数据库是分布在内部网络中,不能放在公网上。不会选择云数据库来代替目前的传统数据库。
|
|