一种面向对象代理数据库约束的备份方法

文档序号:6370987阅读:427来源:国知局
专利名称:一种面向对象代理数据库约束的备份方法
技术领域
本发明属于数据库备份领域,特别是ー种针对对象代理数据库管理系统中约束的备份方法。
背景技术
随着数据库的应用领域不断扩大,传统的关系型数据库和面向对象数据库已不能应对逐渐出现的数据海量化、数据对象复杂化、数据操作灵活性、数据存储高效性等挑战。为了解决复杂数据管理的需求,提出了基于对象代理的数据管理模型,并在此模型基础上开发了对象代理数据库TOTEM。由于对象代理数据库能很好地解决传统数据库面临的主要问题,它已被广泛应用于微生物信息服务系统、音乐服务系统、专利管理与服务系统、社区管理系统、地理信息系统等多个领域。随着对象代理数据库里信息量的急剧增加,如何保证 数据的安全性和数据恢复能力越来越受到人们的关注,数据库备份作为保证数据库在故障发生时保障数据库可恢复性的技术显得尤为重要。备份数据库的方法通常可以使用文件系统备份和结构化查询语言备份两种方式。其中文件系统备份的策略是直接拷贝用于存放数据库数据的文件,但这种方法存在过于依赖特定操作系统的不足。不同的操作系统环境下文件系统的具体实现不同,因此文件系统备份策略无法实现跨文件系统平台的兼容性。结构化查询语言转储的方法是创建一个文本文件,里面包含了模式和数据相关的结构化查询语言命令,当把这个文件反馈给目标服务器时,将重建与转储时状态ー样的数据库。相对于文件系统备份策略,结构化查询语言转储策略显然有更好的文件系统平台无关性。因此,本发明中的对象代理数据库备份机制是基于结构化查询语言转储策略的。目前常用的数据库中,关系数据库中不支持类和对象,而面向对象数据库及对象关系数据库中类的对象间不存在任何的依赖关系,对象代理数据库不仅保留了类、对象和方法的概念,还在类间、对象间、类与对象间存在依赖关系。正是由于传统数据库与对象代理数据库的这些区别,所以传统的数据库备份方法不能适用于对象代理数据库。在对象代理数据库中,可备份对象包括命名空间、类型、方法、聚集函数、操作符、操作符类、编码转换、类、属性的默认值声明、索引、重写规则、触发器、约束、过程语言、类型转换、对象数据、大对象、大对象评论等。其中,触发器、规则等备份对象类似于传统数据库,可从系统表中直接读取;类对象数据可从对象文件中读取。而类之间的依赖、类和对象之间的依赖、对象之间的依赖等属于对象代理数据库中特有的约束,因此本发明主要涉及对象代理数据库约束的备份。对象代理数据库系统的数据由一系列的对象和代理对象表示。数据库的模式被组织成代理层次,由一组类和代理类构成。对象代理数据库系统提供丰富的查询功能,既支持对类和代理类进行查询,也可以进行导航式的跨类查询。对象代理数据库中代理对象依赖于其源对象而存在,是通过代理关系定义的对象。实际上,代理关系是通过切换操作所表示的继承关系,而代理对象可以理解为可扩展的半物化对象视图。由于代理对象可以选择性继承源对象的部分(或全部)属性、方法,因此利用代理对象可以实现对象视图;可扩展是指在传统的继承机制外,允许代理对象扩展定义新的属性;半物化是指代理对象既有虚属性又有扩展定义的实属性。虚属性定义中包含两类操作读切换操作、写切換操作。读切换操作可以看成一个从源属性到虚属性的函数变换,而写切換操作可以看成一个从虚属性到源属性的逆变换。当需要读取虚属性值时,需要调用其读切换操作计算其值。而对虚属性执行写操作时,需根据虚属性的更新值,调用其写切換操作计算出源属性的更新值,再对源属性执行写操作。代理对象的属性和源对象的属性之间的函数变换关系称之为切换操作;相对应的代理类和源类之间的切换操作函数依赖关系称之为切换依赖。在对象代理数据库中,类定义了具有相同属性和方法的对象,类的模式即为对象的数据模式;类对象即为类的实例。依赖约束反映了类结构内部属性间的依赖以及类间、对象间、类与对象间的约束关系。根据对象代理数据库的机制,其类模式及各种依赖约束关系均存储在系统表中,类对象数据存储在类数据文件中。在进行数据库的备份时,需要从各相关系统表中抽取模式及依赖的信息及从数据文件中抽取对象的信息来构建用于数据库恢复的结构化查询语言语句。这样在恢复目标数据库时,对象代理数据库类模式和类对象的备份与传统数据库的备份相似,通过抽取系统表中的相关信息构建结构化查询语言语 句,在恢复时执行这些结构化查询语言语句即可恢复与备份目标数据库一致的恢复目标数据库。

