首页 理论教育分布式数据库技术:探究小节成果

分布式数据库技术:探究小节成果

【摘要】:集成,就是分布式数据库系统力求达到的目标。分布式数据库系统涉及分布计算和分布式处理问题。从分布式数据库系统的角度看,这些部分都是必要的,也是重要的。分布式数据库系统是一种分布式处理系统,因此有上述好处。分布式数据库和分布式处理这两个词虽然是密切相关的,但也有差别。显然,分布式数据库系统是一种面向数据管理的分布式系统。反之,则称为异构型分布式数据库管理系统。

分布式数据库系统(distributed database system,DDBS)技术可以看成是数据管理(即数据库系统)和计算机网络技术的结合。

数据库系统强调了数据的独立性,数据的描述信息和数据本身与程序相分离,应用程序不再和数据紧密捆绑在一起。这里,数据集中管理,可以大大降低系统冗余的数据,解决了数据的不一致性问题。

使用数据库系统的一个主要动机是把一个企业(单位)的操作数据集中起来,从而提供一种集中的数据访问。这是一个集中(centralization)的概念。数据库系统的诞生是从数据集中管理开始的。

有意思的是,计算机网络技术是针对集中的想法在做相反的努力,它的目的则是分散,把一台计算机上的数据与操作分散到多台通过计算机网络互联的计算机上。

而现实应用的需求则要求把两者统一起来,因此,分布式数据库力图把两者协调起来,使用集成来协调。因此,这里分布式数据库面临的一个关键问题是集成(integration),而不是集中。

我们强调的是数据库技术和计算机网络技术两者的协调。因此重要的是,这两者之间我们无需强调一个必须蕴含另一个。我们完全可以做到集成而不集中。集成,就是分布式数据库系统力求达到的目标。因此在本书中,我们将有专门的章节讨论数据集成问题。

分布式数据库系统涉及分布计算和分布式处理问题。

分布式处理,如果不分程度,则到处都有,即便是单处理器的计算机系统中也有分布式处理。其实,计算机发展的过程就是一个不断将处理分布化的过程,例如,将CPU和I/O功能分开就是一个分布式处理的样例,类似的样例还有最近迅速发展的CPU和GPU的功能分离。不过,现在我们讲的分布式处理则要复杂得多,单处理器系统不包括在内。

这里,我们把分布计算系统(distributed computing system,DCS)定义为一组通过计算机网络互联的、自主的处理单元(它们不一定同构),协同工作完成指派的任务。所谓计算单元,指的是可以在其上面执行程序的计算设施。

有的学者认为分布式系统可以用硬件、控制、数据这三个维度来表示,即

分布式系统=分布式硬件+分布式控制+分布式数据

分布的内容可以包含以下几个方面。

●硬件的分布。

●处理逻辑(processing logic)的分布。

●按功能来分布。

●按数据来分布。

●按控制来分布。

因此,分布可以有硬件分布、处理分布、功能分布、数据分布和控制分布等,种类繁多。

从分布式数据库系统的角度看,这些部分都是必要的,也是重要的。

分布式系统多种多样,我们可以将它们按不同的依据来分类,如按照耦合度、互联结构、组成成分的独立性、组成成分间的同步等来分类。

耦合度(degree of coupling)指的是一种量度,它用来确定处理单元相互连接的紧密程度。其量度可以用执行一个任务时的数据交换量和本地处理数据量之比来表示。如果通信是在计算机网络上实现的,那么处理单元之间存在一种弱耦合。反之,如果处理单元有共享成分,那么可以称为强耦合。这种共享成分可以是内存或外存,也就是说,可以是主存也可以是辅存设备。

互联结构(interconnection structure),现实中,存在着点对点互联和公共通道互联(common channel interconnection)的不同情况。

处理成分在执行一个任务时可能是紧密依赖的,也可能是弱连接的(只在两者间传递消息)。处理成分之间可以以同步方式配合,也可以以异步方式配合。

分布式处理的一个很重要的原因是能够解决大型的、复杂的问题。只要有很好的算法软件,大的问题、复杂的问题都可以用分布式处理来解决。所以,大数据问题就依赖分布计算来解决。

经济学观点看,这么做有两个基本好处。首先,分布计算采用了如何利用廉价的多处理单元获得强大计算能力的手段。其次,软件的开发成本大大降低。近年来,Map Reduce和Hadoop[6]的流行反映了这一点。

分布式数据库系统是一种分布式处理系统,因此有上述好处。

分布式数据库和分布式处理这两个词虽然是密切相关的,但也有差别。下面先看它们的简单定义。

分布式数据库(distributed database)。分布式数据库使用分布式处理体系结构,是分布式系统中的一个数据库集,对应用来说就像一个单一的数据资源。

分布式处理(distributed processing)。分布式处理指的是当应用将其任务分布到网络的不同计算机上时发生的操作。

