数据库自动分类方法

文档序号:6459886阅读:267来源:国知局
专利名称:数据库自动分类方法
技术领域
本发明涉及数据库系统中数据动态分类和一致性维护领域,特别是在对象代理数据库系 统中对象自动分类的技术。
背景技术
在传统的面向对象数据库和对象关系数据库中, 一个对象只属于一个类,间接地属于其 超类,不能同时出现在没有继承关系的多个类中;另外,对象难以在不同类之间迁移,以致 对象无法动态分类,这不能反映现实世界中客观实体的多样性和动态性。数据修改如果导致 对象在数据库中的迁移往往需要人为的分析和手动的修改,因此需要消耗数据库管理员和用 户的大量时间。为了克服以上不足,本发明人提出了新的数据模型对象代理模型。对象代
理模型通过引入代理对象和代理类的概念,能更好地对各种复杂的数据进行管理。本发明基 于对象代理模型支持对象的多重分类方式,在插入、修改和删除对象的时候,可以自动的将 相关对象派生到满足条件的类中或者从不再满足条件的类中删除,实现数据库动态分类功能。
在基于对象代理模型的数据库(称为对象代理数据库)中,源类与代理类之间存在着代 理关系, 一个源类可以同时定义多个代理类, 一个代理类也不仅限于代理一个源类。伴随着 类之间代理关系的是对象间的代理关系。 一个类中的对象可以是多个不同代理类中的代理对 象的源对象,同吋一个类中的对象也可以作为多个不同源类中的源对象的代理对象而存在。 代理对象既能够通过选择地继承源对象的属性和方法而作为源对象的特定接口 ,也能够扩展 一些额外的、附加的属性和方法。
在面向对象数据库和对象关系数据库中,父类和子类很难实现多继承的关系。同时子类 对象并不是父类对象在子类上的实例,它们之间没有直接联系。父类实例的修改,并不会导 致任何子类实例的更新。同样,了类实例的修改,也不会对父类实例产生影响。因此,在面
向对象数据库中,对象自动分类需要通过对象移动(ObjectMigration)来实现,然而面向对象数 据库很难提供对象移动机制。
在传统关系数据库中,元组是通过关系表存储的。因为表和表之间是没有继承或者代理 的关系的,所以传统关系数据库中也不存在对元组自动分类的能力。但是传统关系数据库中 存在的物化视图概念。所谓物化视图(MaterializedView),又称实化视图或者实体化视图。它 通过把数据库视图中的元组存储起来,从而将视图实物化。这样,数据库访问物化视图的速 度将比重新计算视图的速度要快。当定义视图的基关系被修改后,需要对物化视图进行维护, 以使其重新满足视图的定义条件。即实际元组修改后,其在满足选择条件的视图中的元组也 会被修改。物化视图有点类似对象代理数据库中的代理类,但存在以下不同
(1)代理类对象和其源类对象存在双向指针,对象之间可以实现快速的导航,在对象代 理数据库中,对源对象的更新,可以快速转换到其代理对象上的更新。对于代理对象可以进 行更新'对代理对象上虚属性的修改,是通过对象间的双向指针以及定义在属性上的"切换操作"方法,将更新传递到该属性作为实属性所存放的对象(可能是源对象或者代理对象) 上去;而物化视图的更新过程并不是通过双向指针来实现。
(2) 代理类类似一个半物化的视图,物化的只是代理类的模式,代理对象上的虚属性并 没有存储实际值。查询时,是通过定义在代理属性上的切换操作来确定具体的值。
(3) 代理对象上可以拥有自己的扩展属性,这部分属性占用了实际的存储空间,同时也 可以被下层代理对象所代理;而物化视图不具有私有的属性。
(4) 对象代理数据库中类间的代理关系相对于传统关系数据库中的视图层次更多,语义 更丰富。
因此,传统关系数据库中视图更新机制,也不适用于数据库中对象动态分类机制。 如上所述,由于对象代理数据库中代理对象与源对象之间存在着代理关系,对于任何对
象的修改可以传递到对其源对象和代理对象的修改,并导致这些关联对象在相应的类中出现
插入、删除和更新动作。因此这些对象代理数据库所特有的特征,可以天牛地支持数据库中
对象的自动分类功能。

