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

数据库索引的方法技术

技术编号:2823925 阅读:225 留言:0更新日期:2012-04-11 18:40
本发明专利技术揭示了一种数据库索引的方法,该方法包括如下步骤:步骤A、根据索引数据库建立一B+树;步骤B、定义步骤A中的B+树的数据结构,将重复的键值存储于B+树的叶节点中;步骤C、执行索引操作,包括查询操作、插入操作、删除操作。本发明专利技术的利用B+树的数据库索引方法,由于将重复出现的键值直接存储在B+树的叶节点中,避免了使用溢出节点,所以当溢出节点相对于键值较大时,而数据表中又存在一定量的重复键值的情况下,本发明专利技术能够有效地避免空间的浪费,从而减少索引文件的大小,同时也拓宽了B+树的适用范围。由此优化了数据库索引方案。

【技术实现步骤摘要】

本专利技术数据库索引
,涉及一种数据库索引方法,尤其涉及一种利用B+树的数据库索引方法。
技术介绍
B树由R.Bayer和E.McCreight在1972年提出,可以看作是“二叉搜索树”在外存中多路扩展的一般形式,它被设计用来管理和维护大规模数据的索引,具有随机查询效率高、更新开销小和自平衡等特点。B+树在B树的基础上,进一步规定所有的“键值”只能出现在叶子节点中,并用链表的方式把所有叶子节点串连在一起,提高了顺序查询的效率。研究B+树的算法时,为了简化一般都假设不存在键值重复的情况。现有处理处理重复键值的方法主要是采用“溢出页”,即当某个键值对应的记录数大于1时,分配一个“溢出页”用来存放所有的重复键值和其对应记录的偏移量。这个方法尽管简单,但不可避免的浪费了溢出页中空闲的空间,尤其是当键值所占空间相对于溢出页容量较小时,空间浪费的程度加剧,整个索引文件对磁盘的需求量随之明显增加。
技术实现思路
本专利技术所要解决的技术问题是:提供一种利用B+树的数据库索引方法。为解决上述技术问题,本专利技术采用如下技术方案:一种数据库索引的方法,其特征在于,该方法包括如下步骤:步骤A、根据索引数据库建立一B+树;步骤B、定义步骤A中的B+树的数据结构,将重复的键值存储于B+树的叶节点中;步骤C、执行索引操作,包括查询操作、插入操作、删除操作。作为本专利技术的一种优选方案,所述步骤B包括:步骤B1、重新定义B+树非叶节点的索引键值;步骤B2、在每个非叶节点中新增一个索引键值。作为本专利技术的一种优选方案,所述步骤B1中,将B+树非叶节点中的第i个索引键值定义为:以该非叶节点的第i+1个子节点为根的子树中,第一次出现的新键值;若新键值不存在,-->即该子树中包含的所有键值均相同,且已经出现在之前的子树中,则将该索引键值定义为“空”。作为本专利技术的一种优选方案,所述步骤B2中,该新增的索引键值表示以某个非叶节点第0个子节点为根的子树中,第一次出现的新键值。作为本专利技术的一种优选方案,所述查询操作中,在非叶节点中,确定下一步应该遍历的个子节点时,增加了对可能出现的“空”索引键值的处理。作为本专利技术的一种优选方案,所述插入操作中,每次将新键值插入到相应的叶节点后,从该叶节点向上递归更新父节点的的索引键值,直至根节点。作为本专利技术的一种优选方案,所述插入操作包括分裂过程,将一个节点分裂成两个节点后,在父节点中更新本节点索引键值并且增加对应新节点的索引键值,并可能需要递归向上更新,直至根节点。作为本专利技术的一种优选方案,所述删除操作中,每次在某个叶节点中删除一个键值后,从该叶节点向上递归更新父节点的的索引键值,直至根节点。作为本专利技术的一种优选方案,所述删除操作包括合并过程,合并两个节点后,需要在父节点中更新本节点索引键值并且删除被合并节点的索引键值,并可能需要递归向上更新,直至根节点。本专利技术的有益效果在于:本专利技术的利用B+树的数据库索引方法,由于将重复出现的键值直接存储在B+树的叶节点中,避免了使用溢出节点,所以当溢出节点相对于键值较大时,而数据表中又存在一定量的重复键值的情况下,本专利技术能够有效地避免空间的浪费,从而减少索引文件的大小,同时也拓宽了B+树的适用范围。由此优化了数据库索引方案。附图说明图1为本专利技术数据库索引方法的流程图。图2为本专利技术定义的B+树结构图。图3-1、图3-2分别为实施例中B+树分裂过程前后的结构示意图。图4为实施例中B+树删除操作的结构示意图。具体实施方式-->下面结合附图详细说明本专利技术的优选实施例。请参阅图1,本专利技术揭示了一种数据库索引的方法,其特征在于,该方法包括如下步骤:步骤A、根据索引数据库建立一B+树;步骤B、定义步骤A中的B+树的数据结构,将重复的键值存储于B+树的叶节点中;包括:步骤B1、重新定义B+树非叶节点的索引键值;将B+树非叶节点中的第i个索引键值定义为:以该非叶节点的第i+1个子节点为根的子树中,第一次出现的新键值;若新键值不存在,即该子树中包含的所有键值均相同,且已经出现在之前的子树中,则将该索引键值定义为“空”。步骤B2、在每个非叶节点中新增一个索引键值。该新增的索引键值表示以某个非叶节点第0个子节点为根的子树中,第一次出现的新键值。步骤C、执行索引操作,包括查询操作、插入操作、删除操作。所述查询操作中,在非叶节点中,确定下一步应该遍历的个子节点时,增加了对可能出现的“空”索引键值的处理。所述插入操作中,每次将新键值插入到相应的叶节点后,从该叶节点向上递归更新父节点的的索引键值,直至根节点。所述插入操作包括分裂过程,将一个节点分裂成两个节点后,在父节点中更新本节点索引键值并且增加对应新节点的索引键值,并可能需要递归向上更新,直至根节点。所述删除操作中,每次在某个叶节点中删除一个键值后,从该叶节点向上递归更新父节点的的索引键值,直至根节点。所述删除操作包括合并过程,合并两个节点后,需要在父节点中更新本节点索引键值并且删除被合并节点的索引键值,并可能需要递归向上更新,直至根节点。请参阅图2,其中揭示本专利技术中重新定义B+树结构的一棵树的实例。因为6号叶子节点中的所有键值9已经在之前的节点出现过,故第一次出现的新键值不存在,所以用“#”表示该索引值为“空”。另外,图中用下划线标注的数字表示每个非叶节点的额外索引键值,例如,因为第8号叶子节点中第一次出现的新键值为25,而它又是3号节点的第0个儿子节点,所以3号节点的额外索引键值为25。本专利技术中B+树的插入算法总是从根节点开始,通过比较索引键值和待插入键值的大小来确定下一步应该遍历哪一个子节点,直至找到合适的叶节点来容纳待插入键值。在递归向下遍历的过程中,如果节点已满,即节点的(索引)键值数等于节点允许的最大值时,提前对-->其进行分裂操作,这样可以保证当下层节点进行分裂操作需要向上层父节点中添加一个新的索引键值时,父节点总是未满,即节点的索引键值数小于最大允许的键值数。此外,每当发生分裂操作和插入新键值后,都可能需要沿着查询路经递归向上更新父节点中的索引键值,以保证B+树数据结构的完整性。图3-1、图3-2揭示一个在图2所示的B+树中插入键值29后,引起的第9号叶子节点的分裂和第3号节点索引值更新的例子。如图所示,待插入键值为29,从根节点递归向下最终找到合适的第9号叶节点以容纳新键值。此时由于第9号叶节点已满,需要将其分裂成本节叶节点和第10号新叶节点,然后在第10号叶节点中插入键值29。由于原先第9号节点中第一次出现的键值30现在由于分裂操作被移动到第10号节点中,所以应该将其父节点,即第3号节点中相应的索引键值从30更新为“空”,用“#”表示;同时,在父节点中还应该添加一个索引键值以表示新增叶节点中第一次出现的新键值,本例中为新插入键值29。本专利技术的B+树删除算法类似插入算法,通过比较索引键值和待删除键值在大小来确定下一步应该遍历哪一个子节点,直至找到包含待删除键值的叶节点。在递归向下的遍历的过程中,如果节点的索引键值数已经等于规定的最小值时,提前将其与邻居节点合并(merge)或是从邻居节点中借出(borrow)索引值。这样可以保证当下层节点进行合并操作需要从上层父节点中删除一个索引键值时,父节点中的索引键值总是足够多,即节点的索引键值本文档来自技高网...

