CN101216845A - 数据库自动分类方法 - Google Patents
数据库自动分类方法 Download PDFInfo
- Publication number
- CN101216845A CN101216845A CNA2008100466097A CN200810046609A CN101216845A CN 101216845 A CN101216845 A CN 101216845A CN A2008100466097 A CNA2008100466097 A CN A2008100466097A CN 200810046609 A CN200810046609 A CN 200810046609A CN 101216845 A CN101216845 A CN 101216845A
- Authority
- CN
- China
- Prior art keywords
- agent
- class
- group
- database
- source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供的数据库自动分类方法,即:在数据库中,同一个对象可以隶属于多个类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性,它包括数据库多重分类方式、数据库自动分类机制的设计、数据库自动分类机制的实现和数据库自动分类时的并发控制过程。本发明的主要有益效果是:根据用户的个性化要求,能够自动分发数据,并且将对象的更新和关联对象的更新在一个命令中完成,节约了用户操作时间,同时避免了用户误操作的可能。在对象代理数据库系统中自主实现了数据库对象自动分类功能。
Description
技术领域
本发明涉及数据库系统中数据动态分类和一致性维护领域,特别是在对象代理数据库系统中对象自动分类的技术。
背景技术
在传统的面向对象数据库和对象关系数据库中,一个对象只属于一个类,间接地属于其超类,不能同时出现在没有继承关系的多个类中;另外,对象难以在不同类之间迁移,以致对象无法动态分类,这不能反映现实世界中客观实体的多样性和动态性。数据修改如果导致对象在数据库中的迁移往往需要人为的分析和手动的修改,因此需要消耗数据库管理员和用户的大量时间。为了克服以上不足,本发明人提出了新的数据模型:对象代理模型。对象代理模型通过引入代理对象和代理类的概念,能更好地对各种复杂的数据进行管理。本发明基于对象代理模型支持对象的多重分类方式,在插入、修改和删除对象的时候,可以自动的将相关对象派生到满足条件的类中或者从不再满足条件的类中删除,实现数据库动态分类功能。
在基于对象代理模型的数据库(称为对象代理数据库)中,源类与代理类之间存在着代理关系,一个源类可以同时定义多个代理类,一个代理类也不仅限于代理一个源类。伴随着类之间代理关系的是对象间的代理关系。一个类中的对象可以是多个不同代理类中的代理对象的源对象,同时一个类中的对象也可以作为多个不同源类中的源对象的代理对象而存在。代理对象既能够通过选择地继承源对象的属性和方法而作为源对象的特定接口,也能够扩展一些额外的、附加的属性和方法。
在面向对象数据库和对象关系数据库中,父类和子类很难实现多继承的关系。同时子类对象并不是父类对象在子类上的实例,它们之间没有直接联系。父类实例的修改,并不会导致任何子类实例的更新。同样,子类实例的修改,也不会对父类实例产生影响。因此,在面向对象数据库中,对象自动分类需要通过对象移动(Object Migration)来实现,然而面向对象数据库很难提供对象移动机制。
在传统关系数据库中,元组是通过关系表存储的。因为表和表之间是没有继承或者代理的关系的,所以传统关系数据库中也不存在对元组自动分类的能力。但是传统关系数据库中存在的物化视图概念。所谓物化视图(MaterializedView),又称实化视图或者实体化视图。它通过把数据库视图中的元组存储起来,从而将视图实物化。这样,数据库访问物化视图的速度将比重新计算视图的速度要快。当定义视图的基关系被修改后,需要对物化视图进行维护,以使其重新满足视图的定义条件。即实际元组修改后,其在满足选择条件的视图中的元组也会被修改。物化视图有点类似对象代理数据库中的代理类,但存在以下不同:
(1)代理类对象和其源类对象存在双向指针,对象之间可以实现快速的导航,在对象代理数据库中,对源对象的更新,可以快速转换到其代理对象上的更新。对于代理对象可以进行更新,对代理对象上虚属性的修改,是通过对象间的双向指针以及定义在属性上的“切换操作”方法,将更新传递到该属性作为实属性所存放的对象(可能是源对象或者代理对象)上去;而物化视图的更新过程并不是通过双向指针来实现。
(2)代理类类似一个半物化的视图,物化的只是代理类的模式,代理对象上的虚属性并没有存储实际值。查询时,是通过定义在代理属性上的切换操作来确定具体的值。
(3)代理对象上可以拥有自己的扩展属性,这部分属性占用了实际的存储空间,同时也可以被下层代理对象所代理;而物化视图不具有私有的属性。
(4)对象代理数据库中类间的代理关系相对于传统关系数据库中的视图层次更多,语义更丰富。
因此,传统关系数据库中视图更新机制,也不适用于数据库中对象动态分类机制。
如上所述,由于对象代理数据库中代理对象与源对象之间存在着代理关系,对于任何对象的修改可以传递到对其源对象和代理对象的修改,并导致这些关联对象在相应的类中出现插入、删除和更新动作。因此这些对象代理数据库所特有的特征,可以天生地支持数据库中对象的自动分类功能。
发明内容
本发明要解决的技术问题是:实现对象在数据库中的多重分类;提出一种适用于数据库中对象的自动分类方案,为数据库提供对象被插入、更新和删除后的自动分类能力;提出一套并发控制算法,保证自动分类时的数据一致性。
本发明解决其技术问题采用的技术方案是:在数据库中,同一个对象可以隶属于多个类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性,它包括数据库多重分类方式、数据库自动分类机制的设计、数据库自动分类机制的实现和数据库自动分类时的并发控制过程。具体如下:
(1)数据库多重分类方式:
数据库多重分类方式是指:同一个对象隶属于数据库中的多个类,对象只要满足类上定义的语义约束就划分到该类中,同时同一个对象在不同类中的关联对象存在直接联系。
实现数据库对象的多重分类步骤包括:在数据库中创建多个类,根据其语义约束,建立类间的关联关系,如果一个对象满足多个类的语义约束,创建多个关联对象,使其同时属于多个类。
(2)数据库自动分类机制的设计:
数据库自动分类是指:在数据库中,一个对象被插入、删除或修改后,根据语义约束会自动的插入、删除或修改该对象的关联对象,使其所属类发生变化;当隶属于不同类的关联对象被指针或标识符相互关联时,便建立起了对象与其关联对象存在的联系;一个关联对象中的属性可能继承对象中的属性,当对象被修改时,对当前对象的改变会影响到与其关联的其它对象上,甚至在其它类中出现该对象的关联对象。
在数据库中,新创建的类是对其它类的特化、泛化、聚集或者分组,具体是指在数据库类上进行包括选择、合并、连接和分组类型的操作,这些操作的执行条件就是类模式定义上的约束条件,即在创建数据库类时,指定被创建类通过何种约束条件,从其它指定的关联类中选择对象,并在自身类中创建这些对象的关联对象。
(3)数据库自动分类机制的实现:
类与类之间、对象与对象之间存在上述步骤所说的联系,对某个类中的数据库对象“o”进行插入、删除和更新时,首先在该类中执行对象“o”的插入、删除和更新动作,其次找到同该类关联的其它类,通过判断这些类的模式定义上的约束条件,对“o”在该类中的关联对象进行相应的插入、删除和更新操作。
(4)自动分类时的并发控制过程:
对某个类中的数据库对象“o”进行插入、删除和更新动作时,将可能导致多个类中对象的插入、删除和更新,需要在动作开始前,通过并发控制计划算法,计算出所有和“o”所在类关联的可能被影响到的其它类,获得这些类及其相关对象上的锁,开始自动分类过程,完成后释放这些获取的锁。
本发明根据对象代理模型的特点,提出了一套对象的自动分类机制,为对象代理数据库的动态分类机制提供技术支撑。在对象代理数据库系统中,采用双向指针的形式记录源对象和代理对象之间的代理关系;在对象代理数据库模式定义中采用代理规则方式来记录约束条件;在对象代理数据库中,类之间由于代理关系的存在而在逻辑上产生了一个相互连接的网状结构,因此,用户对某个类中对象进行更新时,可以通过双向指针从该类中对象找到相关代理类中的代理对象,并根据代理规则判断代理对象的更新操作,从而实现对象代理数据库中对象在不同代理类中的自动分类。
本发明具有以下主要有益效果:
其一.用户可以根据其个性化需求在公共数据库上定义数据空间,本发明能够将新的数据自动分发到用户个人数据空间;当数据过时,可以自动清除用户个人数据空间中旧数据;到数据被修改,用户个人数据空间中数据可自动调整。
其二.数据库中对象之间的相互关联导致在对象更新时,在关联对象上作出对应的修改。这种修改往往需要人工分析和手工操作,其效率低下。本发明通过利用双向指针,使得对象的更新和关联对象的更新在一个命令中完成,节约了用户操作时间,同时避免了用户误操作的可能。
附图说明
图1是源类对象插入、删除和更新的结构图。
图2是对象和代理对象之间双向指针表结构。
具体实施方式
本发明是一种在对象代理数据库系统中实现数据自动分类的方案。本发明包括数据自动分类机制的设计和实现自动分类机制的具体实现步骤。本领域的技术人员会了解到对于其它的数据库系统,本发明也可以通过调整具体的方案,实现数据的自动分类。
本发明是一种数据库自动分类方法,具体是:在数据库中,同一个对象可以隶属于多个类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性。本方法包括以下四种步骤:
(1)数据库多重分类方式:
数据库多重分类方式是指:同一个对象隶属于数据库中的多个类,对象只要满足类上定义的语义约束就划分到该类中,同时同一个对象在不同类中的关联对象存在直接联系。
实现数据库对象的多重分类步骤包括:在数据库中创建多个类,根据其语义约束,建立类间的关联关系,如果一个对象满足多个类的语义约束,创建多个关联对象,使其同时属于多个类。
(2)数据库自动分类机制的设计:
数据库自动分类是指:在数据库中,一个对象被插入、删除或修改后,根据语义约束会自动的插入、删除或修改该对象的关联对象,使其所属类发生变化;当隶属于不同的类关联对象被指针或标识符相互关联时,便建立起了对象与其关联对象存在的联系;一个关联对象中的属性可能继承对象中的属性,当对象被修改时,对当前对象的改变会影响到与其关联的其它对象上,甚至在其它类中出现该对象的关联对象。
在数据库中,新创建的类是对其它类的特化、泛化、聚集或者分组,具体是指在数据库对象上进行包括选择、合并、连接和分组类型的操作,这些操作的执行条件就是类模式定义上的约束条件,即在创建数据库类时,指定被创建类通过何种约束条件,从其它指定的关联类中选择对象,并在自身类中创建这些对象的关联对象。
(3)数据库自动分类机制的实现:
类与类之间、对象与对象之间存在上述步骤所说的联系,对某个类中的数据库对象“o”进行插入、删除和更新时,首先在该类中执行对象“o”的插入、删除和更新动作,其次找到同该类关联的其它类,通过判断这些类的模式定义上的约束条件,对“o”在该类中的关联对象进行相应的插入、删除和更新操作。
对“o”在该类中的关联对象进行相应的插入、删除和更新操作的具体方法是:对于插入对象“o”操作,如果对象“o”满足关联类上的约束条件,则在该关联类中创建一个“o”的关联对象,即对象“o”被自动分类到该关联类中;对于删除对象“o”操作,“o”的关联对象也会被删除,方法是通过对象间指针联接,直接找到与“o”关联的对象集,依次去删除或调整这些关联对象;对于更新对象“o”操作,依次检查所有关联类上的约束条件,对于更新前后都满足条件的类,则在该类中“o”的关联对象上执行更新操作;对于更新前不满足,更新后满足条件的类,执行关联对象的插入操作;对于更新前满足,更新后不满足条件的类,执行关联对象的删除操作。
在关联对象有自己的关联对象时,在执行插入、删除和更新过程中,操作是递归的,即一个对象的变化,会自动影响到其满足约束条件的所有关联类。
(4)自动分类时的并发控制过程:
对某个类中的数据库对象“o”进行插入、删除和更新动作时,将可能导致多个类中对象的插入、删除和更新,需要在动作开始前,通过并发控制计划算法,计算出所有和“o”所在类相关联的可能被影响到的其它类,获得这些类及其相关对象上的锁,开始自动分类过程,完成后释放这些获取的锁。
所述的数据库自动分类机制是:利用数据库对象间的指针联系和类模式定义上的约束条件,来判断对象是否应自动分类到当前类中。
本发明提供数据库自动分类方法,其针对对象代理数据库,有以下情况:
一.对象插入时,若该对象在源类中插入则会引起以下的分类操作:
1.选择型和合并型代理类对象插入迁移:
若源类上有选择型或者合并型代理类,操作规则为:检查新插入的源对象是否满足代理规则,若满足代理规则,则对代理类及代理类的代理类进行递归的插入操作,即新插入的对象会自动生成相应的代理对象,插入到满足代理规则的代理类中;否则,不进行任何操作。
2.连接型代理类对象插入迁移:
若源类上有连接型代理类,操作规则为:首先,将新插入的对象和另外源类中的每一个对象进行连接操作,形成候选对象组合,然后检查其是否满足连接代理规则,为满足规则的候选对象组合生成代理对象,插入到代理类中,这里也是一个递归调用的过程。
3.分组型代理类对象插入迁移:
若源类上有分组型代理类,操作规则为:
未插入前的某个组(即旧组)同新插入的对象构成一个新组后,若旧组满足代理规则且新组也满足代理规则,则重新生成新的代理对象,并删除原来的代理对象;
旧组和新插入的对象构成一个新组,若旧组满足代理规则而新组不满足规则,则删除原来的代理对象;
新插入的对象形成一个新组,若新组满足代理规则,则生成新的代理对象进行插入操作;
新插入的对象形成一个新组,且新组不满足代理规则,不作任何操作。
二.对象删除时,若在源类中删除该对象则会引起以下的分类操作:
1.选择型和合并型代理类对象删除迁移:
若源类上有选择型代理类或者合并型代理类,则删除由该对象产生的代理对象。
2.连接型代理类对象删除迁移:
若源类上有连接型代理类,则删除该源对象和其它类中对象组合所产生的所有的满足代理规则的代理对象。
3.分组型代理类对象删除迁移:
若源类上有分组型代理类,操作规则为:
被删除的源对象单独组成一个组,则删除该组生成的代理对象;
被删除的源对象所属的旧组满足代理规则,且删除源对象后形成的新组也满足代理规则,则重新计算,生成新的代理对象,并删除原来的代理对象;
被删除的源对象所属的旧组满足代理规则,但删除源对象后形成的新组不满足代理规则,则删除代理对象;
被删除的源对象所属的旧组不满足代理规则,但删除源对象后形成的新组满足代理规则,则生成新的代理对象插入到代理类中去;
被删除的源对象所属的旧组不满足代理规则,且删除源对象后形成的新组也不满足代理规则,不做任何操作。
三.对象更新时,若在源类对象更新后,则会引起以下的修改迁移操作:
(一)选择型和合并型代理类对象修改迁移:
若源类上有合并型代理类或者选择型代理类,操作规则为:
若更新后的对象不满足选择或者合并代理规则,若更新前该对象有相应的代理对象,则删除旧的代理对象;否则不做任何操作。
若更新后的对象满足选择或者合并代理规则,若更新前的对象没有相应的代理对象,则生成新的代理对象并插入,否则更新其代理对象。
(二)连接型代理类对象修改迁移:
若源类上有连接型代理类,操作规则为:
将更新后对象同另外源类中的对象进行连接操作,形成新的对象组合集,并判断原有的对象组合是否存在于这个新对象组合集合中,若存在,则更新原有对象组合的代理对象,否则删除原有对象组合的代理对象,对新集合中不存在于旧集合的对象组合,创建代理对象,进行插入操作。
(三)分组型代理类对象修改迁移:
若源类上有分组型代理类,操作规则为:
1.更新的对象从原来所属的组a跳转到另外的组b中去了生成新的组c:
(1)该对象是a中唯一一个对象,则:
若更新前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遍历这些代理类规则,抽取规则中依赖属性;
iii.如果当前被修改对象的属性存在于依赖中,将该类加入到迁移计划中;
重复上述步骤,直至最下层代理类。
(2)对于代理类上开始的更新,其迁移步骤为:
i.判断对于更新的属性是否为代理类上的实属性;
ii如果是更新代理类实属性,则执行上述对于源类开始的更新的迁移步骤;
iii.如果是更新代理类虚属性,则通过切换,传递到该属性作为实属性所存放的源对象或者上层代理对象上去,然后执行上述对于源类开始的更新的迁移步骤;
(3)根据迁移计划,按照类层次,依次对类及其对象,分段进行封锁操作,实施修改操作,最后释放锁。
下面结合附图对本发明作进一步说明,但不限定本发明。
本发明所说的对象代理数据库,是一个基于对象代理模型的数据库。源对象可以通过选择、连接、合并和分组及其属性上的切换操作(如换名、计算等),衍生出另外一个关联对象(代理对象)。
在存储模式上,源对象o占有实际的存储空间,存储实际的数据。代理对象d中的代理属性(称为“虚属性”),只拥有模式而没有实际的物理数据。源对象和代理对象之间由双向的指针来联系,并且由切换操作来确定代理对象的代理属性的值。代理对象d可以选择性代理其源对象o的属性,同时可以扩展属于自己的实属性,这些扩展属性才占有真正的存储空间。一个源对象可以有多个代理对象,不同的代理对象表现出了源对象扮演的不同角色。
在组织形式上,源对象和代理对象都属于各自的类。因而形成了源类和代理类的概念,源类中的所有或部分对象可以衍生出自己的代理对象,这些代理对象拥有相同的模式和继承路径,因此被聚集在一个代理类中。当一个代理类被定义好了以后,它就可以像一个普通类一样进行操作了。
在类的继承关系上,代理类对源类的“代理”关系和一般意义上的“继承”是有区别的,它更像是源类的视图,选择源类中的若干对象,进行一定的变换而产生新的表现形式。一个源类上可以随时定义新的代理类。代理类也不仅限于代理一个源类上,可以通过连接或并操作同时在几个源类上进行代理。代理关系基本上是树状的(确切的说是一个有向图的形状)。代理类上也可以再定义其它的代理类。
在具体的操作上,定义一个代理类就需要一个代理规则(实际上是一个查询语句,其作用和定义视图时所使用的查询语句一样)来定义对源类进行了何种形式上的变换。为了保证代理关系的明晰,必须对代理的规则进行一定的限定。在对象代理模型中,只允许四种简单的代理规则。分别为选择,连接,合并和分组代理。选择代理只允许从一个类中选择源对象进行代理;连接是在几个类的连接结果中进行代理;合并是将若干个选择代理的结果并在一个代理类中;而分组代理则是在一个类上进行分组的代理,一个代理对象代理一个源对象分组。定义代理类的代理规则,以及源对象与代理对象的切换操作是对象代理数据库系统的最突出的特征。
对于定义好的基类或代理类,它们的操作基本上是一样的。但是,在各种操作后,源类和代理类必须保持一致,即代理类中的对象在操作前后始终要符合代理规则的选择结果,而这些都必须由对象代理数据库中的更新迁移机制自动地完成。
本发明的实施方案包括:
1.源类中插入对象后自动分类的策略:
如图1,如果一个对象o被增加到类A中,A所有的代理类被检查。如果o满足类B的代理规则,那么o将在类B中产生它的代理对象,同时在双向指针表中建立对象间的双向联系。如图5,A类中Oid=7的对象满足了B的代理规则,于是在B中创建了Oid=7的源对象的代理对象,其Oid=81。同时,源对象在双向指针表的代理对象标识域填上其代理对象Oid值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.遍历代理类规则,抽取规则中依赖属性,例如创建选择代理类的语句:createselectdeputyclass E as(select*from A where a>20);中,where语句的A.a属性便是一个依赖属性。
iii.若当前被修改对象的属性存在于依赖中,则将该类加入到自动分类计划中。
iv.重复上述步骤,直至最下层代理类;
2)对于代理类上开始的更新:
i.如果是更新代理类实属性,那么不会涉及到更新源类对象属性的问题,因此可以执行上述对于源类开始的更新的迁移步骤。
ii.如果是更新代理类虚属性,获取所有修改属性的实属性,并按照实属性所在的类执行上述对于源类开始的更新的迁移步骤。
iii.按照上述更新的迁移步骤,依次对类及其相关对象,分段进行封锁操作,待更新完毕进行解锁。
Claims (9)
1.数据库自动分类方法,其特征是在数据库中,同一个对象可以隶属于多个类,表现其多样性本质;根据数据库模式定义中的约束条件,利用对象间的双向指针技术,实现对象的自动分类;通过并发控制规则,保证对象分类前后数据库的一致性,它包括数据库多重分类方式、数据库自动分类机制的设计、数据库自动分类机制的实现和数据库自动分类时的并发控制过程,具体是:
(1)数据库多重分类方式:
数据库多重分类方式是指:同一个对象隶属于数据库中的多个类,对象只要满足类上定义的语义约束就划分到该类中,同时同一个对象在不同类中的关联对象存在直接联系,
实现数据库对象的多重分类步骤包括:在数据库中创建多个类,根据其语义约束,建立类间的关联关系,如果一个对象满足多个类的语义约束,创建多个关联对象,使其同时属于多个类;
(2)数据库自动分类机制的设计:
数据库自动分类是指:在数据库中,一个对象被插入、删除或修改后,根据语义约束会自动的插入、删除或修改该对象的关联对象,使其所属类发生变化;当隶属于不同的类关联对象被指针或标识符相互关联时,便建立起了对象与其关联对象存在的联系;一个关联对象中的属性可能继承对象中的属性,当对象被修改时,对当前对象的改变会影响到与其关联的其它对象上,甚至在其它类中出现该对象的关联对象,
在数据库中,新创建的类是对其它类的特化、泛化、聚集或者分组,具体是指在数据库类上进行包括选择、合并、连接和分组类型的操作,这些操作的执行条件就是类模式定义上的约束条件,即在创建数据库类时,指定被创建类通过何种约束条件,从其它指定的关联类中选择对象,并在自身类中创建这些对象的关联对象;
(3)数据库自动分类机制的实现:
类与类之间、对象与对象之间存在上述步骤所说的联系,对某个类中的数据库对象“o”进行插入、删除和更新时,首先在该类中执行对象“o”的插入、删除和更新动作,其次找到同该类关联的其它类,通过判断这些类的模式定义上的约束条件,对“o”在该类中的关联对象进行相应的插入、删除和更新操作;
(4)自动分类时的并发控制过程:
对某个类中的数据库对象“o”进行插入、删除和更新动作时,将可能导致多个类中对象的插入、删除和更新,需要在动作开始前,通过并发控制计划算法,计算出所有和“o”所在类相关联的可能被影响到的其它类,获得这些类及其相关对象上的锁,开始自动分类过程,完成后释放这些获取的锁。
2.根据权利要求1所述的数据库自动分类方法,其特征在于:数据库自动分类机制是利用数据库对象间的指针联系和类模式定义上的约束条件,来判断对象是否应自动分类到当前类中。
3.根据权利要求1所述的数据库自动分类方法,其特征在于:
对于插入对象“o”操作,如果满足关联类上的约束条件,则在该关联类中创建一个“o”的关联对象,即对象“o”被自动分类到该关联类中;
对于删除对象“o”操作,“o”的关联对象也会被删除,方法是通过对象间指针联接,直接找到与“o”关联的对象集,依次去删除或调整这些关联对象;
对于更新对象“o”操作,依次检查所有关联类上的约束条件,对于更新前后都满足条件的类,则在该类中“o”的关联对象上执行更新操作;对于更新前不满足,更新后满足条件的类,执行关联对象的插入操作;对于更新前满足,更新后不满足条件的类,执行关联对象的删除操作。
4.根据权利要求3所述的数据库自动分类方法,其特征在于:在关联对象有自己的关联对象时,在执行插入、删除和更新过程中,操作是递归的,即一个对象的变化,会自动影响到其满足约束条件的所有关联类。
5.根据权利要求1所述的数据库自动分类方法,其特征是针对对象代理数据库,对象插入时,若该对象在源类中插入则会引起以下的分类操作:
(1)选择型和合并型代理类对象插入迁移:
若源类上有选择型或者合并型代理类,操作规则为:检查新插入的源对象是否满足代理规则,若满足代理规则,则对代理类及代理类的代理类进行递归的插入操作,即新插入的对象会自动生成相应的代理对象,插入到满足代理规则的代理类中;否则,不进行任何操作,
(2)连接型代理类对象插入迁移:
若源类上有连接型代理类,操作规则为:首先,将新插入的对象和另外源类中的对象进行连接操作,形成候选对象组合,然后检查其是否满足连接代理规则,为满足规则的候选对象组合生成代理对象,插入到代理类中,这里也是一个递归调用的过程,
(3)分组型代理类对象插入迁移:
若源类上有分组型代理类,操作规则为:
未插入前的某个组(即旧组)同新插入的对象构成一个新组后,若旧组满足代理规则且新组也满足代理规则,则重新生成新的代理对象,并删除原来的代理对象,
旧组和新插入的对象构成一个新组,若旧组满足代理规则而新组不满足规则,则删除原来的代理对象,
新插入的对象形成一个新组,若新组满足代理规则,则生成新的代理对象进行插入操作,
新插入的对象形成一个新组,且新组不满足代理规则,不作任何操作。
6.根据权利要求1所述的数据库自动分类方法,其特征是针对对象代理数据库,对象删除时,若在源类中删除该对象则会引起以下的分类操作:
(1)选择型和合并型代理类对象删除迁移:
若源类上有选择型代理类或者合并型代理类,则删除由该对象产生的代理对象,
(2)连接型代理类对象删除迁移:
若源类上有连接型代理类,则删除该源对象和其它类中对象组合所产生的所有的满足代理规则的代理对象,
(3)分组型代理类对象删除迁移:
若源类上有分组型代理类,操作规则为:
被删除的源对象单独组成一个组,则删除该组生成的代理对象,
被删除的源对象所属的旧组满足代理规则,且删除源对象后形成的新组也满足代理规则,则重新计算,生成新的代理对象,并删除原来的代理对象,
被删除的源对象所属的旧组满足代理规则,但删除源对象后形成的新组不满足代理规则,则删除代理对象,
被删除的源对象所属的旧组不满足代理规则,但删除源对象后形成的新组满足代理规则,则生成新的代理对象插入到代理类中去,
被删除的源对象所属的旧组不满足代理规则,且删除源对象后形成的新组也不满足代理规则,不做任何操作。
7.根据权利要求1所述的数据库自动分类方法,其特征是针对对象代理数据库,对象更新时,若在源类对象更新后,则会引起以下的修改迁移操作:
(一)选择型和合并型代理类对象修改迁移:
若源类上有选择型代理类或者合并型代理类,操作规则为:
若更新后的对象不满足选择或者合并代理规则,若更新前该对象有相应的代理对象,则删除旧的代理对象;否则不做任何操作,
若更新后的对象满足选择或者合并代理规则,若更新前该对象没有相应的代理对象,则生成新的代理对象并查入,否则更新其代理对象;
(二)连接型代理类对象修改迁移:
若源类上有连接型代理类,操作规则为:
将更新后对象同另外源类中的每一个对象进行连接操作,形成新的对象组合集,并判断原有的对象组合是否存在于这个新对象组合集合中,若存在,则更新原有对象组合的代理对象,否则删除原有对象组合的代理对象,对新集合中不存在于旧集合的对象组合,创建代理对象,进行插入操作;
(三)分组型代理类对象修改迁移:
若源类上有分组型代理类,操作规则为:
(1)更新的对象从原来所属的组a跳转到另外的组b中去了生成新的组c:
1)该对象是a中唯一一个对象,则:
若更新前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’组也不满足代理规则,则不作任何操作。
8.如权利要求1所述的数据库自动分类方法,其特征是直接对代理对象进行更新,其方法是:代理对象继承源对象的虚属性并没有实际值,查询时,通过定义在代理属性上的“切换操作”,根据源对象属性值确定代理对象的值,代理对象能够拥有自己的扩展实属性,并且占用实际的存储空间,同时也能够被下层代理对象所代理;对于代理类中的对象,也能够进行更新,而对于代理对象上虚属性的修改都必须通过切换,传递到该属性作为实属性所存放的源对象或者上层代理对象上去,
直接对代理对象进行更新,其自动分类的步骤包括:
(1)如果更新的是代理对象的实属性,则处理过程同上述对源对象属性值的更新;
(2)如果更新的是代理对象的虚属性,则根据系统表中源、代理对象之间的双向指针连接记录,找到同该代理对象虚属性所继承的实属性所属的源对象;并通过“切换操作”,从对代理属性的更新值,计算出对源属性的等价更新值,再利用上面更新源对象属性的方法从该源对象开始进行更新操作。
9.如权利要求1所述的数据库自动分类方法,其特征是在所述的数据库自动分类时的并发控制过程中,采用以下更新迁移步骤,来尽可能缩小需要封锁的类的范围:
(1)对于源类开始的更新,其迁移步骤为:
i.获取被更新对象所在类的所有代理类规则,
ii遍历这些代理类规则,抽取规则中依赖属性,
iii.如果当前被修改对象的属性存在于依赖中,将该类加入到迁移计划中,
重复上述步骤,直至最下层代理类;
(2)对于代理类上开始的更新,其迁移步骤为:
i.判断对于更新的属性是否为代理类上的实属性,
ii.如果是更新代理类实属性,则执行上述对于源类开始的更新的迁移步骤,
iii.如果是更新代理类虚属性,则通过切换,传递到该属性作为实属性所存放的源对象或者上层代理对象上去,然后执行上述对于源类开始的更新的迁移步骤;
(3)根据迁移计划,按照类层次,依次对类及其对象,分段进行封锁操作,实施修改操作,最后释放锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100466097A CN101216845A (zh) | 2008-01-03 | 2008-01-03 | 数据库自动分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100466097A CN101216845A (zh) | 2008-01-03 | 2008-01-03 | 数据库自动分类方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101216845A true CN101216845A (zh) | 2008-07-09 |
Family
ID=39623277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100466097A Pending CN101216845A (zh) | 2008-01-03 | 2008-01-03 | 数据库自动分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101216845A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033965A (zh) * | 2011-01-17 | 2011-04-27 | 安徽海汇金融投资集团有限公司 | 一种基于分类模型的数据分类方法及系统 |
CN101599232B (zh) * | 2009-07-09 | 2012-07-04 | 北京四维图新科技股份有限公司 | 检索信息点的方法、装置 |
CN101599231B (zh) * | 2009-07-09 | 2013-03-06 | 北京四维图新科技股份有限公司 | 检索信息点的方法和装置 |
CN103336818A (zh) * | 2013-06-28 | 2013-10-02 | 北京奇虎科技有限公司 | 一种电子设备上网页缩放后对齐的方法和装置 |
CN106681999A (zh) * | 2015-11-05 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 一种数据表查询方法及设备 |
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN113298253A (zh) * | 2021-06-03 | 2021-08-24 | 清华大学 | 用于命名实体识别的模型训练方法、识别方法及装置 |
-
2008
- 2008-01-03 CN CNA2008100466097A patent/CN101216845A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599232B (zh) * | 2009-07-09 | 2012-07-04 | 北京四维图新科技股份有限公司 | 检索信息点的方法、装置 |
CN101599231B (zh) * | 2009-07-09 | 2013-03-06 | 北京四维图新科技股份有限公司 | 检索信息点的方法和装置 |
CN102033965A (zh) * | 2011-01-17 | 2011-04-27 | 安徽海汇金融投资集团有限公司 | 一种基于分类模型的数据分类方法及系统 |
CN103336818A (zh) * | 2013-06-28 | 2013-10-02 | 北京奇虎科技有限公司 | 一种电子设备上网页缩放后对齐的方法和装置 |
CN103336818B (zh) * | 2013-06-28 | 2017-05-17 | 北京奇虎科技有限公司 | 一种电子设备上网页缩放后对齐的方法和装置 |
CN106681999A (zh) * | 2015-11-05 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 一种数据表查询方法及设备 |
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN113298253A (zh) * | 2021-06-03 | 2021-08-24 | 清华大学 | 用于命名实体识别的模型训练方法、识别方法及装置 |
CN113298253B (zh) * | 2021-06-03 | 2021-12-14 | 清华大学 | 用于命名实体识别的模型训练方法、识别方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100541441C (zh) | 一种计算机文件系统的快照创建、删除及修改方法 | |
CN101216845A (zh) | 数据库自动分类方法 | |
CA2434081C (en) | Data structures utilizing objects and pointers in the form of a tree structure | |
JP6410825B2 (ja) | オンライン・シェアード・ナッシング・データベースを拡張するためのインクリメンタルで、かつ、連結された再分散 | |
US7865526B2 (en) | Sheaf data model | |
CN105653691B (zh) | 信息资源管理方法及管理装置 | |
CN104462169B (zh) | 将数据导入到数据库表中的方法和系统 | |
US20080228783A1 (en) | Data Partitioning Systems | |
AU777792B2 (en) | System for managing RDBM fragmentations | |
CN103473321A (zh) | 数据库管理方法与系统 | |
JPH11203372A (ja) | 自動在庫引当が可能な在庫管理方法及び装置 | |
CN103765381B (zh) | 对b+树的并行操作 | |
CN104834557B (zh) | 一种基于Hadoop的数据分析方法 | |
CN108073696B (zh) | 基于分布式内存数据库的gis应用方法 | |
CN101751399A (zh) | 决策树优化方法和优化系统 | |
CN101833568A (zh) | Web数据管理系统 | |
Kahn | A method for describing information required by the database design process | |
CN115329504B (zh) | 一种基于复杂产品结构的bom构建方法 | |
Kennedy et al. | Just-In-Time Data Structures. | |
CN115099722A (zh) | 基于知识化谱系的国土空间规划指标模型管理与应用方法 | |
CN108805182A (zh) | 一种基于连通距离和连通强度的birch改进算法 | |
CN102693174B (zh) | 一种面向对象代理数据库约束的备份方法 | |
CN108255852A (zh) | Sql执行方法及装置 | |
CN110083339A (zh) | 一种新型计算机编程语言 | |
CN112434035B (zh) | 基于机器学习的并发哈希索引数据结构的索引方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination |