数据库索引方法及装置制造方法及图纸

技术编号:11152900 阅读:99 留言:0更新日期:2015-03-18 09:26
本发明专利技术实施例提供一种数据库索引方法及装置,该数据库索引方法,包括通过数据库接收数据库操作请求,并根据数据库操作请求,在数据库中对待操作关键值进行索引操作,其中,该数据库采用T-Tree数据结构,并且T-Tree中的每个节点采用二叉树结构存储各关键值,从而在对数据库中对待操作关键值进行索引操作时,可以根据数据库采用的T-Tree数据结构、以及T-Tree中的每个节点的二叉树结构,进行索引操作,进而提高数据库中进行索引的效率。

【技术实现步骤摘要】
数据库索引方法及装置
[0001 ] 本专利技术涉及计算机技术,尤其涉及一种数据库索引方法及装置。
技术介绍
内存数据库中的工作数据是常驻内存的数据,处理前不需要从磁盘读取数据,处理后也不需要将结果写回磁盘,从而节省了磁盘输入输出I/o的时间。 在内存数据库中,使用比较广泛的是T-Tree算法,其中,T-Tree节点的数据都是紧密存储的,可以保存在一个数组中。当在中间插入一个新的数据时,必须将数组中的多个数据进行连续搬移,为新的数据腾出空间。并且,当向一个已满的节点中插入新的数据时,如果数据要插入中间位置,必须先将节点中最小的数据插入当前节点的左分支,即前溢;或者将节点中最大的数据插入当前节点的右分支中,即后溢。 然而,T-Tree算法中插入数据时,通常采用递归操作,需要进行大量数据的搬移,从而造成在数据库中索引的效率不高。
技术实现思路
本专利技术提供一种数据库索引方法及装置,用以提高数据库中索引的效率。 本专利技术的第一个方面是提供一种数据库索引方法,包括: 接收数据库操作请求; 根据所述数据库操作请求,在数据库中对待操作关键值进行索引操作,其中,所述数据库采用T-Tree数据结构,且所述T-Tree中的每个节点采用二叉树结构存储各所述关键值,所述二叉树的每个键值点至多连接一个左孩子键值点和一个右孩子键值点,所述左孩子键值点中存储的关键值小于所述右孩子键值点中存储的关键值。 在第一种可能的实现方式中,所述T-Tree中的每个节点分别设置有一个前键值指针和一个后键值指针,所述前键值指针用于指向所述节点中最小关键值的位于前邻居节点中的前邻居键值点,所述后键值指针用于指向所述节点中最大关键值的位于后邻居节点中的后邻居键值点。 结合第一个方面的第一种可能的实现方式,在第二种可能的实现方式中,所述T-Tree每个节点分别设置有一个左孩子指针和一个右孩子指针,所述左孩子指针用于指向所述节点的左孩子节点,所述右孩子指针用于指向所述节点的右孩子节点。 结合第一个方面的第二种可能的实现方式,在第三种可能的实现方式中,所述T-Tree每个节点的所述前键值指针和所述左孩子指针复用相同的第一比特位,且节点中还设置有第一指针标志位,用于标识所述第一比特位当前为前键值指针或左孩子节点; 所述T-Tree每个节点的所述后键值指针和所述右孩子指针复用相同的第二比特位,且节点中还设置有第二指针标志位,用于标识所述第二比特位当前为后键值指针或右孩子节点。 结合第一个方面至第一个方面的第三种可能的实现方式中的任意一种实现方式中,在第四种可能的实现方式中,根据所述数据库操作请求,在索引数据库中对待操作关键值进行索引操作包括: 当所述数据库操作请求为数据库插入请求时,根据待操作关键值查找对应的插入位置,并在插入位置存在关键值时,通过搬移关键值将所述待操作关键值插入所述插入位置。 结合第一个方面的第四种可能的实现方式,在第五种可能的实现方式中,当所述数据库操作请求为数据库插入请求时,根据待操作关键值查找对应的插入位置,并在插入位置存在关键值时,通过搬移关键值将所述待操作关键值插入所述插入位置包括: 步骤11、根据数据库插入请求确定待操作关键值,并确定所述T-Tree的根节点为待插入的当前节点; 步骤12、比较所述待操作关键值是否小于所述当前节点的最小关键值,若是,则执行步骤21,若否,则执行步骤13 ; 步骤13、比较所述待操作关键值是否大于所述当前节点的最大关键值,若是,则执行步骤31,若否,则执行步骤14 ; 步骤14、在所述当前节点中查找所述待操作关键值对应的插入位置; 步骤15、判断所述当前节点是否为满节点,若否,则通过搬移所述当前节点内的键值将待操作关键值插入所述插入位置,结束操作,若是,则执行步骤16 ; 步骤16、将当前节点的最小关键值搬移到所述前键值指针指向的所述前邻居键值点,或将最大关键值搬移到所述后键值指针指向的所述后邻居键值点,通过搬移当前节点内的所述最小关键值或是所述最小关键值将所述待操作关键值插入所述插入位置,且将搬移的所述最小关键值或最大关键值作为新的待操作关键值,将所述前邻居键值点或所述后邻居键值点更新为当前节点,返回执行步骤12 ; 步骤21、判断当前节点的所述左孩子指针的指向是否为空,若是,则执行步骤23,若否,则执行步骤22; 步骤22、将所述当前节点的左孩子节点作为当前节点,返回执行步骤12 ; 步骤23、判断所述当前节点存储的关键值个数是否小于预设值,若是,则执行步骤25,若否,则执行步骤24 ; 步骤24、创建所述当前节点的所述前键值指针指向的所述前邻居键值点为左孩子节点,并将所述左孩子节点插入所述当前节点的双向链表中,将所述左孩子节点作为当前节点; 步骤25、将所述待操作关键值插入所述当前节点中的空键值点,结束操作; 步骤31、判断当前节点的所述右孩子指针的指向是否为空,若是,则执行步骤33,若否,则执行步骤32。 步骤32、将所述当前节点的右孩子节点作为当前节点,返回执行步骤12 ; 步骤33、判断所述当前节点存储的关键值个数是否小于所述预设值,若是,则执行步骤35,若否,则执行步骤34 ; 步骤34、创建所述当前节点的所述后键值指针指向的所述后邻居键值点为右孩子节点,并将所述右孩子节点插入所述当前节点的双向链表中,将所述右孩子节点作为当前节点; 步骤35、将待操作关键值插入当前节点中的空键值点,结束操作。 结合第一个方面的第一种可能的实现方式至第一个方面的第三种可能的实现方式的任意一种实现方式中,在第六种可能的实现方式中,根据所述数据库操作请求,在索引数据库中对待操作关键值进行索引操作包括: 当所述数据库操作请求为数据库删除请求时,根据待操作关键值查找对应的删除位置; 将删除位置的关键值删除,且通过搬移所述当前节点内的关键值更新所述当前节点的二叉树; 当判断所述当前节点更新后的二叉树各键值点均为空时,删除所述当前节点; 根据更新后的二叉树,更新当前节点的前邻居节点中的后键值指针或后邻居节点中的前键值指针。 结合第一个方面的第一种可能的实现方式至第一个方面的第三种可能的实现方式的任意一种实现方式中,在第七种可能的实现方式中,根据所述数据库操作请求,在索引数据库中对待操作关键值进行索引操作包括: 当所述数据库操作请求为数据库查找请求时,根据所述待操作关键值中的查找下限值和查找上限值分别查找对应的下限值位置和上限值位置; 根据所述节点中的所述前键值指针和所述后键值指针,读取所述上限值和下限值之间的所有关键值。 第二个方面,本专利技术实施例提供一种数据库索引装置,包括: 接收模块,用于接收数据库操作请求; 处理模块,用于根据所述数据库操作请求,在数据库中对待操作关键值进行索引操作,其中,所述数据库采用T-Tree数据结构,且所述T-Tree中的每个节点采用二叉树结构存储各所述关键值,所述二叉树的每个键值点至多连接一个左孩子键值点和一个右孩子键值点,所述左孩子键值点中存储的关键值小于所述右孩子键值点中存储的关键值。 在第一种可能的实现方式中,所述T-Tree每个节点分别设置有一个前键值指针和一个本文档来自技高网...

