admin 管理员组

文章数量: 887021


2023年12月22日发(作者:equals参数怎么用)

2010年第2期 漳州师范学院学报(自然科学版) No.2.2010年 (总第68期) Journal of Zhangzhou Normal University(Nat.Sci.) General No.68 文章编号:1008—7826(2010)02-0053—04 一 基于Oracle的分布式数据库透明性问题的研究 许冲 ,衡星辰 (1.漳州师范学院计算巾心,福建漳州363000;2.国网信息通信有限公司,北京100054) 摘要:提出了一种解决分布式数据库透明性问题的模型方法.首先从分布式数据库的四个层次的透明性出 发,着重分析了扩展的关系型数据库…oracle数据库在四个层次上的透明性的实现机制,接着,给出了一种基于全 局关系查询服务和命名服务的解决方法,并针对复杂关系查询问题进一步进行了分析和模型建立,试图提高对分 布式数据库的查询效率和效能. 关键字:ORACLE;分布式数据库;透明性;命名服务:快照;注册接口 中图分类号:TP3l1 文献标识码: A 1 引言 分布式数据库系统的一个重要特征是它的存在对用户是完全透明的,用户能够象与单一集中式系统进 行通信那样来开发程序和操作数据库.在分布式数据库中的分布透明包括了数据分片,数据分配,数据冗 余,以及数据模型等透明性.如果一个分布式系统提供了上述多种透明,则我们说它具有完全透明性 ¨J.ORACLE系列的分布式数据库系统提供了不同程度的透明性,但仍未能实现完全透明性.本文首先介绍 了ORACLE系统实现分片和位置透明的机制,接着针对其存在的问题,提出了一种基于全局关系查询服务 和命名服务的解决机制,最后针对复杂关系查询问题给出了一个具体的优化模型并进行分析. 2分布式的透明性 在分布式数据库中的分布透明【2 包括了数据分片,数据分配,数据冗余,以及数据模型等透明性.为了 说明DDB的分布透明,我通过四级透明来讨论.它们是:全透明,用户只需对全局关系操作;次透明,用 户需指定片断名,系统只提供位置透明;无透明,用户指定片断名的同时,还须指定它所在的位置,系统只 提供全局模式对LDBMS的映像,非透明,系统不提供不同数据模型的转换. 现以全局关系SUPPLIER为例,查找给定SNO的供应商名SNAME. (1)全透明(分片透明):用户只需对全局关系查询 Select sname From supplier Where sno=¥sno; (2)次透明(位置透明):系统只提供位置透明,用户需指定对全局关系的分片名.此例,需分别指明 supplier的逻辑关系名supplierl和supplier2. select sname from supplierl Where sno=¥sno; Ifnot#found then select shame From supplier2 Where sno=¥sno; 收稿¨期:2009-12—30 作肯简介:许 ̄(1981.),男,福建省 安县人,助理实验师 

漳州师范学院学报(自然科学版) 2010年 (3)无透明(数据库模式透明): 系统既不提供分片透明,也不提供位置透明,所以应用程序要指定片段 名以及片段所在场地. Select shame From supplier l at site 1 Where SNO= ̄SnO Ifnot#found then Select sname From supplier2 at site2 Where sno=¥sno (4)非透明:系统不提供不同数据模型或数据库语言的转换. 3 ORACLE系统在实现分片和位置透明性上的解决机制 ORACLE通过提供的快照,视图,触发器,远程数据库链,同义词,表的同步复制和异步复制等机制在 一定程度上实现了分片透明和位置透明. ORACLE利用表的同步复制机制将各节点经常要访问的数据在各节点都存放一个副本,此副本的存放 对用户是透明的.网上任一数据库的主要数据一旦变更立即引起所有副本的数据更改.ORACLE中使用了 触发器来实现表的同步复制.  ̄N(SNAPSHOT)[41是只读的复制表,它可以是表的全部副本,也可以是表的一个自己的副本.快照可 以通过对一个或多个主表或视图的分布查询来定义.当主表被修改时快照并不修改,为保证快照与主表的 一致性,可以根据需求定期自动或手动地刷新快照.由于快照地本质是只读地记录集,所以当表被频繁查 询时才建立表地快照并分布于数据库地其它结点上,当用户从分布式系统地多节点上查询主表数据时通过 快照会使查询速度大大提高. 本地视图在分布式数据库系统中可为本地及远程的表提供位置透明性.如本地表DEPT,远程表 SUPPLY,为使这两张表的位置对用户透明,可在本地数据库中建立一个视图.在访问视图时,不知道也不 必知道数据物理上存放于何处以及多表的检索是如何实现的,并且查询语句的写法也于直接从两张表中检 索的语句写法有很大的不同.所以视图也很好地隐藏了数据地物理存放,实现了位置地透明性. 同义词无论是在分布式或非分布式环境中都是非常有用的,它可将原基本对象在分布式系统中地物理 位置隐藏起来.若基本对象改变了或改变了结构,只要改变同义词地定义,而引用同义词地应用则不必进 行任何修改.另外,使用同义词还可使分布式数据库系统中地用户地编程量减少. 4仍未解决的问题 对于分片透明,ORACLE并没有按照分片透明的本意来提供彻底的,方便的实现机制.也仅仅是通过 建立视图来代替分片透明中的全局关系.可是这只是形式上的代替,并不是理念上的代替.视图其实是另 外一张综合了多张表的关系表而已.我们对视图的查询最终还是基于视图本身的查询,并不像建立全局关 系那样可以由系统自动的去包含有用户指定的查询信息的分片上去查询.所以,ORACLE基于视图的分片 透明不是一种理想的解决机制. 另外,对于分布透明,无论是建立快照还是视图,都需要系统管理员对其进行定义,然后在和实际地 编程人员进行协商,在这之后,当编程人员使用视图或快照时,那些数据库的物理位置由于已经被快照和 视图隐藏了,所以它们对编程人员来说是透明的.可是问题是:这些实现透明的要素是事先经系统管理员 定义的,而且还需要系统管理员和编程人员进行协商才能决定各个快照和视图的具体含义,不仅因为这些 要素占用了系统的资源空间而且也因为涉及两种角色的人而要把一些时间花费在协商上面.而这似乎不是 我们要实现的数据库的分布式透明性的初衷.我们的目的是需要一个完全的实现分布式透明性的大型关系 

