当前位置: 首页 > 专利查询>武汉大学专利>正文

数据库中对象标识符回收再利用的方法技术

技术编号:2865437 阅读:240 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及数据库中对象标识符回收再利用的方法,它包括:建立数据结构的步骤、对象标识符回收的步骤、对象标识符再利用的步骤。在本发明专利技术方法中,OID的回收与对象物理空间的回收过程相一致,能自动回收对象标识符,可充分利用现有的计算机资源并提高系统性能。

【技术实现步骤摘要】

本专利技术涉及计算机数据库,具体涉及数据库中对象标识符(OID),特别是。
技术介绍
OID(object-identifier)是面向对象数据库(OODBs)中提出的新概念。面向对象数据库中采用了“面向对象”的方法,即实体类型用“类”表示,实体用“对象”表示,系统给数据库中的每个对象赋予一个“对象标识符”(OID),起唯一标识作用。这种实现方法在语义上克服了以往“面向值”数据模型的缺点。OID的引入,避免了数据库系统的变量冗余,使对象可以方便地被引用并共享。但就现在看来,OODBs还不成熟,远不能完全替代关系数据库系统。因而人们转入将面向对象数据库的优点(OID是其中必不可少的一部分)引入到关系数据库中,形成了功能强大的对象关系数据库。这种新型的数据模型中,OID的概念消除了传统关系数据库系统中存在的数据模型的缺陷。OID作为面向对象数据库以及对象关系数据库中的一项非常重要的技术,也存在形式各样的实现方法。目前使用广泛的一种方法为句柄(handle)维护法,该系统每次生成新的对象,都将该句柄的值加一并赋给对象作为对象标志符,由于它简单易行(编程简单且管理方便且移植性强),因而适用广泛,能够有效应用于ORDBs和OODBs中。然而,在句柄维护法中,位长的限制决定了数据库中可用OID的个数,一旦所有OID全部分配,则数据库将面临崩溃。为了避免OID资源耗尽而产生系统崩溃,目前一般采用以下两种方法1、采用扩展OID的长度来增加可用OID的个数方法。但是该方案会引起OID对资源耗费的增加,而且实现更复杂。2、对已废弃的OID进行回收。就目前来看,回收不失为一种很好的方法。它可不需要考虑在整个数据库生存周期中所需要的OID个数,而将考虑范围缩小为某个时间周期内所需的OID,对有限的OID进行循环使用。只要OID的数量满足某段时间内数据库的需要即可。现有的OID回收方法为首先,在数据库中设置两个表①HighestObj(Obj)存放下一个可用的对象标识符;②Free(Obj)用于回收已删除的对象标识符。一旦删除对象,则用户手动将其OID插入到表Free中一旦创建对象,则先查询Free中是否有可用OID。如果有,则从其中分配一个OID给对象,并手动将该OID从Free中删除;如果没有,则从表HighestObj中分配一个给对象并手动将该OID从HighestObj中删除。该回收方案虽然能够实现OID的回收,但是却将繁重的工作交与用户手动实现,每删除一个对象即将对应的OID进行回收。用户不仅需要自行分配OID,而且还要根据资源回收情况决定采取哪种方式进行分配;由于用户不清楚数据库内部具体的情况,使数据库的管理变得比较复杂且效率比较低。
技术实现思路
本专利技术所要解决的技术问题是提供一种在采用句柄维护法的数据库中使用的对象标识符回收再利用的方法,在该方法中,OID的回收与对象物理空间的回收过程相一致,能自动回收对象标识符,可充分利用现有的计算机资源并提高系统性能。本专利技术解决上述技术问题所采用的技术方案是包括建立数据结构的步骤、对象标识符回收的步骤、对象标识符再利用的步骤;建立数据结构的步骤包括(1)在磁盘中建立一个用于存贮回收对象标识符的回收文件,该文件分为若干个块,每一个块都具有一个头信息,头信息中至少包括该块的块号、该块中对象标识符的个数;回收文件以栈的方式存储块;块以栈的方式存储对象标识符;(2)在共享内存中增加存放两个变量的域,其中一个变量为块变量,它指向对象标识符回收文件中最后一个可用块;另一个变量为对象标识符变量,它指向对象标识符回收文件中最后一个可用块的最后一个对象标识符。两个变量始终表示工作的开始位置;(3)在内存中建立一个用于存放回收文件中的最后一个有效块的拷贝的缓冲区;对象在数据库中的存在形式有两种①live对象——有效对象;②dead对象——不再被使用的旧版本对象,包括被逻辑删除的对象和被更新的对象。被逻辑删除的对象称为废弃对象。对象标识符回收的步骤为物理上删除废弃对象时,将其对象标识符存贮到回收文件的步骤;物理上删除对象包括①单个对象的删除、②整个类的删除。上述方案中,在单个对象的删除时(在清理类中的已废弃对象时)进行对象标识符回收的步骤为(1)逻辑删除对该删除对象加逻辑删除(根据相应情况区分删除和更新)标记;(2)物理删除扫描到该对象的逻辑删除标记,将被删除对象的对象标识符回收,存贮到回收文件中;上述方案中,直接清理整个类的所有对象时回收对象标识符的步骤为(1)为该事务分配一个临时文件; (2)在删除该类的过程中,扫描该类所有对象,并将其中的live对象和废弃对象的OID存放在该临时文件中;当在事务提交时,将该临时文件中的所有对象标识符全部导入回收文件;当事务发生回滚时,将该临时文件中的内容抛弃。上述方案中,对象标识符再利用的步骤包括(1)将块变量所指向的文件块拷贝到该缓冲区中;(2)当对新的对象分配对象标识符时,系统从缓冲区中取出对象标识符变量所对应的对象标识符,同时将对象标识符变量减1;当对象标识符变量为空时,将该缓冲区在磁盘上对应的块清空,并从回收文件中拷贝出前一个块到缓冲区中,同时将块变量减1;当块变量为空时,则转入到原对象标识符分配机制。上述方案中,它还包括系统恢复处理的步骤,系统恢复处理的步骤包括将两个变量记录到检查点中的步骤。上述方案中,它还包括系统恢复处理的步骤,系统恢复处理的步骤为包括(1)将两个变量记录在日志中;(2)系统恢复时,根据日志找到最后一次分配的对象标识符,当在系统对象标识符的原分配模式之下,直接将该对象标识符变量加1,作为下一个可分配的对象标识符;当在回收对象标识符的分配模式,还要在日志记录中找到最后分配的对象标识符对应的块变量,然后根据该对象标识符和块变量在回收文件中匹配,确定下一个可分配的对象标识符。本专利技术方法与现有的对象标识符回收再利用的方法相比,具有以下优点1、能自动回收对象标识符。不需要用户决定如何回收、回收后的OID如何放置以及如何分配已回收OID。一旦系统开始进行物理空间回收,即会同步回收对应的无用的对象标识符,使得回收对象标识符的过程对用户透明。2、根据数据库系统中不同的对象删除策略对OID的进行相应的回收处理,使之与对象物理空间的回收工作同步。对于一般数据库系统,对象删除包括逻辑删除和物理删除两个部分。其中,逻辑删除对象只是将其标记为不可见,但该对象仍然占用物理空间,如果需要,可以通过修改相关域使得该对象重新可见;物理删除即真正的将对象从磁盘中删除并回收其物理空间。在这种情况下,本专利技术将OID的回收放到对象物理删除时进行。如果数据库中对象的删除是一次性的,即直接物理删除该对象,则直接在这一步回收该对象的OID。一般而言,这种一次性删除情况出现比较少。3、为了便于回收OID的再利用,减少磁盘输入/输出(I/O)并有效实现回收再利用的同步,在内存中开辟一块专门缓冲区用于进行OID的分配工作。由于回收的OID是无序的,不能使用数值递加的策略来管理回收的OID,而必须在文件中准确定位下一个可分配OID。在内存中开辟一块缓冲区buffer_for_oid(BFO),以块为单位对OID回收文件(ORF)进行读取,有效的减少磁盘I/O并提高效率。本文档来自技高网
...

【技术保护点】
数据库中对象标识符回收再利用的方法,其特征在于:它包括:建立数据结构的步骤、对象标识符回收的步骤、对象标识符再利用的步骤;建立数据结构的步骤包括:(1)在磁盘中建立一个用于存贮回收对象标识符的回收文件,该文件分为若干个块,每一个块都具有一个头信息,头信息中至少包括:该块的块号、该块中对象标识符的个数;回收文件以栈的方式存储块;块以栈的方式存储对象标识符;(2)在共享内存中增加存放两个变量的域,其中一个变量为块变量,它指向对象标识符回收文件中最后一个可用块;另一个变量为对象标识符变量,它指向对象标识符回收文件中最后一个可用块的最后一个对象标识符;两个变量始终表示工作的开始位置;(3)在内存中建立一个缓冲区,用于存放回收文件中的最后一个有效块的拷贝;对象标识符回收的步骤为:物理上删除废弃对象时,将其对象标识符存贮到回收文件的步骤;物理上删除对象包括:单个对象的删除、整个类的删除。

【技术特征摘要】

【专利技术属性】
技术研发人员:彭智勇施源翟博譞庄继峰
申请(专利权)人:武汉大学
类型:发明
国别省市:83[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利