【技术保护点】
一种数据库索引方法,其特征在于,包括:接收数据库操作请求;根据所述数据库操作请求,在数据库中对待操作关键值进行索引操作,其中,所述数据库采用T‑Tree数据结构,且所述T‑Tree中的每个节点采用二叉树结构存储各所述关键值,所述二叉树的每个键值点至多连接一个左孩子键值点和一个右孩子键值点,所述左孩子键值点中存储的关键值小于所述右孩子键值点中存储的关键值。

【技术特征摘要】
1.一种数据库索引方法,其特征在于,包括: 接收数据库操作请求; 根据所述数据库操作请求,在数据库中对待操作关键值进行索引操作,其中,所述数据库采用T-Tree数据结构,且所述T-Tree中的每个节点采用二叉树结构存储各所述关键值,所述二叉树的每个键值点至多连接一个左孩子键值点和一个右孩子键值点,所述左孩子键值点中存储的关键值小于所述右孩子键值点中存储的关键值。2.根据权利要求1所述的数据库索引方法,其特征在于,所述T-Tree中的每个节点分别设置有一个前键值指针和一个后键值指针,所述前键值指针用于指向所述节点中最小关键值的位于前邻居节点中的前邻居键值点,所述后键值指针用于指向所述节点中最大关键值的位于后邻居节点中的后邻居键值点。3.根据权利要求2所述的数据库索引方法,其特征在于,所述T-Tree每个节点分别设置有一个左孩子指针和一个右孩子指针,所述左孩子指针用于指向所述节点的左孩子节点,所述右孩子指针用于指向所述节点的右孩子节点。4.根据权利要求3所述的数据库索引方法,其特征在于: 所述T-Tree每个节点的所述前键值指针和所述左孩子指针复用相同的第一比特位,且节点中还设置有第一指针标志位,用于标识所述第一比特位当前为前键值指针或左孩子节点; 所述T-Tree每个节点的所述后键值指针和所述右孩子指针复用相同的第二比特位,且节点中还设置有第二指针标志位,用于标识所述第二比特位当前为后键值指针或右孩子节点。5.根据权利要求1-4任一所述的数据库索引方法,其特征在于,根据所述数据库操作请求,在索引数据库中对待操作关键值进行索引操作包括: 当所述数据库操作请求为数据库插入请求时,根据待操作关键值查找对应的插入位置,并在插入位置存在关键值时,通过搬移关键值将所述待操作关键值插入所述插入位置。6.根据权利要求5所述的数据库索引方法,其特征在于,当所述数据库操作请求为数据库插入请求时,根据待操作关键值查找对应的插入位置,并在插入位置存在关键值时,通过搬移关键值将所述待操作关键值插入所述插入位置包括: 步骤11、根据数据库插入请求确定待操作关键值,并确定所述T-Tree的根节点为待插入的当前节点; 步骤12、比较所述待操作关键值是否小于所述当前节点的最小关键值,若是,则执行步骤21,若否,则执行步骤13; 步骤13、比较所述待操作关键值是否大于所述当前节点的最大关键值,若是,则执行步骤31,若否,则执行步骤14; 步骤14、在所述当前节点中查找所述待操作关键值对应的插入位置; 步骤15、判断所述当前节点是否为满节点,若否,则通过搬移所述当前节点内的键值将待操作关键值插入所述插入位置,结束操作,若是,则执行步骤16 ; 步骤16、将当前节点的最小关键值搬移到所述前键值指针指向的所述前邻居键值点,或将最大关键值搬移到所述后键值指针指向的所述后邻居键值点,通过搬移当前节点内的所述最小关键值或是所述最小关键值将所述待操作关键值插入所述插入位置,且将搬移的所述最小关键值或最大关键值作为新的待操作关键值,将所述前邻居键值点或所述后邻居键值点更新为当前节点,返回执行步骤12 ; 步骤21、判断当前节点的所述左孩子指针的指向是否为空,若是,则执行步骤23,若否,则执行步骤22; 步骤22、将所述当前节点的左孩子节点作为当前节点,返回执行步骤12 ; 步骤23、判断所述当前节点存储的关键值个数是否小于预设值,若是,则执行步骤25,若否,则执行步骤24; 步骤24、创建所述当前节点的所述前键值指针指向的所述前邻居键值点为左孩子节点,并将所述左孩子节点插入所述当前节点的双向链表中,将所述左孩子节点作为当前节占.步骤25、将所述待操作关键值插入所述当前节点中的空键值点,结束操作; 步骤31、判断当前节点的所述右孩子指针的指向是否为空,若是,则执行步骤33,若否,则执行步骤32。 步骤32、将所述当前节点的右孩子节点作为当前节点,返回执行步骤12 ; 步骤33、判断所述当前节点存储的关键值个数是否小于所述预设值,若是,则执行步骤35,若否,则执行步骤34 ; 步骤34、创建所述当前节点的所述后键值指针指向的所述后邻居键值点为右孩子节点,并将所述右孩子节点插入所述当前节点的双向链表中,将所述右孩子节点作为当前节占.步骤35、将待操作关键值插入当前节点中的空键值点,结束操作。7.根据权利要求2-4任一所述的数据库索引方法,其特征在于,根据所述数据库操作请求,在索引数据库中对待操作关键值进行索引操作包括: 当所述数据库操作请求为数据库删除请求时,根据待操作关键值查找对应的删除位置; 将删除位置的关键值删除,且通过搬移所述当前节点内的关键值更新所述当前节点的二叉树; 当判断所述当前节点更新后的二叉树各键值点均为空时,删除所述当前节点; 根据更新后的二叉树,更新当前节点的前邻居节点中的后键值指针或后邻居节点中的前键值指针。8.根据权利要求2-4任一所述的数据库索引方法,其特征在于,根据所述数据库操作请求,在索引数据库中对待操作关键值进行索引操作包括: 当所述数据库操作请求为数据库查找请求时,根据所述待操作关键值中的查找下限值和查找上限值分别查找对应的下限值位置和上限值位置; 根据所述节点中的所述前键值指针和所述后键值指针,...

【专利技术属性】
技术研发人员:张文勇翟素平
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1