【技术保护点】
一种数据库索引的方法,其特征在于,该方法包括如下步骤:步骤A、根据索引数据库建立一B+树;步骤B、定义步骤A中的B+树的数据结构,将重复的键值存储于B+树的叶节点中;步骤C、执行索引操作,包括查询操作、插入操作、删除操作。

【技术特征摘要】
1、一种数据库索引的方法,其特征在于,该方法包括如下步骤:步骤A、根据索引数据库建立一B+树;步骤B、定义步骤A中的B+树的数据结构,将重复的键值存储于B+树的叶节点中;步骤C、执行索引操作,包括查询操作、插入操作、删除操作。2、根据权利要求1所述的数据库索引的方法,其特征在于:所述步骤B包括:步骤B1、重新定义B+树非叶节点的索引键值;步骤B2、在每个非叶节点中新增一个索引键值。3、根据权利要求2所述的数据库索引的方法,其特征在于:所述步骤B1中,将B+树非叶节点中的第i个索引键值定义为:以该非叶节点的第i+1个子节点为根的子树中,第一次出现的新键值;若新键值不存在,即该子树中包含的所有键值均相同,且已经出现在之前的子树中,则将该索引键值定义为“空”。4、根据权利要求2所述的数据库索引的方法,其特征在于:所述步骤B2中,该新增的索引键值表示以某个非叶节点第0个子节点为根的子树中,第一次出现的新键值。5、根据权利要求1或2或3或4所述的数据库索引的方法,其特...

【专利技术属性】
技术研发人员:蒋昌俊曾国荪陈闳中苗夺谦闫春钢方钰徐逸文
申请(专利权)人:同济大学
类型:发明
国别省市:31[中国|上海]

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

1