究竟什么是分布式数据库系统?根据维基百科:分布式数据库是一个数据库,其存储设备并非都连接在一个共有的处理器上。它可以存储到置放在同一地点的多台计算机上,也可以存储到互联在网络上的多台计算机上。在并行系统中,处理器是紧耦合的,它们构成一个单一的数据库系统;而分布式数据库系统由松耦合的节点构成,它们不共享物理成分。

显然,分布式数据库系统是一种面向数据管理的分布式系统。

下面先从分类谈起。

●按管理系统的性质分类。按照分布式数据库管理系统(distributed database management systems,DDBMS)的构成分类。从构成的方式来看,DDBMS可分为同构型分布式数据管理库系统和异构型分布式数据库管理系统两类。

所谓同构型分布式数据库管理系统,是指所有网络上节点的局部数据库管理系统运行在相同的平台上,而且每个局部数据库管理系统都相同。反之,则称为异构型分布式数据库管理系统。例如,都运行在Win Tel平台[7]上,可以说是运行在相同平台上。当然,我们还可以要求局部数据库管理系统(如都是Oracle系统)是一致的。(www.chuimin.cn)

所谓异构型分布式数据库管理系统,是指分布环境中各节点上的数据模型和数据语言都可能不同。一般的异构型分布式数据库管理系统是自底向上设计的,即把已有的不同模型的数据库联合在一起,在不同节点上使用的数据模型和数据语言是不同的。这样,异构型分布式数据库管理系统比同构型分布式数据库管理系统实现起来要困难一些,为了在两个节点的局部数据库管理系统之间进行信息交换,就要对数据模式和数据语言进行转换和映射工作。各节点之间通过通信网络互联形成统一的整体。

同构型分布式数据库管理系统对于并发控制、冗余数据的一致性等问题容易处理,但建库的代价比较高。同构型分布式数据库管理系统的例子有美国IBM公司的R*系统,美国CCA公司的SDD-l系统和德国斯图加特大学的POREL系统等。

●按控制方式分类。按控制方式,分布式数据库管理系统可以分为集中控制与分布控制两类。所谓集中控制的分布式数据库管理系统是指所有事务都由一个叫中心计算机的节点进行管理。

●按数据重复情况分类。按数据重复情况,分布式数据库管理系统可以分为部分重复式和完全重复式。部分重复式是指每个节点都存储分布式数据库中数据实体的任意子集。部分重复式又称混合式,例如美国的SDD-l系统等。完全重复式是指每个节点都存储整个分布式数据库中数据实体的全集副本。也有文献把完全重复式称为复制式。

●从用户的角度分类。从用户的角度,分布式数据库管理系统可分为总体型和多重型两类。

所谓总体型的分布式数据库,在逻辑上是统一的整体,数据库的分布对用户是透明的。关于多数据库,我们在后续章节里讨论。

还有一些分类,这里不再赘述。必须指出,这里分类的目的只是在给定分布式环境和用户需求的情况下选择一种设计分布式数据库管理系统的最佳方案。

这里我们把分布式数据库定义为一个由分布在计算机网络上的与多个逻辑相关的数据库构成的有机组合。分布式数据库管理系统则是一个软件系统,负责管理分布式数据库,并让这种分布对用户透明。

分布式数据库系统,由于分布而产生了一系列集中式数据库系统不具有的新问题。数据库分布式的管理,在技术上也引起了一系列新问题。

这些问题包含以下几个。

●一个分布式数据库由分布在各个节点的分数据库(即局部数据库)集成而成。那么是由一个节点来统一管理各分数据库呢,还是在必要时各节点挺身而出代行管理呢?其实,这是一个集中与分散的问题。

●每个节点的数据是只在本节点保留一份呢,还是存储备份于其他各节点以防数据被破坏丢失呢?这是可靠性与节约之间的矛盾。

●当数据库操作涉及多个分数据库上的数据时,应该把这些数据传送到哪个节点上进行操作最佳呢?这是一个规划问题,一个运筹帷幄的优化问题。

由此可见,较之于传统数据库,分布式数据库技术要复杂得多,困难得多。

分布式数据库发展的必然性及其技术上的复杂性,引发了许多著名的计算机科学家从事分布式数据库理论的研究工作和实际开发工作,并已经做出了重要贡献。历史上,世界上先后推出了多个在不同级别的实验室进行研制的试验原型机。例如,美国计算机公司的SDD-1系统,IBM公司的System R*系统,德国斯图加特大学的POREL系统和中国研制的C-POREL系统等。现在,分布式数据库系统面向Web发展,进入了新的阶段。

分布式数据库系统并不是一个存放在不同网络节点上的文件的简单集合。为了构成一个分布式数据库系统,文件不仅是逻辑相关的,而且是结构化的,同时是通过公共接口访问的。

从这个角度看,多处理器系统上的数据库系统也可以看成是一个分布式数据库系统。一个多处理器系统至少有两个处理器,它们可以共享内存(称为紧耦合)、共享辅存(如硬盘)(称为松耦合)等。共享内存多处理器系统如图1.1所示。

图1.1 共享内存多处理器系统

