分布式数据库系统查询的研究与实现.docx_第1页
分布式数据库系统查询的研究与实现.docx_第2页
分布式数据库系统查询的研究与实现.docx_第3页
分布式数据库系统查询的研究与实现.docx_第4页
分布式数据库系统查询的研究与实现.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分布式数据库系统查询的研究与实现 (内蒙古经贸信息服务中心,内蒙古 呼和浩特 010010) 摘 要:文章以某保险公司的业务处理系统为例,详细 研究了分布式查询数据库系统,并给出了实现方法。 关键词:分布式;查询系统;研究;实现 中图分类号:G252.7 文献标识码:A 文章编号: 10076921(XX)08004802 分布式数据库系统中的查询处理较集中式数据库复杂, 本文结合某保险公司的业务处理系统研究分布式查询及其 实现。 1 系统概述 从全局应用的角度出发,将各分支机构的数据库自下 而上构成分布式数据库系统,实现全局数据的完整性和一 致性,各营业机构仍然存放本机构的数据,总公司的数据 库则存放所有业务数据,并对数据进行完整性和一致性的 检查,这种做法虽然有一定的数据冗余,但在不同场地存 储同一数据的多个副本,能提高系统的可靠性和可用性, 也提高了局部应用的效率,减少了通讯代价。该分布式数 据库系统可以在对当前机构影响最小的情况下进行扩充, 增加新的营业机构时只需增加一个节点就可以了,同时也 使得各处理机之间的相互干扰降到最低。 740)this.width=740“ border=undefined onmousewheel=“return zoom_img(event,this)“ 2 系统查询的研究与设计 该业务处理系统是一个同构的分布式数据库系统,其 查询也就是分布式查询的一般处理过程如下图所示: 740)this.width=740“ border=undefined onmousewheel=“return zoom_img(event,this)“ 分布式查询处理的可选方案很多,这就有一个查询优 化的问题。分布式数据库系统中存在两类查询优化问题, 一是在局部数据库上的查询优化,由局部 DBMS 执行,称为 局部查询优化;二是在整个分布式数据库中的查询优化, 称为全局查询优化。 保证分布式数据库系统全局查询有较好的效率通常是 以下面两条为基础的 DDBMS 分裂成概念数据库,使得数据 存放到离其应用点最近的节点。这个特征称作数据的局部 性,这有两个潜在的优势;由于每个节点只处理数据库的 一个部分,这样 CPU 和 IO 服务的竞争就不像集中式数据 库那样严重;而且局部性还减少了远程访问的延迟,这种 延迟常发生在广域网中。大多数分布式 DBMS 是结构化的, 这样就便于从数据的分布中获得最大收益。减少竞争和减 少通讯延迟的好处只有通过数据的合理分布才能得到。 支持 DDBMS 全局查询有较好效率的第二条是分布式系 统的固有并行机制可用于内部查询和内在查询的并行化。 内部查询并行化是多个查询同时执行的结果。内在查询并 行化是将单个查询分解成多个子查询以便每个在不同的节 点来执行,这样即可同时访问分布式数据库的不同部分, 提高查询效率。 2.1 数据分布 如上所述,为分布式查询的全局优化,必须保证其数 据的合理分布。分布式数据库系统可以通过复制、分片和 复制+分片三种方式存储数据,因为各数据库之间存在一定 的数据冗余,又存在着差异,我们采用复制+分片的方式进 行数据存储。 在本例中,将关系分片,有利于按用户需求组织数据 的分布,目前的分片方式有水平分片、垂直分片、导出分 片、混合分片等四种。我们根据不同的数据关系采用不同 的分片方式: 2.1.1 在总公司与分支营业机构的数据关系中,由于 分支机构的数据是总公司业务数据的子集,我们采用水平 分片的方式,通过并运算实现关系的重构。 2.1.2 在总公司数据库服务器与 Web 数据库服务器的 数据关系中,数据是按照其应用功能来划分的,所以我们 采用垂直分片的方式。 具体的数据分配按照分公司只保存与分公司相关的数 据,总公司保存完整数据的原则实施。这样分配数据的优 点是:由于数据存放在经常使用的地点,就减少了响应时 间和网络通讯代价。在分布式数据库系统中,数据副本的 存在,客观上起到了增加数据可靠性的作用。另外,由于 总公司保存了系统的完整数据,所以便于进行面向全公司 的统计、分析工作。 2.2 查询的实现 按照分布式查询的目标和步骤,采用基于集合划分的 分布式数据库查询分解算法,该算法的思想如下: 2.2.1 对于全局查询的每一个属性,找到其相应的 object 划分; 2.2.2 取一个包含步骤中所有划分的最细划分; 2.2.3 对应每一个划分得到一个子查询。 结合某保险公司业务处理系统中的实例,说明查询分 解的实现:首先,如果数据在不同的 LDB 中没有相交,查 询分解很显然就是用相应的 LDB 名称代替全局名称。以单 证管理为例,假设 A 分公司有单证管理关系如下: 740)this.width=740“ border=undefined onmousewheel=“return zoom_img(event,this)“ 对 S 做如下查询:SELECT * FROM S WHERE 公司代码LIKE 015023AND 作废单数 量10,显然,该查询的目标数据只在片段 S1 中,则我 们可以直接用局部表名 S1 代替全局表名 S,将上述查询转 换为:SELECT * FROM S1。 WHERE 公司代码LIKE 015023AND 作废单数 量10。其次,当不同 LDB 中存在数据相交时,以个人代 理人基本信息表 Person(pNo,pName,pSex,pAge,pClass,pCode)为例, 对其进行垂直分片,使其分为 P1 和 P2 两个局部模式,显 然两个局部模式是存在相交的。假设 P3 由 P1 和 P2 一般化 得到,则一般化关系模式和外连接关系模式如下: 740)this.width=740“ border=undefined onmousewheel=“return zoom_img(event,this)“ 考虑对关系 P4 的全局查询: SELECT P4.name FROM P4 WHERE P4.pClass LIKE 助理 AND P4.pAge35 则最好的划分是基于 pClass 的划分。分解成如下子查 询: 对 object(P1)object(P2): SELECT P1.pName FROM P1 WHERE P1.pClass LIKE 助理 AND P1.pAge35 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.pAge35 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 为前一个子查询的查询结果。 通过查询分解,得到一系列只涉及一个数据库服务器 的子查询语句,从而可以完成全局查询。上述方法实际上 是对现实世界中的对象做的一个完全划分,从而避免了数 据的冗余,使查询分解既简单,又为后期的查询优化提供 了良好的基础。 3 结束语 本文所探讨的同构分布式数据库系统的查询与实现是 在分析、总结实例的基础上,结合分布式数据库与计算机 技术发展的趋势提出的,值得借鉴并进一步发展下去。 参考文献 1 陶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论