发明内容
本发明要解决的技术问题是实现对象在数据库中的多重分类;提出一种适用于数据库 中对象的自动分类方案,为数据库提供对象被插入、更新和删除后的自动分类能力;提出一 套并发控制算法,保证自动分类时的数据一致性。
本发明解决其技术问题采用的技术方案足在数据库中,同一个对象可以隶属于多个类, 表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现 对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性,它包括数据库多 重分类方式、数据库自动分类机制的设计、数据库自动分类机制的实现和数据库自动分类时 的并发控制过程。具体如下
(1) 数据库多重分类方式
数据库多重分类方式是指同一个对象隶属于数据库中的多个类,对象只要满足类上定 义的语义约束就划分到该类中,同时同一个对象在不同类中的关联对象存在直接联系。
实现数据库对象的多重分类歩骤包括在数据库中创建多个类,根据其语义约束,建立 类间的关联关系,如果一个对象满足多个类的语义约束,创建多个关联对象,使其同时属于 多个类。
(2) 数据库白动分类机制的设计
数据库自动分类是指在数据库中, 一个对象被插入、删除或修改后,根据语义约束会 自动的插入、删除或修改该对象的关联对象,使其所属类发生变化;当隶属于不同类的关联 对象被指针或标识符相互关联时,便建立起了对象与其关联对象存在的联系; 一个关联对象 中的属性可能继承对象中的属性,当对象被修改时,对当前对象的改变会影响到与其关联的 其它对象上,甚至在其它类中出现该对象的关联对象。
在数据库中,新创建的类是对其它类的特化、泛化、聚集或者分组,具体是指在数据库 类上进行包括选择、合并、连接和分组类型的操作,这些操作的执行条件就是类模式定义上 的约朿条件,即在创建数据库类时,指定被创建类通过何种约束条件,从其它指定的关联类中选择对象,并在自身类中创建这些对象的关联对象。
(3) 数据库自动分类机制的实现
类与类之间、对象与对象之间存在上述歩骤所说的联系,对某个类中的数据库对象"0" 进行插入、删除和更新时,首先在该类中执行对象"0"的插入、删除和更新动作,其次找到 同该类关联的其它类,通过判断这些类的模式定义上的约束条件,对"0"在该类中的关联 对象进行相应的插入、删除和更新操作。
(4) 自动分类吋的并发控制过程
对某个类中的数据库对象"o"进行插入、删除和更新动作时,将可能导致多个类中对象
的插入、删除和更新,需要在动作开始前,通过并发控制计划算法,计算出所有和"o"所在
类关联的可能被影响到的其它类,获得这些类及其相关对象上的锁,升始自动分类过程,完 成后释放这些获取的锁。
本发明根据对象代理模型的特点,提出了一套对象的自动分类机制,为对象代理数据库 的动态分类机制提供技术支撑。在对象代理数据库系统中,采用双向指针的形式记录源对象
和代理对象之间的代理关系;在对象代理数据库模式定义中采用代理规则方式来记录约束条 件;在对象代理数据库中,类之间由于代理关系的存在而在逻辑上产生了一个相互连接的网 状结构,因此,用户对某个类中对象进行更新时,可以通过双向指针从该类中对象找到相关 代理类中的代理对象,并根据代理规则判断代理对象的更新操作,从而实现对象代理数据库 中对象在不同代理类中的自动分类。 本发明具有以下主要有益效果
其一.用户可以根据其个性化需求在公共数据库上定义数据空间,本发明能够将新的数 据自动分发到用户个人数据空间;当数据过时,可以自动清除用户个人数据空间中旧数据; 到数据被修改,用户个人数据空间中数据可自动调整。
其二.数据库中对象之间的相互关联导致在对象更新时,在关联对象上作出对应的修改。 这种修改往往需要人工分析和手丁操作,其效率低下。本发明通过利用双向指针,使得对象 的更新和关联对象的更新在一个命令中完成,节约了用户操作时间,同时避免了用户误操作 的可能。