第2期 许冲。街星辰:基于Oracle的分布式数据库透明性问题的研究 55 型数据库.它从本质上解决了透明性的问题,并不完全依赖于一些象快照,视图等等的实体要素.由此,本 文提出了一种基于全局关系查询服务和命名服务来实现分布式数据库透明性的实体模型. 5一种基于全局关系查询服务和命名服务的解决机制 如何实现分片和分布透明,关键在建表时,就先对该表设定分片的方式【j 和分片属性,此时,该表已经 不是传统意义上的本地关系表,而代表一个虚拟的全局关系表.当该表创建完成时,系统会利用全局关系 查询服务在全局关系表中创建属于该全局关系的分片,并要求用户初始化每一块分片的物理位置.此时这 些分片就和一开始建立的全局关系表绑定在了一起.以后,当用户对虚拟的全局关系表进行操作时,系统 会通过全局关系查询服务接口获得此次用户要操作的分片,接着到该分片所在的物理位置上执行该次操作, 从而实现了分片透明. 全局关系查询服务接口I 会在本局域网内为所有联网的oracle节点建立起一棵描述在每个节点上创建 的全局关系表和其分片的相互关系的树形结构.该树形结构中的每个树节点代表一个本局域网内的oracle 节点,该树节点上存储着相应的oracle结点上创建的所有全局关系表和其分片的相关信息.每个本地oracle 节点上的用户都可以通过全局关系查询服务接口浏览整个树形结构.一旦某个oracle节点上增删改了本地 的全局关系表和其分片的相关信息,那么系统会利用全局关系查询服务接口将本次修改信息更新到树形结 构上.全局关系查询服务接口还提供了对全局关系表和其分片的各种操作,如全局关系表名或分片名的修 改,分片的物理地址的修改,分片的查询等等,由于篇幅所限,本文不在详细介绍. 分布透明的实现主要依赖于命名服务注册机制,基本思想概括如下: 前一段提到,在建表时,系统会要求用户初始化每一张分片的物理位置,当用户给定该分片的物理位 置后,系统会根据刚刚给定的物理位置通过本机上的命名服务接口为该分片在全局命名空间内注册一个全 局(本局域网内)唯一的ID号,使该ID号可以和该分片唯一的对应起来.这样,当一台装有ORACLE的计 算机对某个全局关系名进行操作时,系统会自动根据sql语句中提供的属性参数,通过本地上的全局分片 查询服务接口获取此次操作的分片,接着系统再通过本地上的全局命名服务接口查找和该分片对应的全局 唯一的ID号,并根据该ID号在远程oracle节点上执行此次操作.全局ID号由该分片所在的计算机名+通 信的端口号+所属的用户名和用户密码+本地数据库服务名十分片名构成.由以上过程可以看出,全局分片 查询服务接口和全局命名服务接口必须相结合才能完成分片及分布的透明性,所以,全局分片查询服务接 口和全局命名服务接口的透明衔接是至关重要的. 全局命名服务接口还要负责对本局域网内的所有ID号进行管理.如:根据分片名查询所对应的ID号, 对ID号的增删改,对不同oracle节点上建立的同样的分片名和其唯一的ID号的正确识别,等等.由于篇幅 所限,本文不在详细介绍. 需要提到的是,全局分片查询服务接ISl和全局命名服务接口还需ORACLE系统提供的net8i(oracle内 部网络通信协议)的支持.所以,当本地通过ID号访问过一次某个oracle的远程节点以后,系统不能立即将 通过net8i建立起来的和该oracle远程节点的连接立即撤销,否则,当下一次通过ID号又访问该oracle远 程节点时,又要通过net8i建立新的连接而造成的网络资源的消耗,所以应该继续保持此次连接直到本地用 户退出oracle为止.若连接缓冲池已满,则可以根据最近最少访问算法对连接缓冲池进行更新. 6关于复杂关系查询的优化模型 如果仅利用命名服务机制来实现oracle的分布透明,在针对多个关系的复杂查询时并不见得高效,而 将oracle特有的快照机制和命名服务机制相结合才是最佳的解决方法.虽然快照并没有真正的实现位置透 明,它只是远程数据表在本地的一个拷贝,可是通过创建本地拷贝也有效的减少了网络传输,所以需把两 种机制相结合,根据不同的网络环境来选择使用.比如:当在一个局域网内时,由于覆盖范围小,数据的传 