还有无共享(shared nothing)的多处理器系统,这些后面会详细讨论,在此不再赘述。

分布式数据库不是集中式数据库的简单分布,而是消除了集中式数据库的许多缺点,更适应发展中的应用环境,是具有自己特点的系统。但是,我们不会忘记分布式数据库是在传统数据库的基础上发展而来的。因此,为了更好地理解分布式数据库,有必要回顾一下集中式数据库的典型特点,并把这些特点与分布式数据库的相应特点进行比较。

传统数据库具有集中控制、数据独立性、减少冗余、完整性、恢复、并发控制、保密性和安全性等特点。下面分别讨论这些特点在集中式数据库和分布式数据库中的表现与要求。

集中控制。对信息提供集中式控制的能力,被认为是采用数据库技术的最大动力,因为集中式数据库是根据信息系统的演变和集中处理信息的需求开发出来的,每个应用在这种信息系统中都有自己的专用文件,而数据是共享的。数据库管理员(DBA)的基本职责是保证数据的安全;对要求集中负责和管理的企业或单位来说,数据本身又是十分重要的信息资源。

在分布式数据库里,可以说几乎不用强调集中式控制的要求,从而达到全局数据库管理员完全监听不到局部内部的目的,其内部协调由局部数据库管理员自己负责实现。这种特性通常被称为节点自主性。分布式数据库里,在节点自主性程度上各节点间可能有极大的区别,从没有任何集中式数据库管理员的整个节点自主权到几乎完全可集中控制的程度都是有可能的。

数据独立性。数据独立性也曾被认为是采用数据库方法的主要动力。实际上,数据独立性意味着数据的实际结构对应用程序来讲是透明的,应用程序员只需要利用数据概念图,即所谓概念模式来编写程序,不需要考虑数据的存储结构。数据独立性的主要优点是应用程序不受数据存储的物理结构变化的影响。

在分布式数据库中,数据的独立性具有同等的重要性。然而,一种崭新的概念加入了数据独立性的一般概念中,这就是分布式透明性。所谓分布式透明性,指的是在编写程序时就好像数据没有被分布一样。这样,无论是把数据存储到甲地或乙地,或者是把数据从一个节点移到另一个节点,都不会影响程序执行的正确性和有效性。但是必须指出,执行速度或者效率却会受到影响。

众所周知,通过具有不同形式的数据描述和它们之间的映射的多层体系结构,曾为传统的数据库提供了独立性。为了达到此目的,开发出了概念模式、存储模式和外部模式等概念。

利用类似的方法,可以通过采用新层次和新模式,在分布式数据库中获得分布式透明性。分布式透明性是分布式数据库系统的主要目标之一。

数据冗余度。在传统数据库系统中,尽可能地降低冗余度是它的主要目标之一。这有两个原因:首先,通过只用一个副本,可以自动地避免同一逻辑数据中几个副本之间的不一致性;其次,通过降低冗余度可以节约存储空间。通过共享数据的方式,可以让几个应用访问同一文件和记录来达到降低冗余度的目的。

但是,在分布式数据库中,不把数据的冗余看成是性能差的特性。这有几个原因:首先,如果在需要冗余的节点复制数据,则可以增加应用的本地性。其次,可以增加分布式数据库系统的有效性和可靠性。因为若复制数据,则一个节点上的故障不会阻止其他节点上应用的执行。一般情况下,为适应传统集中式环境而确定的需要克服冗余的原因,在分布式环境中仍是有效的。因此,在分布式数据库中,对冗余度的评价要选择一种折中的方案,不能一概而论。一般来说,复制数据项的便利程度随着应用所执行的检索访问与更新访问的比率的提高而提升。数据复制便利程度的提高,是因为我们具有一个项目的多个副本,检索可以在任何一个副本上实现,而更新却必须在所有副本的基础上一致地进行。后者可以看成是一个额外开销,因为原本只需在一个节点上进行更新,现在却不得不在所有有副本的节点上实施更新操作,这样,开销就增加了。后面章节将详细讨论数据复制问题。

有效访问。复杂的访问结构,如辅助索引、文件间的链接等,都是传统数据库所采用的重要技术,支持这些结构的软件是数据库管理系统极为重要的组成部分。提供复杂的访问结构,是为了获得对数据的有效访问。

在分布式数据库中,复杂的访问结构对有效访问来讲不是合适的工具。因此,当有效访问是分布式数据库的一个主要问题时,访问结构就不是一个相关的技术问题了。通过采用改变分布式环境内部节点的物理结构,并不能保障有效地访问分布式数据库,因为建立和保持选择结构是极为困难的。同时,也因为复杂的访问结构不便于在分布式数据库的记录层上实现“引导”。

如今,分布式数据库管理系统迅速演变,而且开始面向非结构化数据,并使用NoSQL DBMS引擎。典型的如XML数据库和New SQL数据库等。这些数据库形态的发展速度很快,同时提供了对分布式数据库体系结构的支持,通过复制技术和可伸缩能力的保证还可提供高可用性和容错能力。