分布式数据库系统是数据库技术与网络技术相结合的产物,其基本思想是将传统的集中式数据库中的数据分布于网络上的多台计算机中。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整的复制副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
一.分布式数据库概述
分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力,即场地自治,它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术上的基础发展而来,有如下特点:
(1)数据独立性。包括逻辑独立性与物理独立性,还有数据分布独立性。
(2)集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能,同时有设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
(3)适当增加数据冗余度。在不同场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(4)全局的一致性、可串行和可恢复性。
1.分布式数据库的体系结构
在分布式数据库中,局部DBMS中的内模式与概念模式与集中数据库是完全一致的,不同之处在于新增的全局DBMS,而整个全局DMBS,可以看作是相对于局部概念模式的外模式。
(1)全局外模式。全局外模式是全局应用的用户视图,是全局概念模式的子集,该层直接与用户或者应用程序进行交互。
(2)全局概念模式。全局概念模式定义分布式数据库中数据的整体逻辑结构,数据就如图根本没有分布一样,可用传统的集中式数据库中所采取的方法进行定义。
(3)分片模式。在某些情况下,需要将一个关系模式分解成几个数据片,分片模式正式用于完成此工作的。
(4)分布模式。分布式数据库的本质特征就是数据分布在不同的物理位置。分布模式的主要职责是定义数据片段的存放节点。
(5)局部概念模式。局部概念模式是局部数据库的概念模式。
(6)局部内模式。局部内模式是局部数据库的内模式。
2.分布式数据库的优点
(1)分布式数据库可以解决企业部门分散而数据需要相互联系的问题。
(2)分布式系统可以在对当前机构影响最小的情况下进行扩充。
(3)分布式数据库可以满足负载均衡的需要。
(4)可靠性高,出现故障的影响小。
二.数据分片
数据分片将数据库整体逻辑结构分解为合适的逻辑单位,然后由分布模式来定义片段及其副本在各场地的物理分布。
1.数据分片的分类
(1)水平分片。水平分片将一个全局关系中的元祖分类成多个子集,每个子集为一个片段。分片条件由关系中的属性表示。
(2)垂直分片。垂直分片将一个全局关系按属性分裂成多个子集,应满足不相交性。对与垂直分片,重构全局关系可通过连续运算实现。
(3)导出分片。导出分片又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片。混合分片是在分片中采用水平分片和垂直分片两种形式的混合。
2.数据分片的原则
(1)完整性。全局关系的所有数据都必须分配到各个片段中,不允许某些数据属于全局关系但不属于任务片段。
(2)重构性。各个片段可以重构原来的全局关系。
(3)不相交性。全局关系中的每个元祖仅属于一个片段,不能在多个片段中重复出现。
3.分布透明性
分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分布小细节,也不必关心局部场地上数据库的数据模型。分布透明性包括分片透明,位置透明,局部数据模型透明。
(1)分片透明。分片透明是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
(2)位置透明性。位置透明是指用户或应用程序应当了解分片情况,但不必了解片段的存储位置。
(3)局部数据模型透明性。局部数据模型透明性是指用户或者应用程序应当了解分片及各片段的存储场地,但不必了解局部场地上使用的是何种数据模型。
三.分布式数据库查询优化
分布式数据库在结构上与集中式数据库存在一定的差异,所以两者在查询优化方面各有侧重。在分布式数据库系统中,从查询涉及的数据和查询处理过程中的通信模式来划分,可以分为局部查询、远程查询和全局查询三种类型。
全局查询是指用户查询涉及多个场地的数据,因此查询处理和优化技术要比其他两种要复杂的得多。具体方法有:全局查询树的变换,副本的选择与多副本的更新策略,查询数的分解,半直连与直接连接等。
1.全局查询树的变换
为了提高执行效率,可对全局查询树进行如下变换:
(1)用片段替换查询树中的全局关系。
(2)尽可能将选择和投影等一元操作推向查询树的叶端。
(3)合并公共子表达式。
(4)消除空关系和冗余度。
(5)移去无用的垂直叶片。
2.副本的选择与多副本的更新策略。
副本选择原则:
(1)尽可能提供访问的局部性,尤其要减少大量数据的传送。
(2)尽可能减少通信开销,尤其要减少大量数据的传送。
(3)适当考虑节点负载的平衡。
副本的更新策略:
(1)在事务提交前更新全部副本。
(2)立即更新所有节点的副本。
(3)主副本法,指定一个副本为主副本,执行更新操作时候,事务提交前进更新主副本,所有副本在事务提交后根据主副本广播的内容进行更新。
(4)快照法。快照法是指数据在某一时刻的状态,它不随数据库中数据的更新而即时更新。
3.查询树的分解
查询树分解的一般方法是采用后续遍历法。
4.半连接与直接连接
有时候,在做连接操作时,并不需要将整个关系(或片段)传送到对方,只要传送连接时与对方匹配的元组就够了。半连接操作可以帮助从关系(或片段)筛选出连接时匹配的元组,减少节点之间的数据传输量和运算暈,但也增加了投影操作和选择操作。在实际应用中,是否采用半连接,必须做代价比较。