1.3 新型数据库应用的发展
关系数据库理论与技术是20世纪70年代为了满足各类企业或组织的数据管理需求而提出的。限于以往数据采集手段的限制以及当时的应用需求,关系数据库技术要求存储的数据必须满足特定的要求,例如属性值不可分的1NF要求,以及实体之间只能通过外码建立联系等。但是,随着计算机网络技术的发展,尤其是20世纪90年代以来的互联网应用的急速发展,许多新型的数据库应用开始出现。它们对传统的关系数据库技术提出了极大的挑战,也促进了新型数据库技术的发展。本节主要介绍当前一些新型的数据库应用。
1.3.1 分布式数据库应用
分布式数据库(distributed databases,DDB)通常指物理上分散而逻辑上集中的数据库系统。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。图1-9给出了分布式数据库应用的一个示例。
图1-9 分布式数据库应用示例
在分布式数据库应用中,每个站点(site)自身具有完全的本地数据库系统,所有站点协同工作,组成了一个逻辑上统一的数据库。站点数据由分布式DBMS(DDBMS)管理——DBMS+分布式扩展模块。分布式数据库系统中的应用可分为本地应用(局部应用)和全局应用,用户也可以相应地分为本地用户和全局用户。本地应用和本地用户只能访问其所注册的那个站点上的数据,而全局应用和全局用户则可访问多个站点上的数据。以银行系统为例,目前很多银行都建立了全国通存通兑系统。利用该系统,不仅可以使一个支行的用户通过访问支行的账目数据库来完成现金的存取等交易,实现所谓的局部应用,还可以通过计算机网络实现异地异行现金转账等业务,从一个支行的账户中转出若干金额到另一个支行的账户中去,实现同时访问两个支行(异地)上的数据库的所谓全局应用。
分布式数据库系统的特点可总结为下面几点。
(1)物理分布性
在分布式数据库系统中,数据是物理分布在不同的站点上的。不同站点之间相距甚远,如在几十千米以上;也可以相距很近,如在同一个大楼里。站点之间通过网络联系,每一个站点一般使用一个集中式数据库系统。
(2)逻辑整体性
分布式数据库系统中的数据虽然从物理上说分布在不同的站点,但各个站点上的数据在逻辑上属于同一个系统,对用户而言是一个整体,就像一个集中式数据库一样。物理分布性、逻辑整体性是分布式数据库系统最主要的特点。因此,如果简单地将多个集中式数据库系统通过网络相连接并不能构成分布式数据库系统,因为这种方法不能对用户应用提供一个统一的数据库视图,用户在访问数据时必须要显式地说明数据的存储站点等信息。
(3)站点自治性
分布式数据库系统强调站点自治,即每个站点都拥有自己独立的本地数据库系统,有自己独立的操作系统、CPU等,也有专门的数据库管理人员,具有高度的自治能力。在一些分布式数据库系统中,还允许每个站点有异构的数据库系统。站点自治性使得本地应用都可以在单个站点上完成,有利于系统性能的提升。
(4)数据透明性
由于分布式数据库系统的物理分布特性,其要能够支持涉及多个站点的全局应用,便于全局应用的用户使用分布式数据库系统,应将主要精力集中在应用的逻辑上,而不是数据的位置分布上。因此,分布式数据库系统提供了数据透明性,即用户不需要知道数据的物理位置,以及如何访问某个特定站点的数据。
数据透明性包括位置透明性、复制透明性和分片透明性。
1)位置透明性是指用户和应用程序不必知道它所用的数据在什么站点。用户所要使用的数据很可能在本地的数据库中,也可能在外地的数据库中。系统具有数据位置透明性时,用户就不必关心数据是在本地还是外地,应用程序的逻辑变得简单,而且允许数据在使用方式改变时,不必重写程序,这样避免了应用程序的频繁变更,也降低了应用程序的复杂程度。
2)复制透明性是指在分布式系统中,为了提高系统的性能和可用性,将部分数据同时重复地存放在不同的站点,这样,在本地数据库中也可能包含外地数据库中的数据。应用程序执行时,就可以在本地数据库的基础上运行,尽量不借助通信网络去与外地数据库联系,而用户还以为在使用外地数据库中的数据。这样可以避免站点之间的通信开销,加快应用程序的运行速度,对查询操作比较有利。但是,各个站点大量复制其他站点的数据会使数据的更新操作涉及所有复制数据,提高维护数据一致性的代价,也会加大系统的维护开销。
3)分片透明性是指用户不需要知道数据库中的数据是如何分片的。数据分片是指将数据分割成不同的片段,例如将学生数据分为计算机系学生片段和电子系学生片段,并且可以将计算机学生片段存储在站点A,将电子系学生片段存储在站点B。但这种数据分片对于用户来说是透明的。
图1-10给出了分片透明性的一个示例。在这个例子中,学生数据被分成了两个片段CS_Student和EE_Student并且分别存储在站点A和站点B上,当用户在站点C上发出学生数据查询时,系统会自动完成分片上的查询及结果汇总工作,用户并不知道这些与分片相关的处理细节。
图1-10 分片透明性示例
1.3.2 Web 2.0应用
随着Web 2.0的兴起,非关系数据库现在成为一个极其热门的新领域,非关系数据库产品迅速发展。而传统的关系数据库在应对Web 2.0网站,特别是超大规模和高并发的社交网络网站时已经显得力不从心,暴露了很多难以克服的问题。
Web 2.0应用对数据库的需求可简单总结为如下几个方面:
(1)对数据库高并发读/写的需求
Web 2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读/写请求。关系数据库应付上每秒万次SQL查询还勉强可以,但是要应付每秒上万次SQL写数据请求,硬盘I/O就无法承受了。其实对于普通的BBS网站来说,往往也存在对高并发写请求的需求。
(2)对海量数据的高效率存储和访问的需求
对于大型的社交网络网站,用户每天产生海量的动态。以Friendfeed为例,一个月就有约2.5亿条用户动态。对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下甚至不可忍受的。再如大型Web网站的用户登录系统,如腾讯、盛大等,动辄数以亿计的账号,关系数据库也很难应对。
(3)对数据库的高可扩展性和高可用性的需求
在基于Web的架构当中,数据库是最难进行横向扩展的。当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像Web服务器和应用服务器那样简单地通过添加更多的硬件和服务节点来扩展性能与负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。