左 翔,姜文彪
(安徽医科大学 计算机系,安徽 合肥 230032)
分布式数据库系统的设计与优化
左 翔,姜文彪
(安徽医科大学 计算机系,安徽 合肥 230032)
分布式数据库是数据库技术和网络技术相结合的产物,本文从分布式数据库系统的定义和特点入手,介绍了其设计、优化的目标以及优化的方法.
分布式数据库系统;设计;优化
近年来,计算机技术的发展日新月异,借助于计算机网络而崛起的数据库技术已不断渗透到了社会生活的各个领域.分布式数据库系统是数据库技术的一种,它的产生,使在地理上、组织上分散的单位得以实现信息、数据共享,使系统的可靠性、可用性等得到了明显的改善和提高.因此,如何优化分布式数据库系统,如何更高效地实施数据库查询等问题便显得尤为重要,它关系着整个系统性能和系统效率等诸多关键因素的完善和提高.
分布式数据库系统的基础是集中式数据库,但是比集中式数据库具有更大的可扩展性,它适用于单位和企业的各下属、分散部门,允许将分工后的针对性较强的各部门数据存储在本地存储设备上,从而提高用户操作应用程序的反馈速度,在一定程度上降低网络通信费用.
分布式数据库系统可以分为两种:一是物理分布逻辑集中,即在物理上是分布的,在逻辑上是一个统一整体,这类数据库系统比较适用于用途单一、专业性强的中小企业或部门;二是无论在物理上或是逻辑上都是分布的,这种分布式数据库系统类型称为联邦式,此类型主要用于集成大范围数据库,因为该系统主要由用途迥异、差别明显的数据库组成.
分布式数据库的物理分布性主要表现在数据库中的数据分别存储在不同的地域内或主机上,而逻辑集中性主要表现在无论用户处于哪个位置或使用本局域网中的哪台主机,都可以通过应用程序对数据库进行操作,但这些数据库具体的分布位置用户并不需要知道,就如同数据库存储在本机,并且由本机的数据库管理系统进行管理.
2.1 数据的独立性和分布的透明性
数据的独立性可以说是分布式数据库系统的核心和目标,而分布的透明性表现在用户在操作带有数据库的应用程序时,不必了解数据存储的具体物理位置,不必关心数据逻辑集中的区域,也不必验证本地系统支持哪些数据模型.分布透明的特点,在很大程度上增加了应用程序的可移植性.
2.2 集中和自治相结合
对于分布式数据库系统来说,数据共享分为两层:局部共享和全局共享.局部共享是相对于局部数据库而言的,存储在局部数据库中的一般是专门针对本地用户的常用数据;全局共享就是说在各个分布的数据库区域,也能够支持系统在全局上的应用,可以存储可供本网中其他位置的用户共享的数据.那么对于这两层数据共享的分类,就有相应的两种控制方式,即集中和自治,各个局部的数据库管理系统可以对本区域的数据库实施独立管理,称为自治;与此同时,为了协调各个局部数据库管理系统,为了宏观、整体地把握各局部数据库的运行情况等,系统还设置了集中控制的工作方式.
2.3 易于扩展性
由于单位、企业等的数据量越来越庞大,对于数据库服务器的需求也越来越多.如果服务器的应用程序支持水平方向的扩展,那么就可以通过多增加服务器来分担数据的处理任务.
3.1 设计的原则
3.1.1 分布式数据库系统的主要设计原则是本地和近地.所以,在设计的过程中,应当尽量实现数据的本地化,这样可以有效减少数据节点之间的相互通信,从而提高整个系统的效率.
3.1.2 为了改善和提高数据库数据的可用性和可靠性,有时候在分布式数据库系统中可以将数据保存为副本,如果数据的其中一个副本被损坏或者不能使用,那么在网络环境中的另一个节点中可以对损坏的副本进行恢复.不过,在恢复的同时有可能增加冗余的数据,所以在设计分布式数据库系统时应当全面考虑最优的数据冗余程序,从而减少数据库更新的成本.
3.1.3 在用户通过应用程序对数据库进行操作的时候,分布式数据库系统应当将总的工作量分流到网络环境中的各局域节点,从而提高了应用程序的执行效率、扩大了数据传输的并行度、充分利用了各局域节点计算机的资源.因此在设计分布式数据库系统的同时,要将负荷合理地分流.
3.1.4 在设计分布式数据库系统时,要对网络各局域节点进行存储能力的统筹,对有限的存储控件进行合理的规划.
3.2 设计的内容
与集中式数据库的设计相类似,分布式数据库系统也包括了数据库和应用.其中,数据库的设计又包括全局的模式设计和局部的模式设计.分布式数据库系统设计的关键是如何划分全局模式并且映射到站点.分布式数据库系统的设计方法大致有:自顶向下设计、自底向上设计以及混合方法.本文采用自顶向下的设计方法.
本文采用自顶向下的设计方法.分布式数据库在进行自顶向下设计时,是以一个全局并且和站点无关的模式作为输入,以产生分布式数据库各个站点的子模式为输出,并且将数据的分片设计以及片段的位置分配设计包含在内.所谓分片,就是把一个全局的对象(关系或者实体)细化,分成若干个逻辑的片段;所谓分配,就是将各个片段映射到一或多个站点.具体的设计步骤如下:首先进行需求分析,然后进行概念设计,即将通过需求分析得到的需求抽象为E-R图.接下来进行逻辑设计,就是将得到的E-R图转换为对应数据模型所符合的某个逻辑结构,比如说关系模型.之后进行物理设计,确定数据库的物理结构,对数据库的物理结构进行相应的评价.然后开始收集一些与分布相关的信息,比如说水平分片的划分、各个站点激活每个应用的频率等等.最后进行分布设计,这个步骤用来产生全局数据的分片模式以及产生片段的位置分配模式,这里的分配模式用于描述分配于各个站点的数据的情况.分布设计阶段又包含了四个过程,设计分片、非冗余的分配、冗余的分配、重构局部模式.
在分布式数据库系统的各项参数中,查询效率无疑是至关重要的一个指标,优化分布式数据库系统的查询效率,需要我们增加有效的查询算法和手段,尽量避免由于数据库分布而给查询操作带来的通信开销.
4.1 优化的目标
所谓优化,主要强调的是查询的快捷,尽量缩减用于查询的时间开销.总结起来即:
(1)使处于网络中的数据传输量降低至最小.
(2)使用户通过应用程序操作数据库时的反馈时间最短.
4.2 具体优化方案
任何一个数据库系统都由各种各样的关系组成,也就是通常所说的关系数据库.分布式数据库系统的实现语言是关系的演算,正是这种算法实现了核心数据库和局域节点数据库之间的透明接口.当然,要想从算法上进行优化,那么需要考虑的因素多且繁杂,在查询优化的过程中,不能局限于某种固定的原则,应当按照实际的环境和需要来加以选择.
4.2.1 基于关系代数等价变换的查询优化
这种优化的方法是从关系代数表达式入手.首先分析得到的查询树,然后对查询树进行从全局到片段的变换,得到基于片段的查询树.最后通过关系代数等价变换的算法,尽量将选择和投影操作先进行,以达到优化目的.进行这种优化需要几次转换,首先将该查询问题转换为标准的关系代数表达式;其次将得到的关系代数表达式转换成查询树;最后将得到的全局的查询树分段,拆分为基于片段的查询树.这种方法利用关系代数等价变换的规则,对查询树进行优化,从而优化查询.
4.2.2 基于半连接算法的查询优化
半连接算法通常有两次传输,但是传输的数据量远比传输整个关系要少,一般有这样的关系:T半<
半连接优化算法的具体实现步骤:首先,计算出每一种半连接方案所要的代价,从而挑选出最佳的方案;其次,选择传输付出代价最小的站点,并计算采用全连接方案使所要付出的代价,将以上两种方案做对比,最终选取最优的方案.
4.2.3 基于直接连接算法的查询优化
所谓的直接连接操作,是相对于半连接操作而言的.当数据库的设计采用半连接方案时,认为传输的费用是最主要的;采用直接连接方案时,认为局部的处理费用是最主要的.根据侧重点不同来选择不同的方案.
直接连接操作的常用策略:当两个关系处于同一个站点时,算法和集中式数据库的相同.通常,根据扫描顺序的不同,一个是外层的关系,比如R;对应的,一个是内层的关系,比如S.策略一是嵌套循环,即按照顺序扫描外层的关系,如果是R,那么扫描R每个元组的内层关系S,然后查找元组,这些元组在连接属性上一致.最后把相匹配的元组相结合,使之成为组成结果的一部分.策略二是排序扫描法.即首先按照连接属性将两个关系进行排序,然后扫描这两个关系,扫描时按照连接属性值的相应顺序,使得相匹配的元组成为结果的一个组成部分.当两个关系处在不同的站点时,除了需要考虑局部的代价,还需要考虑传输的代价.传输的方式有两种,整体传输方式和按需(需要)传输方式.站点连接方法的选择有三,分别是R所在的站点、S所在的站点以及除此之外的第三个站点.除了运用直接连接操作策略来优化查询外,还可以通过并行的直接连接策略来进行优化工作,而操作与操作之间的并行,包括流水线的并行、独立的并行等,都有积极作用.
本文在介绍分布式数据库系统特点的基础上,给出了一个可用性强的分布式数据库系统的设计方案,并且详细描述了该方案中的系统功能结构,以及系统数据库设计等,并对分布式数据库的查询优化方法进行了分析和阐述.分布式数据库系统由于控制管理方便、结构灵活响应快、可靠性和可用性高等优点,已经逐步应用于现代生活的各个方面,我们必须不断地寻找更加方便快捷的查询优化方法,才能保障分布式数据库系统稳定、长足的发展.
〔1〕申德荣,于戈.分布式数据库系统原理与应用.机械工业出版社,2011.
〔2〕钱郭锋,刘波,陈瑁.分布式数据库系统的设计与实现.现代测绘,2010(03).
〔3〕李文虎.分布式数据库系统的设计浅析.科技资讯,2009 (34).
〔4〕邵佩英.分布式数据库系统及其应用.科学出版社,2005.
〔5〕彭岩.基于大系统理论的分布式数据库的设计与分析.计算机工程,2005(07).
〔6〕任瑞娟.基于分布式数据库构建分布式本体的方案设计.中国图书馆学报,2006(04).
T P 310
A
1673-260 X(2012)10-0020-02