发明内容
本发明针对现有技术不足,提供了ー种面向对象代理数据库约束的备份方法,该方法不仅能备份类模式和类对象数据,还能备份类间、对象间、类与对象间的约束关系。本发明提供的ー种面向对象代理数据库约束的备份方法,包括以下步骤
步骤1,对于ー个需要进行备份的对象代理数据库,提取相关数据库系统表中保存的约束信息;
步骤2,根据步骤I所得约束信息进行可备份对象链构建,包括为每个可备份对象创建对象模式信息,获取类对象的对象数据和局部依赖信息,以及加入全局依赖信息,得到ー个可备份对象链;
步骤3,进行可备份对象安全排序,包括对步骤2所得可备份对象链中所有可备份对象进行重新排序,然后按可备份对象之间的依赖关系进行拓扑排序,得到一个可备份对象的安全序列。而且,根据步骤I所确定的约束信息进行可备份对象链构建时,其具体步骤为 为每个可备份对象创建对象模式信息的实现方式为,获取出所有需要导出的可备份对
象的对象模式信息,将可备份对象的对象模式信息保存在导出结构体中;
获取类对象的对象数据的实现方式为,循环扫描每一个模式表,判断是否是需要备份的类对象,如果是,则为类对象的对象数据分配存储表数据信息的空间以及备份标识符,备份标识符从I开始递增;并将类对象的导出结构体存入备份标识符数组中,且备份标识符数组下标为其备份标识符;
加入全局依赖信息的实现方式为,检索到具有依赖关系的可备份对象对后,通过对具有依赖关系的两个对象分别对应的对象标识符搜索得到对应的导出结构体,然后给两个对应的导出结构体加入依赖上的联系,依赖对象的对象标识符存放在被依赖对象结构体的依赖对象标识符信息中。而且,对步骤2所得可备份对象链中所有可备份对象进行重新排序时,不同类型的可备份对象的导出优先级取决于可备份对象类型优先级数组,可备份对象类型优先级数组记录了可备份对象的类型排序和对象标识符排序结果,相同类型的可备份对象按照名称排序;按可备份对象之间的依赖关系进行拓扑排序的实现方式为,依赖于其他对象的对象,其备份总是在其依赖的对象备份后进行。而且,相关的数据库系统表包括 tt_class、tt_attribute、tt_constraint、tt_proc.、tt_aepend.、11_deputytype, tt_deputy、tt_bipointer 热 ttjmpping,
系统表tt_class记录所有类的定义信息,系统表tt_attribute记录所有类的属性描述信息,系统表tt_constraint记录类上的局部依赖信息,系统表tt_proc记录类的方法描述信息,系统表记录对象之间的切换依赖关系,系统表tt_deputytype记录代理类的相关代理信息,系统表tt_deputy记录源类和代理类间的关系,系统表tt_bipointer记录对象和代理类间的关系,系统表tt—mapping记录类和对象与其物理地址的映射关系。本发明技术方案的效果在于,由于传统的数据库模型中不存在对象与对象间的依赖约束关系,所以传统的数据库备份方式不适用于对象代理数据库,针对对象代理数据库提出了ー种保存依赖约束关系的备份技术。本发明针对对象代理模型中类间、对象间、类与对象间存在约束关系分别设计了高效的备份方法;提供了对象代理数据库约束信息存储方案;并针对各种依赖约束关系提出了构建可备份对象链和可备份对象的安全排序。本发明提出的一种适用于对象代理数据库的约束备份方法,其特点在于能够备份类间、对象间、类和对象间的依赖约束关系,克服了传统备份方法不能应用在对象代理模型上的缺陷,同时备份过程简单高效。


