您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 云计算时代的数据库研究
数据库原理云计算时代的数据库研究摘要:叙述云计算基础知识,比较云计算数据库的优点,介绍云计算时代的数据库研究。关键词:云计算;数据库;关键型;NoSQL数据库1.引言随着云计算时代的到来,各种类型的互联网应用层出不穷,对与此相关的数据模型、分布式架构、数据存储等数据库相关的技术指标也提出了新的要求。虽然传统的关系型数据库已在数据存储方面占据了不可动摇的地位,但由于其天生的限制,已经越来越无法满足云计算时代对数据扩展、读写速度、支撑容量以及建设和运营成本的要求。云计算时代对数据库技术提出了新的需求,主要表现在以下几个方面。●海量数据处理:对类似搜索引擎和电信运营商级的经营分析系统这样大型的应用而言,需要能够处理PB级的数据,同时应对百万级的流量。●大规模集群管理:分布式应用可以更加简单地部署、应用和管理。●低延迟读写速度:快速的响应速度能够极大地提高用户的满意度。●建设及运营成本:云计算应用的基本要求是希望在硬件成本、软件成本以及人力成本方面都有大幅度的降低。云计算基础知识公有云:公有云通常指第三方提供商用户能够使使用的云,公有云一般可通过Internet使用。能够以低廉的价格,提供有吸引力的服务给最终用户,创造新的业务价值,公有云作为一个支撑平台,还能够整合上游的服务(如增值业务,广告)提供者和下游最终用户,打造新的价值链和生态系统。私有云:私有云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所。私有云可由公司自己的IT机构,也可由云提供商进行构建。在此“托管式专用”模式中,像DMT这样的云计算提供商可以安装、配置和运营基础设施,以支持一个公司企业数据中心内的专用云。此模式赋予公司对于云资源使用情况的极高水平的控制能力,同时带来建立并运作该环境所需的专门知识。企业云:一种基于云计算的,满足企业高扩展性、高可用性、组织和业务快速变更,实现企业协同管理,满足企业扩张、创新升级需求的平台技术框架。随着产业链整合、市场竞争日趋全球化,企业的需求和用户的消费习惯都在改变,企业需要提供简单、快捷的商务云计算服务来满足企业扩张、产业链整合及创新升级的需要。SaaS:SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即可通过互联网使用信息系统。就像打开自来水龙头就能用水一样,企业根据实际需要,从SaaS提供商租赁软件服务。IaaS:laaS提供给消费者的服务是对所有设施的利用,包括处理、存储、网络和其它基本的计、算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、储存空间、部署的应用,也有可能获得有限制的网络组件(例如,防火墙,负载均衡器等)的控制。PaaS:Paas提供给消费者的服务是把客户采用提供的开发语言和工具(例如Java,python,.Net等)开发的或收购的应用程序部署到供应商的云计算基础设施上去。客户不需要管理或控制底层的云基础设施,包括网络、服务器、操作系统、存储等,但客户能控制部署的应用程序,也可能控制运行应用程序的托表格12.关系型数据库的劣势分析“在云计算计划里将找不到关系数据库的影子,这并非偶然,因为关系数据库不适合用于云计算环境“GeirMagnusson,10Gen工程副总裁这样认为。10Gen是一家按需平台服务供应商。Magnusson帮助编写过ApacheGeronimo应用服务器软件,本周在纽约举行的O'ReillyWeb2.0会议上发言中他指出:“云计算是一种不同的技术,不同得足够改变开发者看待问题和解决问题的方式”。“我们将不得不重新审视我们做事的方式”,他说。在发言期间,Magnusson列举了许多被专门开发用于云计算环境的新型数据库,包括Google'的Bigtable,Amazon的SimpleDB,10Gen自己的Mongo,AppJet的AppJet数据库以及甲骨文开源BerkelyDB。Magnusson指出,这些数据库没有一个是关系型的(他特别强调了一个值得注意的例外“Drizzle”,MySQL应用于web环境的一个精装版)。随着Web2.0的发展,传统的关系型数据库在应对超大规模和高并发的SNS类型的网站方面暴露了许多难以克服的问题,主要表现在以下方面。⑴高并发读写速度慢这种情况主要发生在数据量达到一定规模时,由于关系型数据库的系统逻辑非常复杂,使得其非常容易发生死锁等并发问题,导致其读写速度下降非常严重。例如,Web2.0网站要根据用户个性化信息来实时生成动态页面、提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系型数据库勉强可以应付上万次SQL查询,但硬盘I/O往往无法承担上万次的SQL写数据请求。⑵支撑容量有限类似Facebook、Twitter这样的SNS网站,用户每天产生海量的用户动态,每月会产生几亿条用户动态,对于关系型数据库来说,在一张数亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。⑶扩展性差在基于Web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,传统的关系型数据库却没有办法像WebServer那样简单地通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,因此迫切需要关系型数据库能够通过不断添加服务器节点来实现扩展。⑷建设和运维成本高企业级数据库的价格很高,并且随着系统的规模增大而不断上升。高昂的建设和运维成本无法满足云计算应用对数据库的需求。关系型数据库遇到上述难以克服的瓶颈,与此同时,它的很多主要特性在云计算应用中却往往无用武之地。例如,数据库事务一致性、数据库的写实时性和读实时性、复杂的SQL查询特别是多表关联查询。因此,传统的关系型数据库已经无法独立应付云计算时代的各种应用。3.NoSQL数据库数据模型关系型数据库越来越无法满足云计算的应用场景,为了解决此类问题,非关系型数据库应运而生,由于在设计上和传统的关系型数据库相比有了很大的不同,所以此类数据库被称为“NoSQL(NotonlySQL)”系列数据库。与关系型数据库相比,它们非常关注对数据高并发读写和海量数据的存储,在架构和数据模型方做了简化,而在扩展和并发等方面做了增强。目前,主流的Cassandra、SimpleDB、CouchDB、MongoDB以及Redis等。NoSQL常用数据模型包括以下3种。⑴Column-oriented(列式)列式主要使用Table这样的模型,但是它并不支持类似Join这样多表的操作,它的主要特点是在存储数据时,主要围绕着“列(Column)”,而不是像传统的关系型数据库那样根据“行(Row)”进行存储,也就是说,属于同一列的数据会尽可能地存储在硬盘同一个页中,而不是将属于同一个行的数据存放在一起。这样做的好处是,对于很多类似数据仓库的应用,虽然每次查询都会处理很多数据,但是每次所涉及的列并没有很多。使用列式数据库,将会节省大量I/O,并且大多数列式数据库都支持ColumnFamily这个特性,能将多个列并为一个小组。这样做的好处是能将相似列放在一起存储,提高这些列的存储和查询效率。总体而言,这种数据模型的优点是比较适合汇总和数据仓库这类应用。⑵Key-value虽然Key-value这种模型和传统的关系型相比较简单,有点类似常见HashTable,一个Key对应一个Value,但是它能提供非常快的查询速度、大的数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作,虽然不支持复杂的操作,但是可以通过上层的开发来弥补这个缺陷。⑶Document(文档)在结构上,Document和Key-value是非常相似的,也是一个Key对应一个Value,但是这个Value主要以JSON或者XML等格式的文档来进行存储,是有语义的,并且DocumentDB一般可以对Value创建SecondaryIndex方便上层的应用,而这点是普通Key-ValueDB所无法支持的。4.数据库新的研究领域数据库技术和其他计算机技术相结合,能够产生新的研究领域。例如,数据库技术和面向对象技术相结合就产生了面向对象数据库;数据库技术和云计算技术相结合也就产生一个新的研究内容,称之为云计算数据库。云计算数据库当前的主要研究内容包括三个方面:云计算数据库管理系统、云计算数据库集成和支持新的云计算应用。云计算数据库管理系统云计算提供一个平台,这个平台支持系统化的身份鉴别和授权、资源发现、数据传输、进程创建和调度,以及跨异构平台的动态绑定。在云计算提供的这些功能的基础上,可以构造一个安全可靠、具有自主计算能力的高性能云计算数据库管理系统。云计算数据库管理系统最终将成为云计算上的一种重要资源,提供数据管理服务。在构建云计算数据库管理系统方面,第一步的工作是提供一个中间件,将数据库管理系统包装成为云计算服务,以便云计算应用存取云计算数据库。这种做法的好处是,对已有的数据库管理系统基本上不需要做什么改动。进一步的工作是扩展已有的数据库管理系统,让它直接利用云计算提供的功能来实现分布式的数据库和相关的云计算服务。下面是一些扩展已有数据库管理系统时可做的工作:●在云计算上,用户只需要登录一次,就可以使用云计算上所有可用的资源。云计算数据库管理系统需要支持云计算中这种一致性的身份鉴别和授权机制。●很多云计算应用程序在提交任务给数据库管理系统后,需要收到一个任务完成的通知,解决这种订阅/发布问题需要结合云计算数据库管理系统的触发器机制和云计算中的通知服务。●在云计算中,查询结果可以被缓存以便传送给第三方,这意味着,在一个不确定的时间内,云计算数据库管理系统必须保留结果,然后利用云计算数据传输机制传送查询结果到第三方。●在云计算中,分布式查询处理可以利用云计算的资源发现机制了解网络的状态、获得合适的资源来运行分布式查询或存储中间结果。●云计算数据库管理系统应提供资源预留功能,以便参与云计算中的进程调度。●云计算数据库管理系统应该能为云计算记账和支付标准提供必要的信息,以便用户为资源的使用付费。有些云计算问题不是通过简单地扩展已有的数据库管理系统就能够解决的。下面举几个例子来说明这一点:●云计算当中计算和数据资源之间耦合得很紧密,这对于数据库的查询优化是一个挑战。计算任务在哪里执行、需不需要迁移、数据怎样存放、存放在哪里、如何调度在数据上的操作和计算任务、短期优化还是长期优化等等,都需要在查询优化时给予一个整体的、多角度的考虑。●在云计算中,当数据的规模增长到一定的程度时,传输在这些数据上的计算代码会比传输所有数据更为经济。数据上的计算比数据库支持的数据查询要复杂,它可以生成大量的中间结果,需要大量的处理器和在多个云计算结点间传输大量的数据。对于数据上的计算还需要进行监控。当前的数据库管理系统并未准备好成为这种大型计算的宿主,也不支持所需要的监控接口。●传统的数据库管理系统是一个复杂的系统,运行时作为一个整体消耗大量的资源。云计算数据库管理系统最好能由一些组件构成,这些组件可以根据需要来组合完成数据库管理系统的部分或者全部功能。这样做的好处除了可以降低资源消耗,更重要的是,使得在整个系统规模的基础上优化使用数据库资源成为可能。●在云计算中使用注册的方法来发布和查找资源。数据库里面存储有大量的元数据,手工注册这么多元数据是不可行的,但是又如何来完成自动注册呢?自动注册的问题不在于注册这些元数据到云计算中,而在于注册时如何保证这些元数据能为第三方所理解。这个问题也是云计算数据库集成时需要解决的问题。[参考文献]【1】程莹,张云勇,房
本文标题:云计算时代的数据库研究
链接地址:https://www.777doc.com/doc-6182080 .html