• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 美文 > 正文

    分布式数据库系统查询的研究与实现

    时间:2020-12-17 09:44:36 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    (内蒙古经贸信息服务中心,内蒙古 呼和浩特 010010)
    摘 要:文章以某保险公司的业务处理系统为例,详细研究了分布式查询数据库系统,并给出了实现方法。
    关键词:分布式;
    查询系统;
    研究;
    实现
    中图分类号:G252.7  文献标识码:A  文章编号:1007—6921(2008)08—0048—02
    分布式数据库系统中的查询处理较集中式数据库复杂,本文结合某保险公司的业务处理系统(同构分布式数据库系统)研究分布式查询及其实现。
    1 系统概述

    从全局应用的角度出发,将各分支机构的数据库自下而上构成分布式数据库系统(同构),实现全局数据的完整性和一致性,各营业机构仍然存放本机构的数据,总公司的数据库则存放所有业务数据,并对数据进行完整性和一致性的检查,这种做法虽然有一定的数据冗余,但在不同场地存储同一数据的多个副本,能提高系统的可靠性和可用性,也提高了局部应用的效率,减少了通讯代价。该分布式数据库系统可以在对当前机构影响最小的情况下进行扩充,增加新的营业机构时只需增加一个节点就可以了,同时也使得各处理机之间的相互干扰降到最低。

    
    2 系统查询的研究与设计

    该业务处理系统是一个同构的分布式数据库系统,其查询也就是分布式查询的一般处理过程如下图所示:

    分布式查询处理的可选方案很多,这就有一个查询优化的问题。分布式数据库系统中存在两类查询优化问题,一是在局部数据库上的查询优化,由局部DBMS执行,称为局部查询优化(在本例中,局部查询优化由局部DBMS完成);
    二是在整个分布式数据库中的查询优化,称为全局查询优化。

    保证分布式数据库系统全局查询有较好的效率通常是以下面两条为基础的DDBMS分裂成概念数据库,使得数据存放到离其应用点最近的节点。这个特征称作数据的局部性,这有两个潜在的优势;
    由于每个节点只处理数据库的一个部分,这样CPU和I/O服务的竞争就不像集中式数据库那样严重;
    而且局部性还减少了远程访问的延迟,这种延迟常发生在广域网中。大多数分布式DBMS是结构化的,这样就便于从数据的分布中获得最大收益。减少竞争和减少通讯延迟的好处只有通过数据的合理分布才能得到。

    支持DDBMS全局查询有较好效率的第二条是分布式系统的固有并行机制可用于内部查询和内在查询的并行化。内部查询并行化是多个查询同时执行的结果。内在查询并行化是将单个查询分解成多个子查询以便每个在不同的节点来执行,这样即可同时访问分布式数据库的不同部分,提高查询效率。
    2.1 数据分布

    如上所述,为分布式查询的全局优化,必须保证其数据的合理分布。分布式数据库系统可以通过复制、分片和复制+分片三种方式存储数据,因为各数据库之间存在一定的数据冗余,又存在着差异,我们采用复制+分片的方式进行数据存储。

    在本例中,将关系分片,有利于按用户需求组织数据的分布,目前的分片方式有水平分片、垂直分片、导出分片、混合分片等四种。我们根据不同的数据关系采用不同的分片方式:
    2.1.1 在总公司与分支营业机构的数据关系中,由于分支机构的数据是总公司业务数据的子集,我们采用水平分片的方式,通过并运算实现关系的重构。
    2.1.2 在总公司数据库服务器与Web数据库服务器的数据关系中,数据是按照其应用功能来划分的,所以我们采用垂直分片的方式。

    具体的数据分配按照分公司只保存与分公司相关的数据,总公司保存完整数据的原则实施。这样分配数据的优点是:由于数据存放在经常使用的地点(比如与某分公司有关的数据在其本地服务器中就可以获取),就减少了响应时间和网络通讯代价。在分布式数据库系统中,数据副本的存在,客观上起到了增加数据可靠性的作用。另外,由于总公司保存了系统的完整数据,所以便于进行面向全公司的统计、分析工作。
    2.2 查询的实现

    按照分布式查询的目标和步骤,采用基于集合划分的分布式数据库查询分解算法(目前的数据库大多是关系型数据库系统,故适用于集合划分理论),该算法的思想如下:
    2.2.1 对于全局查询的每一个属性,找到其相应的object划分;

    2.2.2 取一个包含步骤(1)中所有划分的最细划分;

    2.2.3 对应每一个划分得到一个子查询。

    结合某保险公司业务处理系统中的实例,说明查询分解的实现:首先,如果数据在不同的LDB中没有相交,查询分解很显然就是用相应的LDB名称(表名称和属性名称)代替全局名称。以单证管理为例,假设A分公司有单证管理关系(S)如下:


      对S做如下查询:SELECT  *  FROM  S

    WHERE ‘公司代码’LIKE ‘015023’AND ‘作废单数量’>10,显然,该查询的目标数据只在片段S1中,则我们可以直接用局部表名S1代替全局表名S,将上述查询转换为:SELECT  *  FROM  S1。

    WHERE ‘公司代码’LIKE ‘015023’AND ‘作废单数量’>10。其次,当不同LDB中存在数据相交时,以个人代理人基本信息表Person(pNo,pName,pSex,pAge,pClass,pCode)为例,对其进行垂直分片,使其分为P1(pNo,pName,pSex,pAge,pClass)和P2(pNo,pName,pClass,pCode)两个局部模式,显然两个局部模式是存在相交的。假设P3由P1和P2一般化得到,则一般化关系模式和外连接关系模式如下:


      考虑对关系P4的全局查询:

    SELECT  P4.name

    FROM  P4

    WHERE  P4.pClass  LIKE  ‘助理"  AND  P4.pAge>35

    则最好的划分是基于pClass的划分。分解成如下子查询:

    对object(P1)—object(P2):

    SELECT  P1.pName

    FROM  P1

    WHERE  P1.pClass  LIKE  ‘助理"  AND  P1.pAge>35
             AND  P1.pNo  NOT  IN  
             (SELECT  P2.pNo  FROM  P2)

     

    对object(P1)∩object(P2):

    SELECT  P2.pName

    FROM  P2,P1

    WHERE  P2.pClass  LIKE  ‘助理"

     

    AND  P2.pAge>35

    AND  P2.pNo=P1.pNo

    对object(P2)—object(P1):

    由于P4.pAge=NULL,所以关于它的子查询被丢弃。

    有些情况需要多层次的查询分解才能达到要求,即将得到的子查询进一步分解,以使子查询涉及的查询范围仅为一个数据库服务器。例如考虑对objcet(P1)—object(P2)的子查询,还可以分解为两个子查询,一个为“SELECT  P2.pNo  FROM  P2”;
    另一个为“P1.pNo  NOT  IN  X”,其中X为前一个子查询的查询结果。
    通过查询分解,得到一系列只涉及一个数据库服务器的子查询语句,从而可以完成全局查询。上述方法实际上是对现实世界中的对象(object)做的一个完全划分,从而避免了数据的冗余,使查询分解既简单,又为后期的查询优化提供了良好的基础。
    3 结束语

    本文所探讨的同构分布式数据库系统的查询与实现是在分析、总结实例的基础上,结合分布式数据库与计算机技术发展的趋势提出的,值得借鉴并进一步发展下去。
    [参考文献]
    [1] 陶世群.分布式数据库系统中的设计方法和技术[J].吉首大学学报,2001,(03).
    [2] 丛丽晖,夏秀峰,富刚,等.NDBMS的查询优化技术研究[J].微处理机,2003,(01).
    [3] 郑宇,周广生.分布式数据库中数据分配策略及实例研究[J].计算机工程与应用,1997,(12).
    [4] 张敬伟,周娅.基于集合划分的分布式数据库查询分解算法[J].桂林电子工业学院学报,2003,(01).

    相关热词搜索: 分布式 研究 查询 数据库系统

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章