图I是本发明实施例中备份系统的框架图。图2是本发明实施例中相关系统表的关系图。图3是本发明实施例中类模式的获取流程图.
图4是本发明实施例中类的属性模式的执行流程图。图5是本发明实施例中模式对象间的依赖关系图。图6是本发明实施例中数据对象间的依赖关系图。
具体实施例方式 本发明提供ー种面向对象代理数据库约束的备份技术方案。本发明分析了对象代理模型中类间、对象间、类与对象间存在约束关系的特殊性,将约束信息保存在数据库系统表中;通过收集依赖信息,为每个可备份对象创建可备份对象数据结构链;对可备份对象按照对象间的依赖约束关系进行排序,保证了可备份对象间备份顺序的正确性。这种技术方案具有良好的约束备份完整性和安全性,并且实施过程简单高效。以下说明理论基础以便理解本发明技术方案
对象代理模型是对面向对象模型的扩充。对象代理模型在面向对象模型的类和对象等概念的基础上,通过建立代理类和代理对象来满足复杂数据的管理需求。关系数据模型的灵活性在于关系表可以通过关系代数进行分割和重组,变换其表现形式以满足不同数据库应用的需要。面向对象数据模型将数据和操作封装成对象,对象本身难以分割和重组,因此其柔软性较差。将代理对象引入到面向对象数据模型,使得代理对象间接地分割和重组对象,从而增强对象表示数据的柔软性。在传统面向对象模型中,继承通常表现为子类继承其父类的所有属性和方法,这种继承造成了传统面向对象数据库的模式很僵硬。而在对象代理模型中,代理对象可以继承源对象的部分或者全部属性和方法,同时可以根据应用需要増加源对象没有的属性和方法,这样就增强了数据库模式的灵活性。代理对象既可以作为对象的视图,又可以作为对象的角色。对象的角色随时间的变化可以看成对象的移动。因此,代理对象可将这三个概念统一起来处理。现有技术中,基于对象代理模型和复杂数据管理的实际需求,开发了一个对象代理数据库TOTEM。对象代理数据库系统在体系结构上沿用了传统数据库系统的体系结构,系统由存储管理、查询处理与并发控制等系统模块组成,其模块结构如图I所示在数据库的备份过程中,首先通过连接管理系统(提供终端连接、应用程序、转储和恢复)链接备份目标数据库,然后编译查询系统对备份命令进行编译执行(包括分析编译、查询优化、查询执行、更新迁移),与此同时需要对事务处理系统的相关支持(包括并发控制、事务管理、日志 管理),最后需要通过存储管理系统进行数据的读取(包括索引、缓冲区、存储器)。对象代理数据库系统既有关系数据库系统灵活管理数据的优点,又继承了面向对象数据库系统在复杂数据管理方面的优势,同时避免类似对象关系数据库系统ー样在一个系统中实现两个数据模型的缺点。对象代理数据库系统的数据由一系列的对象和代理对象表示。数据库的模式被组织成代理层次,由一组类和代理类构成。对象代理数据库系统提供丰富的查询功能,既支持对类和代理类进行查询,也可以进行导航式的跨类查询。相对以往的面向对象数据库系统而言,对象代理数据库系统支持灵活对象视图、对象动态分类和跨类查询等高级数据库功能,可以满足更多复杂数据管理应用的需求。代理对象依赖于其源对象而存在,是通过代理关系定义的对象。实际上,代理关系是通过切換操作所表示的继承关系,而代理对象可以理解为可扩展的半物化对象视图。由于代理对象可以选择性继承源对象的部分(或全部)属性、方法,因此利用代理对象可以实现对象视图;可扩展是指在传统的继承机制外,允许代理对象扩展定义新的属性;半物化是指代理对象既有虚属性又有扩展定义的实属性。对象代理模型的灵活性和柔软性使之能表达的语义比传统的面向对象模式更加丰富。但应该注意到,现实世界中往往有些约束条件将限定数据库模式的定义,这些约束条件一旦被打破,不但不能准确表达设计者的意图,而且还将引起数据库模式的异常。所以,如何正确完整地表述和备份约束条件,是对象代理数据库的基本功能。全局依赖用于描述对象代理数据库模式中类(或者代理类)之间的依赖关系。由于对象代理数据库模式不存在传统面向对象模式中特殊化一一般化的继承关系,所以类之间的联系主要是类(或者代理类)之间的“代理”关系。源类与代理类之间通过切换操作实现属性和方法的更新迁移,从语义角度分析此机制就是将源类中满足一定条件的对象按照一定语义关联重新组合构成代理类。因此全局依赖是与对象的生成方式相联系的。对象代理模型通过切换操作实现源类属性到代理类属性的选择性虚拟继承,因此,具有切換操作关联的源类与代理类之间存在着依赖关系。
对象代理模型中的代理类按其产生方式被分为4种选择代理类,连接代理类,分组代理类和联合代理类,它们分别对应代理类的4种语义。其中,选择代理类只从一个源类中选择对象来派生代理对象,连接代理类通过组合若干个类的对象来派生代理对象,分组代理类对其源类的对象进行分组之后按组来派生代理对象,联合代理类则派生若干个类的对象全体进行合并构成代理类。源类中所有满足“条件”的对象都将在代理类中生成相应的代理对象,所以,源类与由条件控制生成的代理类具有对应的依赖关系,根据条件所表达的语义不同,依赖关系对应地分为4种选择依赖、连接依赖、分组依赖和联合依赖。以下结合实施例详细说明本发明技术方案,包括详述全局依赖和局部依赖在备份过程中的备份方法,即可备份对象链的构建和可备份对象的安全排序,并简单介绍了对应的数据库恢复方案。下面结合在对象代理数据库TOTEM上的具体实施步骤进ー步说明,具体实施时可采用计算机软件技术实现自动运行流程。步骤1,对于ー个需要进行备份的对象代理数据库,提取相关数据库系统表中保存的约束信息。 在对象代理数据库中,类、代理类与其虚属性的切换表达式均保存在系统表中,类和代理类的实例则保存在数据文件中。对象代理模式由类(或者代理类)与类之间所必须满足的约束条件共同构成,约束条件也称为依赖约束。提取实现根据具体的对象代理数据库进行。实施例中,保存约束信息的相关数据库系统表主要包括 t_ classヽtt_at tri bu te、tt—constraint ヽ tt_proc、tt_aepena、11_ depu ty type, tt—deputy、tt_bipomter^ tt_mapping ^各表意义如下表所示_
权利要求
1.ー种面向对象代理数据库约束的备份方法,其特征在于,包括以下步骤 步骤1,对于ー个需要进行备份的对象代理数据库,提取相关的数据库系统表中保存的约束信息; 步骤2,根据步骤I所得约束信息进行可备份对象链构建,包括为每个可备份对象创建对象模式信息,获取类对象的对象数据和局部依赖信息,以及加入全局依赖信息,得到ー个可备份对象链; 步骤3,进行可备份对象安全排序,包括对步骤2所得可备份对象链中所有可备份对象进行重新排序,然后按可备份对象之间的依赖关系进行拓扑排序,得到一个可备份对象的安全序列。
2.如权利要求I所述面向对象代理数据库约束的备份方法,其特征在于步骤2中, 为每个可备份对象创建对象模式信息的实现方式为,获取出所有需要导出的可备份对象的对象模式信息,将可备份对象的对象模式信息保存在导出结构体中; 获取类对象的对象数据的实现方式为,循环扫描每一个模式表,判断是否是需要备份的类对象,如果是,则为类对象的对象数据分配存储表数据信息的空间以及备份标识符,备份标识符从I开始递增;并将类对象的导出结构体存入备份标识符数组中,且备份标识符数组下标为其备份标识符; 加入全局依赖信息的实现方式为,检索到具有依赖关系的可备份对象对后,通过对具有依赖关系的两个对象分别对应的对象标识符搜索得到对应的导出结构体,然后给两个对应的导出结构体加入依赖上的联系,依赖对象的对象标识符存放在被依赖对象结构体的依赖对象标识符信息中。
3.如权利要求I所述面向对象代理数据库约束的备份方法,其特征在于步骤3中, 对步骤2所得可备份对象链中所有可备份对象进行重新排序的实现方式为,不同类型的可备份对象的导出优先级取决于可备份对象类型优先级数组,可备份对象类型优先级数组记录了可备份对象的类型排序和对象标识符排序结果,相同类型的可备份对象按照名称排序; 按可备份对象之间的依赖关系进行拓扑排序的实现方式为,依赖于其他对象的对象,其备份总是在其依赖的对象备份后进行。
4.如权利要求I或2或3所述面向对象代理数据库约束的备份方法,其特征在于相关的数据库糸统表包括 tt_ class ヽtt_at tri bute、t t_ cons train t、t t_proc、11_ depend、11_deputytype、tt_deputy^ tt_bipointer 取 tt_mapping, 系统表tt_class记录所有类的定义信息,系统表tt_attribute记录所有类的属性描述信息,系统表tt_constraint记录类上的局部依赖信息,系统表tt_proc记录类的方法描述信息,系统表记录对象之间的切换依赖关系,系统表tt_deputytype记录代理类的相关代理信息,系统表tt_deputy记录源类和代理类间的关系,系统表tt_bipointer记录对象和代理类间的关系,系统表tt_mapping记录类和对象与其物理地址的映射关系。
全文摘要
本发明提供一种面向对象代理数据库约束的备份方法,包括步骤步骤1,对于一个需要进行备份的对象代理数据库,确定相关数据库系统表中保存的约束信息;步骤2,根据步骤1所确定的约束信息进行可备份对象链构建,包括为每个可备份对象创建对象模式信息,获取类对象的对象数据和局部依赖信息,以及加入全局依赖信息,得到一个可备份对象链;步骤3,进行可备份对象安全排序,包括对步骤2所得可备份对象链中所有可备份对象进行重新排序,然后按可备份对象之间的依赖关系进行拓扑排序,得到一个可备份对象的安全序列。
文档编号G06F11/14GK102693174SQ20121018386
公开日2012年9月26日 申请日期2012年6月6日 优先权日2012年6月6日
发明者何镝, 余鸣, 周玉, 彭智勇, 洪亮 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1