来源:互联网
一、分布式数据库系统
1、分布式数据库概述
随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。分布式数据库是数据库技术与网络技术相结合的产物,在数据库领域已形成一个分支。分布式数据库的研究始于20世纪70年代中期。世界上第一个分布式数据库系统 SDD-1是由美国计算机公司(CCA)于1979年在DEC计算机上实现。20世纪90年代以来,分布式数据库系统进入商品化应用阶段,传统的关系数据库产品均发展成以计算机网络及多任务操作系统为核心的分布式数据库产品,同时分布式数据库逐步向客户机/服务器模式发展。
分布式数据库的典型定义是:分布式数据库是一个数据集合,这些数据在逻辑上属于同一个系统,但物理上却分散在计算机网络的若干站点上,并且要求网络的每个站点具有自治的处理能力,能执行本地的应用。每个站点的计算机还至少参与一个全局应用的执行。
2、DDBS的优缺点
1)DDBS优点:
(1)更适合分布式的管理与控制。分布式数据库系统的结构更适合具有地理分布特性的组织或机构使用,允许分布在不同区域、不同级别的各个部门对其自身的数据实行局部控制。例如:实现全局数据在本地录入、查询、维护,这时由于计算机资源靠近用户,可以降低通信代价,提高响应速度,而涉及其他场地数据库中的数据只是少量的,从而可以大大减少网络上的信息传输量;同时,局部数据的安全性也可以做得更好。
(2)具有灵活的体系结构。集中式数据库系统强调的是集中式控制,物理数据库是存放在一个场地上的,由一个DBMS集中管理。多个用户只可以通过近程或远程终端在多用户操作系统支持下运行该DBMS来共享集中是数据库中的数据。而分布式数据库系统的场地局部DBMS的自治性,使得大部分的局部事务管理和控制都能就地解决,只有在涉及其他场地的数据时才需要通过网络作为全局事务来管理。分布式DBMS可以设计成具有不同程度的自治性,从具有充分的场地自治到几乎是完全集中式的控制。
(3)系统经济,可靠性高,可用性好。与一个大型计算机支持一个大型的冀中是数据库在加一些进程和远程终端相比,由超级微型计算机或超级小型计算机支持的分布式数据库系统往往具有更高的性价比和实施灵活性。分布式系统比集中式系统具有更高的可靠性和更好的可用性。如由于数据分布在多个场地并有许多复制数据,在个别场地或个别通信链路发生故障时,不至于导致整个系统的崩溃,而且系统的局部故障不会引起全局失控。
(4)在一定条件下响应速度加快。如果存取的数据在本地数据库中,那末就可以由用户所在的计算机来执行,速度就快。
(5)可扩展性好,易于集成现有系统,也易于扩充。
对于一个企业或组织,可以采用分布式数据库技术在以建立的若干数据库的基础上开发全局应用,对原有的局部数据库系统作某些改动,形成一个分布式系统。这比重建一个大型数据库系统要简单,既省时间,又省财力、物力。也可以通过增加场地数的办法,迅速扩充已有的分布式数据库系统。
2)DDBS的缺点:
(1)通信开销较大,故障率高。例如,在网络通信传输速度不高时,系统的响应速度慢,与通信县官的因素往往导致系统故障,同时系统本身的复杂性也容易导致较高的故障率。当故障发生后系统恢复也比较复杂,可靠性有待提高。
(2)数据的存取结构复杂。一般来说,在分布时数据库中存取数据,比在集中时数据库中存取数据更复杂,开销更大。
(3)数据的安全性和保密性较难控制。在具有高度场地自治的分布时数据库中,不同场地的局部数据库管理员可以采用不同的安全措施,但是无法保证全局数据都是安全的。安全性问题式分布式系统固有的问题。因为分布式系统式通过通信网络来实现分布控制的,而通信网络本身却在保护数据的安全性和保密性方面存在弱点,数据很容易被窃取。
分布式数据库的设计、场地划分及数据在不同场地的分配比较复杂。数据的划分及分配对系统的性能、响应速度及可用性等具有极大的影响。不同场地的通信速度与局部数据库系统的存取部件的存取速度相比,是非常慢的。通信系统有较高的延迟,在CPU上处理通信信息的代价很高。分布式数据库系统中要注意解决分布式数据库的设计、查询处理和优化、事务管理及并发控制和目录管理等问题。
3、 数据分片
1)数据分片的类型:
(1)水平分片:按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子集为关系的一个片段。
(2)垂直分片:把一个全局关系的属性集分成若干子集,并在这些子集上作投影运算,每个投影称为垂直分片。
(3)导出分片:又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片:以上三种方法的混合。可以先水平分片再垂直分片,或先垂直分片再水平分片,或其他形式,但他们的结果是不相同的。
2)数据分片的条件:
(1)完备性条件:必须把全局关系的所有数据映射到片段中,决不允许有属于全局关系的数据却不属于它的任何一个片段。
(2)可重构条件:必须保证能够由同一个全局关系的各个片段来重建该全局关系。对于水平分片可用并操作重构全局关系;对于垂直分片可用联接操作重构全局关系。
(3)不相交条件:要求一个全局关系被分割后所得的各个数据片段互不重叠(对垂直分片的主键除外)。
4、 体系结构
数据分片和数据分配概念的分离,形成了“数据分布独立型”概念。
数据冗余的显式控制。数据在各个场地的分配情况在分配模式中一目了然,便于系统管理。
局部DBMS的独立性。这个特征也称为“局部映射透明性”。此特征允许我们在不考虑局部DBMS专用数据模型的情况下,研究DDB管理的有关问题。
所谓全局应用,要求使用通讯子系统在几个站点存取数据。这个定义强调了分布式数据库的两个重要特点:分布性和逻辑相关性。
下图给出了典型的分布式数据库系统(DDBS)的物理结构。其中在不同地域的3台计算机分别控制本地数据库及各终端用户T;每台计算机及其本地数据库组成了此分布式数据库的一个站点,各站点用通讯网络连接起来,可以是局域网或广域网。
DDBS的物理结构图
下图给出了分布式数据库的逻辑结构。其中,DDBMS是分布式数据库管理系统,用来支持分布式数据库的建立和维护。LDBMS是局部数据库管理系统,也就是通常的集中式数据库管理系统,用来管理本站的数据。
DDBS的逻辑结构
5、DDBS的安全性保证
分布式数据库系统是物理上分散而逻辑上集中的数据库系统。分布式数据库系统使用计算机网络将地理位置分散而管理和控制需要不同程度集中的多个逻辑单位(通常是集中式数据库)连接起来,共同组成一个统一的数据库系统。因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机组合。
Internet的高速发展推动着分布式数据库的发展,但同时也增加了分布式数据库安全问题的复杂性。如何才能保证开放网络环境中分布式数据库系统的安全?
一般情况下,分布式数据库面临着两大类安全问题:一类由单站点故障、网络故障等自然因素引起,这类故障通常可利用网络提供的安全性来实现安全防护,所以说网络安全是分布式数据库安全的基础;另一类来自本机或网络上的人为攻击,即黑客攻击,目前黑客攻击网络的方式主要有窃听、重发攻击、假冒攻击、越权攻击、破译密文等,针对这类安全隐患,有下列分布式数据库安全关键技术:身份验证,保密通信,访问控制,库文加密。
6、 分布式数据更新
(1)、分布式数据更新的原则和方法
在分布式数据库系统中,为了获得高查询速度和高可靠性,以增加数据复制的代价来减少数据通信的代价,并增强系统的可靠性。但由于数据复制在多个站点上,一旦要对有多个副本的数据进行更新时,为保证数据库的一致性,就必须对这些数据的所有复制版本同时做同样的更新。
先考虑单用户情况。如果站点A上有一个事务T对数据X进行更新,若X在站点B1,B2,…,Bn和C1 ,C2,…, Cm 上有副本。而现在站点B1,B2,…,Bn与站点A连通,但站点C1 ,C2,…, Cm与站点A现在不连通,如下图:
说明:
(1)、R在B1,B2,…,Bn和C1 ,C2,…, Cm上有副本;
(2)、但只有站点B1,B2,…,Bn与站点A连通而站点C1 ,C2,…, Cm与站点A暂时未连通。
此时,现在只能对连通站点B1,B2,…,Bn上的X副本进行更新,而对未连通站点C1 ,C2,…, Cm上的X副本,只能当站点连通时才能进行更新。为此,要记录对X所做的更新内容和应更新而未连通的站点,一旦其中的站点连通,就立刻进行相应的更新。
(2)、分布式数据更新存在的问题
分布式数据更新,存在如下两个问题:
多站点各副本同时更新的不现实性:因为每一个站点某一时刻与站点A连通的概率为P(P<=1),同时更新要求每一个有X副本的站点与A都连通,其概率为P**n,当n→∞时,P**n→0。
当对未连通的站点上的副本要求更新的事务增多时,就不能保证在该站点A连通时,进行的更新是正确的。因为更新的顺序就是站点连通的顺序,但通常情况下,对数据的更新顺序不会等于站点连通的顺序。
7、 分布式查询
分布式数据库系统中数据的分布导致查询也具有了分布性,分布式查询可能针对异类的OLE DB 或 ODBC 数据源。 SQL Server 支持分布式查询,即包括来自两个或更多服务器数据的查询,支持服务器间的检索、更新和游标,并使用 Microsoft Distributed Transaction Coordinator (MS DTC) 保证节点间事务语义,维护服务器间的安全。
分布式查询处理负责将用户查询转换为各站点上的物理查询,并负责合并各子查询结果以得到最后结果。
在分布式环境下,查询可以分为三种:局部查询,远程查询和全局查询。局部查询是指在本站点上执行查询,即查询本站点上存放的数据。远程查询是指在某个站点上执行查询,即查询在网络上的另一个战点上存放的数据。
分布式查询处理模型
二、一个具有三个站点的飞机订票系统
1、飞机订票业务概述
这个订票系统维护一个分布在三个站点,即机场1,2,3上的数据库。数据库存储有关机场规程、班机调度、班机可用情况和旅客订票等数据。假定各班机直接从出发机场到到达机场,中途不停站。其功能结构图为:
2、飞机订票系统数据库概念模式设计
机场表
编号 | 字段名称 | 数据类型 | 说明 |
1 | ID | int | 序号 |
2 | name | char | 城市 |
3 | sign | char | 符号 |
4 | right | char | 权力 |
5 | area | int | 区域 |
6 | safe | char | 安全规程 |
班机表
编号 | 字段名称 | 数据类型 | 说明 |
1 | ID | int | 序号 |
2 | number | int | 机号 |
3 | date | int | 日期 |
4 | seat | char | 可用座位 |
5 | entry | int | 进入口 |
6 | spicture | char | 座位图 |
7 | delay | char | 延期 |
8 | gtime | int | 起飞时间 |
9 | atime | int | 到达时间 |
旅客表
编号 | 字段名称 | 数据类型 | 说明 |
1 | ID | int | 序号 |
2 | name | char | 旅客名字 |
3 | tnumber | Int | 电话 |
4 | snumber | Int | 座位号 |
5 | tkind | char | 机票种类 |
6 | pnumber | Int | 行李号 |
3、飞机订票系统逻辑数据库设计
4、全局数据模式和全局操作模式
(1)飞机订票数据库的全局数据模式
(2)飞机订票数据库全局操作模式
订票应用(订票图),每当一新的旅客想预定一班机的机票时,就被激活。在这种情况下,访问数据库中的起飞与到达的机场,起飞与到达时间和班机日期。这些属性在图中标以“k”,表明它们被用作访问数据的关键词。箭头表明经由两个关系“从”与“到”访问从机场实体到班机实体的进行情况。实体左下角和右下角中的数字分别表示示例总数和由应用选择的平均示例数。一旦确定了班机,就建立旅客实体的一个新的示例及联系订票的一个示例;关于旅客名字,电话和种类的数据被写入数据库。可用座位属性先读后写(“O,W”;O表示输出,W表示写入)。
登记应用(登记图),凡旅客实际登机时,先执行登记任务。根据旅客名字和班机号与日期,查明有关旅客和班机示例(“K”属性)。然后,显示检索种类信息(“O”),并根据这一信息和班机座位图,将一座位号分配给旅客,写入座位图和座位号属性,以及旅客的检查行李号。
起飞应用(从机场起飞图),从机场起飞时的应用,产生描述即将离开机场的30架班机的起飞信息的报告并显示在TV监视器上。机场符号和当前日期与时间用于标识所涉及的机场和班机实体。对各次班机,从数据库中抽取班机号、起飞时间、出入口、延期和目的地机场符号与城市。使用“到”联系来确定关于目的地机场的信息。
5、分布设计
飞机订票系统中的分布设计由四步组成:对每一实体选择分片准则,确定非冗余分配,在非冗余分配上引入冗余,最后在每一站点上重新构建局部模式。
(1)分片设计
机场实体由一个基于区域的水平分片(片段:机场1,机场2,机场3);
班机实体由一个基于起飞机场的导出水平分片(片段:班机1,班机2,班机3);
旅客实体由一个基于旅客预定的所有班机起飞的导出水平分片(片段:旅客1,旅客2,旅客3,旅客4,旅客5,旅客6,到旅客7)。
(2)非冗余分配
机场1,班机1和旅客1被直接分配在站点1,同样的,机场2,班机2和旅客2被分配在站点2;机场3,班机3和旅客3被分配在站点3上。
(3)冗余分配
在许多情况中,与冗余有关的代价超出了同一实体所有片段的效益。机场和班机实体就是这样的。所以,对机场和班机实体的所有片段都不进行冗余分配,它们都只存储在一个站点上。对于旅客实体片段,则:旅客4,旅客5,旅客6,相应于预定离开两个区域的班机的旅客,被存储在两个相应的站点上。同样的,旅客7被存储在所有站点上。
(4)局部模式的重新构造