利用索引树对数据库记录进行并发存取的方法技术

技术编号:2893438 阅读:242 留言:0更新日期:2012-04-11 18:40
一种利用索引树进行并发存取的方法包括步骤(1)利用所说的键记录从所说的根节点开始穿越所述各个节点直到一个底部节点;(2)禁止别的并发的事务处理对正在被穿越的节点和在它之前被访问过的节点的读之外的访问;(3)指出在底部节点中的所说的键记录;(4)限制对所述的键记录只能作读操作;(5)解除对被穿过的诸节点的所有访问限制;(6)取出这个键记录数据;以及(7)在取出记录数据后撤消对此键记录的访问限制。(*该技术在2008年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术属于数据处理,具体涉及的是数据库记录的管理。目前的数据处理系统包含有数据库管理程序。借助于这些程序能够方便地存取各个数据库表格,每个表由多个记录组成。关系数据库程序能够存取若干个不同的数据库表,其中一个数据库表的元素包含在另一数据库表中。关系数据库程序允许用户利用几个数据库表所共有的某一个特定的字段或元素对这些不同的数据库表中的数据进行搜索、存取和更改。例如,一个数据库表可能含有雇员名和雇员序号,另一个数据库表可能有雇员名和雇员薪水,第三个数据库表可包含雇员名和雇员住地。关系数据库程序可允许用户存取雇员名、雇员序号、雇员薪水以及雇员住址并对这些表格作些改变,而不必一一存取每个数据库表。这些数据库管理程序的一个重要方面是能够对单个数据库中的诸记录提供快速而有效的访问能力。最近的数据处理系统能够支持多用户,使每个用户能够同时并发地存取数据。数据库管理程序通常使用一种索引文件来迅速而有效地存取数据库表中的记录。这些索引文件通常是按B型树结构构成的。谈论B型树的参考资料是“EfficientLockingForConcurrentOperationonB-Tree(B型树上的并发操作的有效互锁)”,这篇文章是由Lehman和Yao两人于1981年12月发表在ACMTransactiononDatabaseSysten杂志第六卷第4期650页至670页上的。讲述B型树结构的其它参考资料有“TheUbiquitousB-Tree”(到处可见的B型树),由Comer发表在ComputingSurveys第11卷第二期,1979年6月,121-137页;再一篇文章是“ConcurrentOperationonB-TreeWithOverTaking”(利用追补法对B型树的并发操作),由Sagiv发表在ACM杂志关于数据库系统原理的SIGACT-SIGMOD研讨会的会议录中,1985年3月,28-37页。作为B型树结构构造出来的索引文件包含有一个根节点和许多由根节点分义出来的节点级。包含在这些节点中的信息是指向下一级节点或指向数据库中记录的指针,这些指针又进一步包括可用于访问数据库中键记录的被称为键记录信息的内容,记录的各个键按顺序放置在所有节点上。例如,对于雇员名,可有一个按字为顺序的索引树。其中根节点包含引用键数据,这些引用键可供下一级节点直接或间接地用来访问有关的记录。引用键含有索引字段,也就是雇员名字为拼写的信息。因此,根节点中的有序的键将逐一指向下一级的名节点。换句话说,根节点下的第一个节点可以间接或直接地访问以A、B、C开头的所有雇员名,与这第一个节点并排的下一节点可包含雇员名是以D-M字为开头的雇员记录,这一级上的最后一个节点可包含雇员名是N-Z开始的记录。当搜索整个索引文件树时,最终总可以达到底部节点,其内容是指向存贮器中单个记录的记录键。对数据库表实施并发存取的问题之一出在多个事务处理企图同时存取同一个记录的时候。特别是当一个用户希望改变一个记录而另一用户又试图使用这一记录,那么就出现竞争状态。对此问题的一种解法办法是对B型树中各索引所对应的记录或其一部分实施互斥访问或互锁,以保证在一用户正在访问某记录时不准改变此索引节点或记录。在IBM技术创新公告(IBMTechnicalDisclosureBulletin)第25卷第7B号,1982年12月,3725-3729页上有一篇题为“IndexLockingamdSplitting”(索引的互锁与分离)以及在这同一杂志的第19卷第10期,1977年3月,3887-3889页上有一篇题为“B型树上的并发操作的互锁协议”都讲述了互锁问题。互锁办法的缺点是当一个用户访问时用一把锁禁止了其它用户的访问。本专利技术的目标是提供一种更为有效的通过索引树存取数据库中记录的方法,同时还保障了对此数据库记录的更加有效的并发存取。索引节点中的信息在被几个用户访问过程中可能被修改。随着有记录被插入数据库表中或从该表中删去,索引节点中将含有被删去或插入的键记录信息。在记录插入操作期间,因为一个节点的存贮量有限,所以一个节点中的信息可能被移到另一节点。这种插入事务处理将试图把一个节点中的键记录信息移到另一节点来完成插入任务。在并发的事务处理访问期间上述这种信息移动会由于其索引信息被改变而造成并发事务处理访问中的错误条件,本专利技术的目标是在改变索引信息期间使几个事务处理能够并发地访问该索引而不产生错误条件。遵照本专利技术给出了在一组记录键中根据通过一索引树的一个键记录或其一部分取出该键记录数据的一种方法。该索引树为不同的事务处理提供并发存取记录键的能力,索引树有一根节点和至少一级与根节点连接的子节点,每个子节点有一键记录引用(即指针-译注),指向相邻的下一级中的一个或多个节点,每个节点还有能直接存取键数据的底部节点。此方法包括七个步骤(1)利用所述的键记录部分从根节点开始横穿诸节点直到底部某个节点;(2)对于其它的并发的事务处理,限制其对正在被穿越的节点和之前被访问过的节点除了读以外的所有访问;(3)在所说的底部节点中标识出所述的键记录;(4)对于所说的键记录限制对它们进行读以外的所有访问;(5)撤消对穿越的各个节点的所有访问限制;(6)取出键记录数据(7)在这个记录数据被取出后撤消对这个键记录的访问限制。此外还提出了插入和删除记录键的方法以及在并发存取期间允许同时改变索引树结构的方法。在附加的权利要求书中叙述了确信是属于本专利技术之特征的新的特性。但是结合附图参照下文的详细说明,将会很好地理解本专利技术本身及权利要求中未曾提到的特性和优点。本文的附图有附图说明图1是数据库表的说明;图2是数据库表在计算机存贮器中的说明;图3是说明一个简单的B型树索引的框图;图4是带索引的B型树节点数据在计算机存贮器中的存贮说明;图5是说明通过带索引的B型树的初始搜索操作的流程图;图6是说明通过带索引的B型树的取数操作的流程图;图7是通过带索引的B型树进行插入操作的流程图;图8是通过带索引的B型树执行删除操作的流程图;图9是说明分离一个节点的算法的流程图;图10是拆除一个节点的算法的流程图。本专利技术涉及的是数据库程序对记录的存取问题。下面的例子大刀阔斧地简化了数据库的存取问题,其目的是为了使读者更容易理解包含在例子中的本专利技术。读者应当明白,包含在数据库表中的信息项目和内容实际上比所说明的要复杂得多。图1所说明的表(10)包括雇员姓名和编号。每个雇员记录包含一个单一的雇员号。表(10)中的姓名按字母顺序排列。但是内行人懂得,在计算机内存中,诸记录的存贮方式并不是这样的。图2说明雇员的姓名/编号记录在计算机存贮器(12)中的存贮情况。每个记录(14,16,18,20,24和26)均有若干部分组成。在记录14中,先后包括地址部分(28)、雇员名(30)和雇员号(32)。地址部分(28)是该雇员名和雇员号(30,32)在计算机内存中的实际位置。图2所示的表12说明姓名的存贮并不是按字母顺序的,甚至不是相邻的。数据库程序通常为用户提供一种能使他快速地存取存贮器中指定记录的索引树。这种索引树的例子如图3所示。为了简化表示,该索引树只给出两级。索引40包含有一个根节点和与它连接的三个节点50,52和54本文档来自技高网...

【技术保护点】
在一个系统中执行一个事务处理时利用通过索引树的一个键记录的一部分从一组记录键中取出键记录数据的一种方法,在这个系统中,另一些事务处理可以通过所说的索引树并发地存取所说的记录键,所说的索引树至少有一个根节点,每个节点有一键记录指针指向下一较低的有序的层次中的一个或多个节点,所说的索引树还有一些底部节点,用它们可以访问所说的键记录数据,其特征在于下述步骤:(a)利用所述的键记录部分从所说的根节点出发穿越所述的各个节点直到抵达底部的一个节点;(b)限制其它并发的事务处理对正 在被穿过的节点和前已访问过的节点作读操作以外的访问;(c)在所述的底部节点中标识出所述的键记录;(d)对所述的键记录限制对它作读操作以外的访问;(e)对被穿越的节点撤消对它的所有访问限制;(f)取出键记录数据;和(g)在 记录数据被取出后,撤消对此键记录的访问限制。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:弗兰克埃利奥特莱温尼卡德莱斯卡纳莫汉
申请(专利权)人:国际商用机器公司
类型:发明
国别省市:US[美国]

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

1