图1是源类对象插入、删除和更新的结构图。 图2是对象和代理对象之间双向指针表结构。
具体实施例方式
本发明是一种在对象代理数据库系统中实现数据自动分类的方案。本发明包括数据自动 分类机制的设计和实现自动分类机制的具体实现步骤。本领域的技术人员会了解到对于其它 的数据库系统,本发明也可以通过调整具体的方案,实现数据的自动分类。
本发明是一种数据库自动分类方法,具体是在数据库中,同一个对象可以隶属于多个 类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术, 实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性。本方法包括 以下四种歩骤
(1)数据库多重分类方式-数据库多重分类方式是指同一个对象隶属于数据库中的多个类,对象只要满足类上定 义的语义约束就划分到该类中,同时同 一个对象在不同类中的关联对象存在直接联系。
实现数据库对象的多重分类步骤包括在数据库中创建多个类,根据其语义约束,建立 类间的关联关系,如果一个对象满足多个类的语义约束,创建多个关联对象,使其同时属于 多个类。
(2) 数据库自动分类机制的设计
数据库自动分类是指在数据库中, 一个对象被插入、删除或修改后,根据语义约束会 自动的插入、删除或修改该对象的关联对象,使其所属类发生变化;当隶属于不同的类关联 对象被指针或标识符相互关联时,便建立起了对象与其关联对象存在的联系; 一个关联对象 中的属性可能继承对象中的属性,当对象被修改时,对当前对象的改变会影响到与其关联的 其它对象上,甚至在其它类中出现该对象的关联对象。
在数据库中,新创建的类是对其它类的特化、泛化、聚集或者分组,具体是指在数据库 对象上进行包括选择、合并、连接和分组类型的操作,这些操作的执行条件就是类模式定义 上的约束条件,即在创建数据库类时,指定被创建类通过何种约束条件,从其它指定的关联 类中选择对象,并在自身类中创建这些对象的关联对象。
(3) 数据库fl动分类机制的实现
类与类之间、对象与对象之间存在上述步骤所说的联系,对某个类中的数据库对象"0" 进行插入、删除和更新时,首先在该类中执行对象"0"的插入、删除和更新动作,其次找到 同该类关联的其它类,通过判断这些类的模式定义上的约束条件,对"O"在该类中的关联对 象进行相应的插入、删除和更新操作。
对"0"在该类中的关联对象进行相应的插入、删除和更新操作的具体方法是对于插入 对象"0"操作,如果对象"0"满足关联类上的约束条件,则在该关联类中创建一个"0"的 关联对象,即对象"0"被自动分类到该关联类中;对于删除对象"0"操作,"0"的关联对 象也会被删除,方法是通过对象间指针联接,直接找到与"0"关联的对象集,依次去删除或 调整这些关联对象;对于更新对象"0"操作,依次检查所有关联类上的约束条件,对于更新 前后都满足条件的类,则在该类中"O"的关联对象上执行更新操作;对于更新前不满足,更 新后满足条件的类,执行关联对象的插入操作;对于更新前满足,更新后不满足条件的类, 执行关联对象的删除操作。
在关联对象有自己的关联对象时,在执行插入、删除和更新过程中,操作是递归的,即 一个对象的变化,会自动影响到其满足约束条件的所有关联类。
(4) 6动分类时的并发控制过程
对某个类中的数据库对象"0"进行插入、删除和更新动作时,将可能导致多个类中对象 的插入、删除和更新,需要在动作开始前,通过并发控制计划算法,计算出所有和"0"所在 类相关联的可能被影响到的其它类,获得这些类及其相关对象上的锁,开始自动分类过程, 完成后释放这些获取的锁。
所述的数据库自动分类机制是利用数据库对象间的指针联系和类模式定义上的约束条 件,来判断对象是否应自动分类到当前类中。
本发明提供数据库自动分类方法,其针对对象代理数据库,有以下情况一. 对象插入时,若该对象在源类中插入则会引起以下的分类操作
1. 选择型和合并型代理类对象插入迁移
若源类上有选择型或者合并型代理类,操作规则为检査新插入的源对象是否满足代理 规则,若满足代理规则,则对代理类及代理类的代理类进行递归的插入操作,即新插入的对 象会自动牛成相应的代理对象,插入到满足代理规则的代理类中;否则,不进行任何操作。
2. 连接型代理类对象插入迁移
若源类上有连接型代理类,操作规则为首先,将新插入的对象和另外源类中的每一个 对象进行连接操作,形成候选对象组合,然后检查其是否满足连接代理规则,为满足规则的 候选对象组合生成代理对象,插入到代理类中,这里也是一个递归调用的过程。
3. 分组型代理类对象插入迁移 若源类上有分组型代理类,操作规则为
未插入前的某个组(即旧组)同新插入的对象构成一个新组后,若旧组满足代理规则且 新組也满足代理规则,则重新生成新的代理对象,并删除原来的代理对象;
旧组和新插入的对象构成一个新组,若旧组满足代理规则而新组不满足规则,则删除原 来的代理对象;
新插入的对象形成一个新组,若新组满足代理规则,则生成新的代理对象进行插入操作; 新插入的对象形成一个新组,且新组不满足代理规则,不作任何操作。
二. 对象删除时,若在源类中删除该对象则会引起以下的分类操作
1. 选择型和合并型代理类对象删除迁移
若源类上有选择型代理类或者合并型代理类,则删除由该对象产生的代理对象。
2. 连接型代理类对象删除迁移
若源类上有连接型代理类,则删除该源对象和其它类中对象组合所产生的所有的满足代 理规则的代理对象。
3. 分组型代理类对象删除迁移 若源类上有分组型代理类,操作规则为
被删除的源对象单独组成一个组,则删除该组生成的代理对象;
被删除的源对象所属的旧组满足代理规则,且删除源对象后形成的新组也满足代理规则, 则重新计算,生成新的代理对象,并删除原来的代理对象;
被删除的源对象所属的旧组满足代理规则,但删除源对象后形成的新组不满足代理规则, 则删除代理对象;
被删除的源对象所属的旧组不满足代理规则,但删除源对象后形成的新组满足代理规则, 则生成新的代理对象插入到代理类中去;
被删除的源对象所属的旧组不满足代理规则,且删除源对象后形成的新组也不满足代理 规则,不做任何操作。
三. 对象更新时,若在源类对象更新后,则会引起以下的修改迁移操作 (一)选择型和合并型代理类对象修改迁移
若源类上有合并型代理类或者选择型代理类,操作规则为
若更新后的对象不满足选择或者合并代理规则,若更新前该对象有相应的代理对象,则 删除旧的代理对象;否则不做任何操作。若更新后的对象满足选择或者合并代理规则,若更新前的对象没有相应的代理对象,则 生成新的代理对象并插入,否则更新其代理对象。
(二) 连接型代理类对象修改迁移 若源类上有连接型代理类,操作规则为
将更新后对象同另外源类中的对象进行连接操作,形成新的对象组合集,并判断原有的 对象组合是否存在于这个新对象组合集合中,若存在,则更新原有对象组合的代理对象,否 则删除原有对象组合的代理对象,对新集合中不存在于旧集合的对象组合,创建代理对象, 进行插入操作。
(三) 分组型代理类对象修改迁移 若源类上有分组型代理类,操作规则为
1. 更新的对象从原来所属的组a跳转到另外的组b中去了生成新的组C:
(1) 该对象是a中唯 -一个对象,贝'J:
若更新前a组生成了相应的代理对象,则删除该代理对象;否则不做任何操作; 若组b原来产生了代理对象,而新组C也满足代理规则,则生成新的代理对象,删除
原来组b生成的代理对象;
若组b原来产生了代理对象,但是新组C不满足代理规则,则删除原来的代理对象; 若组b原来没有代理对象,但是新组C满足代理规则,则牛.成新的代理对象插入到代
理类中去;
若组b原来没有代理对象,而新组C也不满足代理规则,则不做任何操作。
(2) a不止 -个对象,则:
跳转后a组变成a'组,若更新前a组生成了相应的代理对象,且a'组也满足代理规 则,那么更新a组生成的代理对象;
若更新前a组生成了相应的代理对象,但是a'组不满足代理规则,则删除a组牛成的 代理对象;
若更新前a组不满足代理规则,但是a'组满足代理规则,则生成新的代理对象插入到 代理类中去;否则,不需做任何操作。
2. 更新的对象没有跳组,更新后的组为a'组,贝廿
a组原来生成了代理对象,更新后的a'组也满足代理规则,则更新代理对象; a组原来生成了代理对象,更新后的a'组不满足代理规则,则删除代理对象; a组原来没有生成代理对象,但是更新后的a'组满足代理规则,则生成新的代理对 象插入到代理类中去;
a组原来没有生成代理对象,更新后的a'组也不满足代理规则,则不作任何操作。 本发明提供的数据库自动分类方法,其直接对代理对象进行更新,其方法是代理对象 继承源对象的虚属性并没有实际值,査询时,通过定义在代理属性上的"切换操作",根据源 对象属性值确定代理对象的值,代理对象能够拥有自己的扩展实属性,并且占用实际的存储 空间,同时也能够被下层代理对象所代理;对于代理类中的对象,也能够进行更新,而对于 代理对象上虚属性的修改都必须通过切换,传递到该属性作为实属性所存放的源对象或者上 层代理对象上去。直接对代理对象进行更新,其自动分类的步骤包括
(1) 如果更新的是代理对象的实属性,则处理过程同上述对源对象属性值的更新;
(2) 如果更新的是代理对象的虚属性,则根据系统表中源、代理对象之间的双向指针连 接记录,找到同该代理对象虚属性所继承的实属性所属的源对象;并通过"切换操作",从对 代理属性的更新值,计算出对源属性的等价更新值,再利用上面更新源对象属性的方法从该 源对象开始进行更新操作。
本发明提供的数据库自动分类方法,其在所述的数据库自动分类时的并发控制过程中, 采用以下更新迁移步骤,来尽可能缩小需要封锁的类的范围
(1) 对于源类开始的更新,其迁移步骤为
i. 获取被更新对象所在类的所有代理类规则;
ii. 遍历这些代理类规则,抽取规则中依赖属性
Ui.如果当前被修改对象的属性存在于依赖中,将该类加入到迁移计划中; 重复上述歩骤,直至最下层代理类。
(2) 对于代理类上开始的更新,其迁移步骤为
i.判断对于更新的属性是否为代理类上的实属性;
li.如果是更新代理类实属性,则执行上述对十源类开始的更新的迁移步骤; Ui.如果是更新代理类虚属性,则通过切换,传递到该属性作为实属性所存放的源对象 或者上层代理对象上去,然后执行上述对于源类开始的更新的迁移歩骤;
(3) 根据迁移计划,按照类层次,依次对类及其对象,分段进行封锁操作,实施修改操 作,最后释放锁。
下面结合附图对本发明作进一步说明,但不限定本发明。
本发明所说的对象代理数据库,是一个基于对象代理模型的数据库。源对象可以通过选 择、连接、合并和分组及其属性上的切换操作(如换名、计算等),衍生出另外一个关联对象 (代理对象)。
在存储模式上,源对象o占有实际的存储空间,存储实际的数据。代理对象d中的代理 属性(称为"虚属性"),只拥有模式而没有实际的物理数据。源对象和代理对象之间由双向 的指针来联系,并且由切换操作来确定代理对象的代理属性的值。代理对象d可以选择性代 理其源对象o的属性,同时可以扩展属于自己的实属性,这些扩展属性才占有真正的存储空 间。 一个源对象可以有多个代理对象,不同的代理对象表现出了源对象扮演的不同角色。
在组织形式上,源对象和代理对象都属于各自的类。因而形成了源类和代理类的概念, 源类中的所有或部分对象可以衍生出自己的代理对象,这些代理对象拥有相同的模式和继承 路径,因此被聚集在一个代理类中。当一个代理类被定义好了以后,它就可以像一个普通类 一样进行操作了。
在类的继承关系上,代理类对源类的"代理"关系和一般意义上的"继承"是有区别的, 它更像是源类的视图,选择源类中的若干对象,进行一定的变换而产生新的表现形式。 一个 源类上可以随时定义新的代理类。代理类也不仅限于代理一个源类匕可以通过连接或并操 作同时在几个源类上进行代理。代理关系基本上是树状的(确切的说是一个有向图的形状)。 代理类上也可以再定义其它的代理类。在具体的操作上,定义一个代理类就需要一个代理规则(实际上是一个査询语句,其作 用和定义视图时所使用的査询语句一样)来定义对源类进行了何种形式上的变换。为了保证 代理关系的明晰,必须对代理的规则进行一定的限定。在对象代理模型中,只允许四种简单 的代理规则。分别为选择,连接,合并和分组代理。选择代理只允许从一个类中选择源对象 进行代理;连接是在几个类的连接结果中进行代理;合并是将若干个选择代理的结果并在一 个代理类中, 而分组代理则是在一个类上进行分组的代理, 一个代理对象代理一个源对象分 组。定义代理类的代理规则,以及源对象与代理对象的切换操作是对象代理数据库系统的最 突出的特征。
对于定义好的基类或代理类,它们的操作基本上是一样的。但是,在各种操作后,源类 和代理类必须保持一致,即代理类中的对象在操作前后始终要符合代理规则的选择结果,而 这些都必须由对象代理数据库中的更新迁移机制自动地完成。
本发明的实施方案包括
1. 源类中插入对象后自动分类的策略
如图l,如果一个对象O被增加到类A中,A所有的代理类被检查。如果O满足类B的 代理规则,那么o将在类B中产生它的代理对象,问时在双向指针表中建立对象间的双向联 系。如图5, A类中Oid-7的对象满足了 B的代理规则,于是在B中创建了Oid-7的源对 象的代理对象,其Oid=81。同时,源对象在双向指针表的代理对象标识域填上其代理对象 Old值81,代理对象的源对象标识域也填上其源对象Oid值7,这样两个对象间的代理关系 就建立起来了 。如果o满足某个代理类(例如C)的代理规则,类C的一个对象od被创建作 为o代理的对象,由于C是一个连接型代理类,G类作为它的另一个源类,G中od的源对象 也和A屮的对象o —样,需要建立起和od的双向指针连接关系。
2. 在源类中删除对象后自动分类的策略
如果一个对象o被从类A中删除,A所有的代理类被检查。对于合并、连接和选择型代 理类,如果o在某个类中拥有代理对象,则需要删除该代理对象,以及两者之问的双向指针 联系。对于分组型的代理类D,删除一个对象o可能会导致
1) o在类D中存在于一个代理对象(分组)中
如果分组中只有od这一个代理对象,那么删除o将导致od和分组的删除。 妇果分组中有多个对象,o的删除将需要重新计算分组中剩余对象是否仍满足D的代理 规则,是,则更新该代理对象;否,则删除该代理对象。
2) o在类D中并不存在某个代理对象(分组)
如果o的删除,导致其它对象满足了分组条件,插入这个新满足条件的代理对象,并建 立其对象之间的双向指针联系。否则,只用删除对象o。
3. 在源类中更新对象后自动分类的策略
如果类A中一个对象被更新,A所有的代理类被检査。
1) 对于选择、合并和连接型代理类,如果o在某个类中有代理对象,则检査更新后对象 是否仍然满足代理规则,是,则被更新;否,则将代理对象删除。如果o在某个类中没有其 代理对象,则检査更新后对象是否满足代理规则,是,则插入代理对象;否,则无需做任何 操作。
2) 对于分组型代理类,更新一个对象可能会导致i. o在类D中存在于一个代理对象(分组)屮
i) 如果分组中只有o这一个对象,检査更新后该分组是否仍然满足代理规则,是,代理 对象被更新;否,则该分组被删除。
ii) 如果对象存在的分组有多个源对象,o更新后,如果仍属于原來分组,则需要重新计 算分组中对象是否仍满足D的代理规则,是,则更新该对象;否,则删除该对象。否则,重 新计算分组中其它对象是否仍满足D的代理规则,是,则更新该对象;否,则删除该对象。 对于对象o,从原分组分离出来后,检查它是否可以满足进入其它存在的分组,是,则加入 到其它分组,并计算这个分组是否满足代理规则,并作出更新或删除;否,则判断未有代理 对象的源类对象中,是否有可以和更新后的o成为满足代理条件的分组,是,则生成新的分 组;否,则判断o能否单独成组并满足代理规则,是则生成只有o—个对象分组的代理对象, 否,则无需做任何操作。
ii. o在类D中不存在于一个代理对象(分组)中
对象o更新后,如果o可以被分到一个己存在的分组中,是,则判断该分组是否仍能满 足代理规则,是,则修改;否,则删除该分组。若不能分到一个存在的分组中,则判断未有 代理对象的源类对象屮,是否有可以和更新后的o成为满足代理条件的分组,是,则生成新 的分组;否,则判断o能否单独成组,是则生成只有一个对象的分组的代理对象od,否,则 无需做任何操作。
4. 在代理类中更新对象后自动分类的策略
1) 如果更新的是代理对象的实属性,那么不会影响到源对象上属性值的修改,则其处理 过程同以上策略3对源对象属性值的更新。
2) 如果更新的是代理对象的虚属性,则根据源、代理对象之间的双向指针连接等系统表 的记录,找到同该代理对象虚属性所继承的实属性所属的源对象;并通过"切换操作",从对 代理属性的更新值,计算出对源属性的等价更新值。再利用上面策略3的更新源对象属性的 方法从该源对象开始进行更新操作。
5. 对象代理数据库中并发控制的策略
1) 对于发生在源类的更新
i. 获取被更新对象所在类的位于该类的下一层的所有代理类上的代理规则;
ii. 遍历代理类规则,抽取规则中依赖属性,例如创建选择代理类的语句create selectdeputyclass E as (select *from Awhere 8>20);中,where语句的A.a属性便是一个依赖属性。
iii. 若当前被修改对象的属性存在于依赖中,则将该类加入到自动分类计划中。
iv. 重复上述步骤,直至最下层代理类;
2) 对于代理类上开始的更新
i. 如果是更新代理类实属性,那么不会涉及到更新源类对象属性的问题,因此可以执行上 述对于源类开始的更新的迁移步骤。
ii. 如果是更新代理类虚属性,获取所有修改属性的实属性,并按照实属性所在的类执行 上述对于源类开始的更新的迁移步骤。
iii. 按照上述更新的迁移步骤,依次对类及其相关对象,分段进行封锁操作,待更新完毕进 行解锁。
权利要求
1.数据库自动分类方法,其特征是在数据库中,同一个对象可以隶属于多个类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性,它包括数据库多重分类方式、数据库自动分类机制的设计、数据库自动分类机制的实现和数据库自动分类时的并发控制过程,具体是(1)数据库多重分类方式数据库多重分类方式是指同一个对象隶属于数据库中的多个类,对象只要满足类上定义的语义约束就划分到该类中,同时同一个对象在不同类中的关联对象存在直接联系,实现数据库对象的多重分类步骤包括在数据库中创建多个类,根据其语义约束,建立类间的关联关系,如果一个对象满足多个类的语义约束,创建多个关联对象,使其同时属于多个类;(2)数据库自动分类机制的设计数据库自动分类是指在数据库中,一个对象被插入、删除或修改后,根据语义约束会自动的插入、删除或修改该对象的关联对象,使其所属类发生变化;当隶属于不同的类关联对象被指针或标识符相互关联时,便建立起了对象与其关联对象存在的联系;一个关联对象中的属性可能继承对象中的属性,当对象被修改时,对当前对象的改变会影响到与其关联的其它对象上,甚至在其它类中出现该对象的关联对象,在数据库中,新创建的类是对其它类的特化、泛化、聚集或者分组,具体是指在数据库类上进行包括选择、合并、连接和分组类型的操作,这些操作的执行条件就是类模式定义上的约束条件,即在创建数据库类时,指定被创建类通过何种约束条件,从其它指定的关联类中选择对象,并在自身类中创建这些对象的关联对象;(3)数据库自动分类机制的实现类与类之间、对象与对象之间存在上述步骤所说的联系,对某个类中的数据库对象“o”进行插入、删除和更新时,首先在该类中执行对象“o”的插入、删除和更新动作,其次找到同该类关联的其它类,通过判断这些类的模式定义上的约束条件,对“o”在该类中的关联对象进行相应的插入、删除和更新操作;(4)自动分类时的并发控制过程对某个类中的数据库对象“o”进行插入、删除和更新动作时,将可能导致多个类中对象的插入、删除和更新,需要在动作开始前,通过并发控制计划算法,计算出所有和“o”所在类相关联的可能被影响到的其它类,获得这些类及其相关对象上的锁,开始自动分类过程,完成后释放这些获取的锁。
2. 根据权利要求l所述的数据库自动分类方法,其特征在于数据库自动分类机制是利 用数据库对象间的指针联系和类模式定义上的约束条件,来判断对象是否应自动分类到当前 类中。
3. 根据权利要求1所述的数据库自动分类方法,其特征在于对于插入对象"o"操作,如果满足关联类上的约束条件,则在该关联类中创建一个"O" 的关联对象,即对象"0"被自动分类到该关联类中;对于删除对象"o"操作,"o"的关联对象也会被删除,方法是通过对象间指针联接,直 接找到与"o"关联的对象集,依次去删除或调整这些关联对象;对于更新对象"o"操作,依次检查所有关联类上的约束条件,对于更新前后都满足条件 的类,则在该类中"o"的关联对象上执行更新操作;对于更新前不满足,更新后满足条件的 类,执行关联对象的插入操作;对于更新前满足,更新后不满足条件的类,执行关联对象的 删除操作。
4. 根据权利要求3所述的数据库自动分类方法,其特征在于在关联对象有自己的关联 对象时,在执行插入、删除和更新过程中,操作是递归的,即一个对象的变化,会自动影响 到其满足约束条件的所有关联类。
5. 根据权利要求l所述的数据库自动分类方法,其特征是针对对象代理数据库,对象插 入时,若该对象在源类中插入则会引起以下的分类操作(1) 选择型和合并型代理类对象插入迁移 若源类上有选择型或者合并型代理类,操作规则为检查新插入的源对象是否满足代理规则,若满足代理规则,则对代理类及代理类的代理类进行递归的插入操作,即新插入的对 象会自动生成相应的代理对象,插入到满足代理规则的代理类中;否则,不进行任何操作,(2) 连接型代理类对象插入迁移若源类上有连接型代理类,操作规则为首先,将新插入的对象和另外源类中的对象进 行连接操作,形成候选对象组合,然后检查其是否满足连接代理规则,为满足规则的候选对 象组合生成代理对象,插入到代理类中,这里也是一个递归调用的过程,(3) 分组型代理类对象插入迁移 若源类上有分组型代理类,操作规则为未插入前的某个组(即旧组)同新插入的对象构成一个新组后,若旧组满足代理规则且 新组也满足代理规则,则重新生成新的代理对象,并删除原来的代理对象,旧组和新插入的对象构成一个新组,若旧组满足代理规则而新组不满足规则,则删除原 来的代理对象,新插入的对象形成一个新组,若新组满足代理规则,则生成新的代理对象进行插入操作, 新插入的对象形成一个新组,且新组不满足代理规则,不作任何操作。
6. 根据权利要求1所述的数据库自动分类方法,其特征是针对对象代理数据库,对象删 除时,若在源类中删除该对象则会引起以下的分类操作(1) 选择型和合并型代理类对象删除迁移 若源类上有选择型代理类或者合并型代理类,则删除由该对象产生的代理对象,(2) 连接型代理类对象删除迁移若源类上有连接型代理类,则删除该源对象和其它类中对象组合所产生的所有的满足代 理规则的代理对象,(3)分组型代理类对象删除迁移 若源类上有分组型代理类,操作规则为被删除的源对象单独组成一个组,则删除该组生成的代理对象,被删除的源对象所属的旧组满足代理规则,且删除源对象后形成的新组也满足代理规则, 则重新计算,生成新的代理对象,并删除原来的代理对象,被删除的源对象所属的旧组满足代理规则,但删除源对象后形成的新组不满足代理规则, 则删除代理对象,被删除的源对象所属的旧组不满足代理规则,但删除源对象后形成的新组满足代理规则, 则生成新的代理对象插入到代理类中去,被删除的源对象所属的旧组不满足代理规则,且删除源对象后形成的新组也不满足代理 规则,不做任何操作。
7.根据权利要求l所述的数据库自动分类方法,其特征是针对对象代理数据库,对象更 新时,若在源类对象更新后,则会引起以下的修改迁移操作 (一) 选择型和合并型代理类对象修改迁移 若源类上有选择型代理类或者合并型代理类,操作规则为 若更新后的对象不满足选择或者合并代理规则,若更新前该对象有相应的代理对象,则 删除旧的代理对象;否则不做任何操作,若更新后的对象满足选择或者合并代理规则,若更新前该对象没有相应的代理对象,则 生成新的代理对象并査入,否则更新其代理对象 (二) 连接型代理类对象修改迁移 若源类上有连接型代理类,操作规则为将更新后对象同另外源类中的每一个对象进行连接操作,形成新的对象组合集,并判断 原有的对象组合是否存在于这个新对象组合集合中,若存在,则更新原有对象组合的代理对 象,否则删除原有对象组合的代理对象,对新集合中不存在于旧集合的对象组合,创建代理 对象,进行插入操作; (三) 分组型代理类对象修改迁移 若源类上有分组型代理类,操作规则为 (1)更新的对象从原来所属的组a跳转到另外的组b中去了生成新的组C: 1) 该对象是a中唯一一个对象,贝IJ:若更新前a组生成了相应的代理对象,则删除该代理对象;否则不做任何操作, 若组b原来产生了代理对象,而新组C也满足代理规则,则生成新的代理对象,删除 原来组b生成的代理对象,若组b原来产生了代理对象,但新组C不满足代理规则,则删除原来的代理对象,若组b原来没有代理对象,但是新组c满足代理规则,则生成新的代理对象插入到代理类中去,若组b原来没有代理对象,而新组c也不满足代理规则,则不做任何操作, 2) a不止一个对象,贝ij:跳转后a组变成a'组,若更新前a组牛成了相应的代理对象,且a'组也满足代理规则,那么更新a组生成的代 理对象;若更新前a组生成了相应的代理对象,但是a'组不满足代理规则,则删除a组生成的代 理对象;若更新前a组不满足代理规则,但是a'组满足代理规则,则生成新的代理对象插入到代理类中去;否则,不需做任何操作,〔2)更新的对象没有跳组,更新后的组为a'组,贝lj: a组原来生成了代理对象,更新后的a'组也满足代理规则,则更新代理对象, a组原来生成了代理对象,更新后的a'组不满足代理规则,则删除代理对象, a组原来没有生成代理对象,但是更新后的a'组满足代理规则,则生成新的代理对象插入到代理类屮去,a组原来没有生成代理对象,更新后的a'组也不满足代理规则,则不作任何操作。
8. 如权利要求l所述的数据库白动分类方法,其特征是直接对代理对象进行更新,其方 法是代理对象继承源对象的虛属性并没有实际值,査询时,通过定义在代理属性上的"切 换操作",根据源对象属性值确定代理对象的值,代理对象能够拥有自己的扩展实属性,并且 占用实际的存储空间,同时也能够被下层代理对象所代理;对于代理类中的对象,也能够进 行更新,而对于代理对象上虚属性的修改都必须通过切换,传递到该属性作为实属性所存放 的源对象或者上层代理对象上去,直接对代理对象进行更新,其自动分类的步骤包括(1) 如果更新的是代理对象的实属性,则处理过程同上述对源对象属性值的更新;(2) 如果更新的是代理对象的虚属性,则根据系统表中源、代理对象之间的双向指针连接记录,找到同该代理对象虚属性所继承的实属性所属的源对象;并通过"切换操作",从对代理属性的更新值,计算出对源属性的等价更新值,冉利用上面更新源对象属性的方法从该 源对象开始进行更新操作。
9. 如权利要求1所述的数据库fl动分类方法,其特征是在所述的数据库5动分类时的并发控制过程中,釆用以下更新迁移步骤,来尽可能缩小需要封锁的类的范围(1) 对于源类开始的更新,其迁移步骤为i. 获取被更新对象所在类的所有代理类规则,ii. 遍历这些代理类规则,抽取规则中依赖属性,iii. 如果当前被修改对象的属性存在于依赖中,将该类加入到迁移计划中, 重复上述步骤,直至最下层代理类;(2) 对于代理类上开始的更新,其迁移步骤为i. 判断对于更新的属性是否为代理类上的实属性,ii. 如果是更新代理类实属性,则执行上述对于源类开始的更新的迁移步骤,m.如果是更新代理类虚属性,则通过切换,传递到该属性作为实属性所存放的源对象 或者上层代理对象上去,然后执行上述对于源类开始的更新的迁移步骤;(3)根据迁移计划,按照类层次,依次对类及其对象,分段进行封锁操作,实施修改 操作,最后释放锁。
全文摘要
本发明提供的数据库自动分类方法,即在数据库中,同一个对象可以隶属于多个类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性,它包括数据库多重分类方式、数据库自动分类机制的设计、数据库自动分类机制的实现和数据库自动分类时的并发控制过程。本发明的主要有益效果是根据用户的个性化要求,能够自动分发数据,并且将对象的更新和关联对象的更新在一个命令中完成,节约了用户操作时间,同时避免了用户误操作的可能。在对象代理数据库系统中自主实现了数据库对象自动分类功能。
文档编号G06F17/30GK101216845SQ200810046609
公开日2008年7月9日 申请日期2008年1月3日 优先权日2008年1月3日
发明者彭智勇 申请人:彭智勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1