云计算与web数据管理

wangfy

贡献于2010-10-25

字数:0 关键词: 分布式/云计算/大数据

云计算与 Web 数据管理 王仲远 随着Web(网络)的兴起,如何有效的管理Web数据,一直是一个热门的研究课题。而云计算, 自其诞生之日起,就离不开Web,以及Web上的数据管理。 在Web发展的初期,大量页面以HTML页面(即静态页面)的形式存在,杂乱无章,无法进行有效 管理。之后,搜索引擎的产生,在一定程度上将这些海量页面进行了重新组织,建立索引,提供给 用户进行搜索。但是,Web经过一段时间的繁荣后,人们已经不仅仅满足于那些静态页面的浏览,于 是基于数据库的Web应用应运而生。这些数据深藏在各个查询接口后面,因此称为Deep Web(深层网 络),而原有的网络则对应称为Surface Web(浅层网络)。为了解决这个问题,相关领域研究人员开 始探寻如何集成和管理这些搜索引擎无法获得但是数据量却是原有浅层网络数据量数百倍的“深层 数据”。 另一方面,虽然Deep Web的产生,极大地丰富了互联网的数据量,但是到21世纪初期,随着互 联网Dot-Com泡沫破灭,使得Web发展一度陷入低谷。不过,之后Web2.0的兴起,用户一同参与网站 的内容建设,让Web迎来了一个新的发展高峰期。同时也使得Web数据管理进入了一个新的阶段,这 就是在“云计算”平台下的Web规模海量数据的有效管理的研究。 本文就将依照Web发展历程的各个阶段,深度介绍云计算的兴起与Web数据管理研究的变迁,揭 示它们之间的种种联系。 Deep Web数据集成的研究 随着数据库在Web上的应用越来越成熟,基于数据库开发的各种各样的Web应用服务也越来越多。 大家经常会访问的一些网站,例如电子商务网站、招聘及求职信息网站、各种内容管理系统以及SNS 网站(社会网络网站)等等,其背后都有数据库的存在,这些数据库就称为Web数据库。由于这种基 于Web数据库开发的网络应用逐渐兴起,导致Web上的数据量急剧增长。 2001年7月BrightPlanet.com针对Deep Web的数量做了一次比较全面的统计,其发表的白皮书称: 整个Web上大约有43,000-96,000个Web数据库,以及7,500TB的数据(约为Surface Web的500倍)。而 经过数年的发展,根据UIUC所发表的一篇Deep Web综述估计,截至2004年,全世界范围内Deep Web 的网站数量已经达到307,000个,其背后的数据库数量已经达到366,000-535,000个。虽然这两年没 有新的权威统计报告出来,但是我们有理由相信,Web数据库的数量以及Deep Web的规模仍然是呈现 上升趋势。 面对如此多的“隐藏数据”,传统搜索引擎根据链接进行网页抓取的方式却不能完全发掘这些数 据,因为有许多数据必须是用户提交一个查询之后才会动态生成的。并且,虽然一些Deep Web网站 为自身流量考虑,为搜索引擎提供一些数据页面浏览的入口,造成搜索引擎也能够索引动态页面的 图 1 Web 发展历程与 Web 数据管理的演化 现象(例如我们搜索一本书的时候,常常能够在搜索结果中发现购书网站的页面),但是根据UIUC的 统计,目前主流搜索引擎例如Google、Yahoo只能够覆盖到其中32%的数据,而大部分数据仍然不能 够通过搜索访问到。因此,在Deep Web上进行大规模数据集成显得越来越急迫。 为此,WAMDM实验室(网络与移动数据管理实验室)也成立了一个Deep Web数据集成研究项目: Jobtong项目。这个项目最初是研究在工作信息领域上的数据集成,我们期望通过这种研究,形成一 套面向领域的Deep Web数据集成的方法。目前,此项目已经取得初步成功,并已不再局限于工作信 息领域(但我们习惯上仍称此项目为Jobtong项目)。我们已经成功在多个领域快速地构造了这样的应 用,其中的一个演示网站为:Jobtong(工作通, http://www.jobtong.cn )。 Deep Web XML 提供查询接 口的网页 Deep Web …… 配置文件 配置文件 配置文件 配置文件 统一集成程序 本地服务器 图2展示了Jobtong集成系统的整体框架图,该系统主要包括:底部被集成的数据源,例如Deep Web 数据、XML数据、以及其它提供接口查询的网页;多个配置文件单元,这多个配置文件单元的每一个 与上述多个数据源的每一个相对应;统一的集成单元,用于集成底层的各个数据源,它利用数据源 所对应的配置文件,采用统一的方式,对数据源中的数据进行抽取;以及本地服务器,用于保存集 成起来的所有数据,这样用户检索时,便可以直接在本地服务器上进行检索,提高效率。 这样的集成系统可以快速挖掘Deep Web中的数据,并将其方便地提供给用户进行检索,从而解 决了对于这些海量“隐藏数据”的获取问题。据我所知,目前Google内部也有相关小组在做此方面 的研究,相信在不远的未来,我们也可以看到Google对于这部分数据的处理与展现。 Google文件系统以及BigTable 当然,如果仅仅能够将这些海量数据获取,但不能够进行合理的组织,那么也不能称作对 这些Web数据进行了有效的管理。为此,我们将要介绍Google的文件系统以及其开发的BigTable(大 表)系统,正是这些系统,组成了一种云计算的基础软件平台的雏形。 当我们使用Google进行关键字搜索,享受Google强大搜索所带来的便捷的时候;当我们赞 叹Google地图搜索是如此之精确以至于能够清楚地看到我们所居住的房屋的时候;当我们已习惯使 用Google个性化主页,让Google按照我们的想法随心所欲地提供我们想要的资讯的时候……是否有 人静下心来思考这样一个问题:在这样强大的搜索背后,究竟是什么技术在支持呢?是什么系统在 管理这样一个已超出我们所能想象的巨大的数据资源呢?是数据库吗?No! 图 2 Jobtong 集成系统的整体框架图 Google说“现有的数据库没法满足我们海量数据存储的需求,即使有,存储及查找代价也 会让人无法忍受”。Google每天所面对的,是成千上万台服务器,是上千TB 的数据,是每秒数百万 的读/写。而且,在这样的情况下,还要实现高效的查询。因此,Google理直气壮地说:“数据库, No!” 于是Google开发了自己的文件系统——Google File System(Google文件系统,简称GFS)。 那么,Google File System与以往的文件系统有什么区别吗? Google 的文件系统是一个大规模的分布式文件系统,它能够处理大规模的分布式数据。对照 图 3,我们可以知道它包括 Master(控制服务器)和 Chunkserver(块服务器),Master 定期与每一 个 Chunkserver 通信,给 Chunkserver 传递指令并收集它的状态。 与应用程序相联的 GFS Client(GFS 客户端)实现了文件系统的 API 并与 Master 和 Chunkserver 通信,以代表应用程序读和写数据。GFS Client 与 Master 的交换只限于对 Metadata(元数据)的 操作,而所有数据方面的通信都是直接和 Chunkserver 联系。 Master 负责管理元数据,它主要存储文件和块的名空间、文件到块之间的映射关系以及每一个 块副本的存储位置;Chunkserver 存储块数据,一个典型的块大小为 64M,它通过懒惰算法(Lazy space allocation)来管理存储在它上面的块。在 Chunkserver 中,一个块可能有多个备份,这样做的目 的是为了保障数据的安全性,当然,也能够实现负载均衡。 不过,Google 文件系统只是实现了对于海量数据的组织问题,它能够高效的读写这些数据,就 如同操作系统中的文件系统一样。而在操作系统中,如果要管理结构化数据的话,还是需要利用在 其之上的数据库进行管理。那么,面对这些海量 Web 数据,也需要一个类似于数据库一样的数据管 理系统,于是 Google 研发了 BigTable。 BigTable,顾名思义,就是一张“大表”,由稀疏多维表组成的面向列存储的数据管理系统。Google 于 2004 年初开始研发,到现在它已经运行了四年多,基本上能够满足 Google 的需求:处理海量数 据,实现高速存储与查找。 BigTable 由行和列组成,每个单元(BigTable Cell)是一个三元组,由行、列、时间戳组成。 在一个典型的单元格中,行可以是 URLs,列可以是属性/规则,时间戳则是用来标识版本的,它可以 在多个备份中,将最新的信息提供给用户。 BigTable 就如它的名字一样,是一张“大表”,以至于为了便于管理,需要将 Bigtable 按照行 拆分成 Tablets。如果说 BigTable 是一块布,Tablets 就好像是从这块布上扯下的布条。即使这样, 图 3 Google 文件系统体系结构 Tablets 也是不小的。每个Tablet 大约有 100~200M,而每台机器大约会存储100 个左右的 Tablets。 由于 Google 采用的是廉价的 PC 机,而不是使用高端的服务器,因此采用 Tablets,就将 BitTable 化整为零,分布式地存放在各台 PC 机上。 同时,由于采用了 Tablets,也非常容易地实现了负载均衡和快速恢复。如果某台机器的某个 Tablet 经常被访问,则它可以将原来存储在它上面的其它Tablet 转移到别的机器上,然后专门负责 这个 Tablet,而这个 Tablet 也可以完全载入内存,提高访问速度。如果某台机器坏了,不难想象, 这台机器上的 Tablets 只需要由其它 100 台机器,每台机器恢复一个 Tablet,系统就重建起来了, 因而机器损坏的影响也会降到最低。这点其实是很重要的,因为Google 采用的是最普通的机器。“如 果你买了一台机器,也许用三年也不会有什么太大的问题;但如果你拥有上千台机器,你要做好每 天 down 掉一台的准备”。Google 拥有许许多多的普通 PC,因此,每天都会有机器不断损坏,也会又 机器不断补充进来,在这种情况下,具有非常好的容错性是很重要的一点。 为了实现对数据的管理和恢复,日志是必不可少的。但是,如果每个 Tablet 就有一个日志,那 么一台机器上就会有许许多多的日志,对于这些日志本身的管理就将是一个巨大的工程,所以 Google 选择了同一台机器上的所有 Tablets 共享一个日志的方式。但这种方式虽然减少了日志的的个数, 却带来另一个问题:一个日志块将很快被写满,于是系统将非常频繁地开始一个新的日志块。看来, 鱼和熊掌确实是不可兼得啊! 同时,由于 Tablets 采用的是不可修改的(immutable)的 SSTables 存储方式,因此系统将产 生大量的冗余数据,面对这些冗余数据,Google 主要采取两种压缩方式进行数据压缩:BMDiff 和 Zippy。这两种压缩方式,与 Gzip 和 LZW 等压缩方式相比,在压缩率上并没有什么优势,但它们都 有一个很大的特点,这就是压缩速率和解压速率都非常快,而这正是 Google 所需要的。能够快速地 压缩以节约空间,又能快速地解压获得数据,这对 Google 来说,远比其它特性要重要得多。 至此,一个建立在 Google File System 上的 BigTable 系统就已呈现在我们面前,从这个系统 中,我们可以看到 Google 的核心理念:低价的机器,高速的处理,大量的冗余,极强的容错。 采用了 BigTable 后,Google 完全实现了这些理念。 Web 2.0的兴起带来数据爆炸性增长 当我们有了 Deep Web 的数据集成技术以及 Google 的文件系统以及 BigTable 之后,就能够有效 图 4 Google 的 BigTable 系统 的获取、组织和管理各种结构化和非结构化的数据。但是,这还不足以面对日新月异的 Web 上产生 的各种问题。其中一个重要的变化就是 Web2.0 的兴起。 随着 Dot-Com 泡沫的破灭,互联网发展也陷入了低谷。但是随着 Web2.0 概念的提出,用户 突然发现自己不仅仅能够是网站内容的浏览者,更可以是网站内容的贡献者。博客、实名网络社区、 照片分享网站、视频分享网站的兴起,极大地激起了网络用户的兴趣。人们乐此不疲地在网上创造 属于自己的数据,并与其他人分享。这时,就如同当年的 Web 数据库等兴起一样,Web2.0 又一次给 Web 带来了数据量的暴增。同时也对服务器的数据处理能力提出了更高的要求。 在这个 Web2.0 的时代,Flickr、Fotolog、YouTube 等网站的访问量,在 2006 年第一、第二季 度时已经逐渐超过传统门户网站(如 aol.com),其中,YouTube 的访问量更是节节攀升,将传统门 户网站远远抛在后面。用户数量多以及用户参与程度高,是这些网站的特点。因此,如何有效地为 如此巨大的用户群体服务,让他们参与时能够享受方便、快捷的服务,成为这些网站不得不解决的 一个问题。这些需求,使得云计算呼之欲出。 图 5(a) 2004-2007 年传统门户与 Web2.0 网站访问量对 图 5(b) 2007-2008 年传统门户与 Web2.0 网站访问量对 一个直观的解决办法就是:如果一台机器完成不了这项工作,那么就让一百台、一千台机器一 同来完成这项工作。实际上,早在上世纪 90 年代,提出的网格计算的思想,就考虑充分利用空闲的 CPU 资源,搭建平行分布式计算。而在 1999 年出现的 SETI@home 更是成功的将网格计算的思想付诸 实施,构建了一个成功的案例。 而云计算与网格计算有许多相似之处,也是希望利用大量的计算机,构建出强大的计算能力。 但是相比网格计算,云计算还有着更为宏大的目标,它希望能够利用这样的计算能力,在其之上构 建稳定而快速的存储以及其它丰富的服务。而 Web2.0 正为云计算提供这样的机遇。在 Web2.0 的引 导下,只要有一些有趣而新颖的想法,就能够基于云计算快速搭建 Web 应用。这正是云计算所带来 的直接变化。 “云数据库”是数据库以及 Web 数据管理发展的未来吗? 任何一种新技术的产生,必然都是为了解决原有技术无法解决的问题。就如当初数据库取代文 件系统,解决了文件系统的冗余性、数据存取困难、不一致性等问题。而在 Web 应用环境下,Web 规模的文件系统又解决了数据库难以处理的超大数据量、响应速度较低等问题。 文件系统 数据库 Web规模的 文件系统 云数据 库?? 云计算也是如此,它的产生不是一蹴而就,而是在 Web 发展过程中以及 Web 数据管理研究的演 化中产生的。因此,云计算是 Web 服务发展到一定阶段的必然产物。而在云计算平台上,未来也必 然会产生一个能够有效管理这些海量数据的系统,我们不妨将其称为“云数据库”。虽然现在 Google 的 BigTable 以及 Yahoo 工程师所支持的 HBase 在一定程度上完成了对于这些海量数据的管理,但是 这些系统还只是“云数据库”的雏形,要在这些系统上支持更加丰富的操作以及更加完善的数据管 理功能,以满足更加丰富的应用,仍然还有很长一段路要走。 云计算对于Web发展的影响 目前,IT 巨头们都在关注云计算,但是各个巨头们所声称的云计算概念或许并不完全一样。因 为他们的关注点是在不同的层面上。比如,IBM 关注于“云”底层的硬件架构上,Google 关注于一 般的搜索和数据处理上,而微软关注于上层的软件。他们之间应该会是一个既竞争又合作的关系。 但不可否认的是,IT 巨头们的如此重视和投入必然会使云计算越来越清晰,而不是只停留在美好的 概念上。 那么随着云计算的兴起,又将给我们带来什么呢? 对于中小企业而言,云计算使得他们能够快速在 Web 上搭建自己想要的各种应用,而不用再为 服务器资源而烦恼,并能够有效的节约成本。在云计算时代,各种创新的有意思的想法将促就一大 批新的 IT 企业的成长。 对于普通用户而言,服务和数据的 Web 化趋势是必然的,即越来越多的在本地的服务和数据会 逐渐转移到 Web 中。而用户的个人电脑以及其它设备,将成为享受这些服务的终端,用户也不必再 为自己个人电脑上的软件维护与升级而烦恼。当然,这很可能还需要一段较长的时间才能实现。但 是,这才是云计算发展的高级目标。 对于学术界而言,要想真正获取、组织、管理好这样 Web 规模的数据,仍然有许多亟待解决的 问题。现有的云计算系统中,有许多功能是为特定应用而开发,虽然高效,却不一定能够推广。因 而,能否在“云数据库”中,实现原有数据库系统中丰富的查询功能、高效复杂的索引以及强大的 事务处理功能,都是非常具有挑战性的难题。 面对这样让人心潮澎湃的风起云涌的变革性技术,我们应该把握好自己在其中的角色,因为机 遇就在我们每一个人的手中!

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档