漳州师范学院学报(自然科学版) 输的可靠性高,我们仅采用命名服务注册机制就可以了.而当要在局域网和局域网之间或局域网和广域网 之间进行数据通信时,由于覆盖范围大,网络延迟大,就需把两种机制相结合. 具体的实现步骤如下: 1_所有站点上的注册服务器都在本地数据库中建立一张注册表,用来永久保存所有在它上面注册了 的分片的ID号和描述该分片的其它信息. 2.当一个本地oracle节点对全局关系表进行操作时,首先通过全局关系服务接口查询此次操作是在 命服接 哪块分片上,接着再通过命名服务接口查询该分片所对应的ID号,若查出该ID号是在本地创建,则直接对 名务¨ 在本地的该分片进行操作;若不是在本地创建,再由oracle系统查看本地有没有该分片的快照,若 ,则对 伙 该快照进行操作,若没有,再通过该分片对应的ID号进行远程操作.当本地的命名服务器找不到该分片对 阴~ 接 ¨ 快 照 接 ¨ 应的fD号情况下,会向上级的命名服务器发出查询请求,若还是没有,则再向更上级的命名服务器发出查 全关服 全关服 询请求,层层递进,直到查询到该分片对应的ID号为止,并最终给最开始发出查询请求的命名服务器返回 局系务 局系务 该分片对应的ID号. 3.每个分片所对 命名 l快照I全局 应的PID号是在建表 服务 l lI芙系  命服接 名务¨ 时由系统在本地创建, 接f J l接H I服务 所以每个分片的PID 快 照 接 口 号都要在本地的命名 快 接 命名 命名 附~ ¨ 命名 空间或上层的命名空 全关快照 服 全局 服务 服务 全关服 服务 局系务 关系 间存放. 接l l 接1.1 =量系务 接 I 服务 4.在局域网内一 定要设置一个顶层的 注册服务器.它要承担 ORACLE站点的客户端 命服接 名务 ¨ 和其它局域网内的注 全局 册服务器的连接.而且 快 接 关系 照 口 它不在本地数据库中 服务 保存分片和PID号的对应关系,仅保存要找到目的ID号的下一级注册服务器的地址 7 结 沦 图1复杂关系查询模型架构图 分布式数据厍的分 片和分布透明性是分布式数据库领域中一个极其重要的特性,要彻底将其实现并不是件容易的事情.象 oracle等大型的关系型数据库系统软件都试图要彻底解决这个问题,但目前为止并没有一个理想的解决方 法.本文提出的这种新的实现其分片和分布透明性的机制是在总结oracle这种关系型数据库的解决机制的 基础上提出来的,并没有抛弃oracle本来的实现机制,象oracle中的数据库连接串、快照等oracle对象和本 文的提出的方法进行了深化结合.关于数据更新对透明性的影响以及数据完整性问题将是下一步的研究工 作. 参考文献: [11邸晓奕,万映辉.ORACLE分布式数据库系统位置透明性的实现机制【J】.计算机系统应用,1998,(6):30-31・ [21邬厚民,李美村,分布式数据库系统透明性的设计与实现【J】.福建电脑,2007,(3):137-149・ 【3】郑国栋.分布式多层数据库结构的研究及应用【D].武汉:武汉理-T大学,2006・ f4】潘承斌.ORACLE数据快照技术在数据交换巾的应用【J】.电脑知识与技术,2010,(2):262-263・ 5j招童飞.Oracle数据库信息源日志读取与查询服务系统的研究与实现【D】.暨南人学,2008. 【责任编辑:林宝德】 


本文标签: 分片 服务 全局 查询 关系