发明名称 一种基于T-lt树的主存数据库的索引方法
摘要 本发明提供一种基于T-lt树的主存数据库的索引方法,主要是针对T树的缺点进行改进,将T树的每个结点都增加一个直接指向此结点的后继结点的尾指针构成T-lt树,所述索引方法包括数据库查询操作、关键字插入操作、关键字删除操作三个步骤,T-lt树的结点结构比T结点多了一个尾指针,如果该结点有tail结点,则尾指针指向tail结点;如果没有tail结点,则尾指针指向直接后继结点。T-lt树的tail结点与T结点相比也多了一个指向直接后继结点的指针。本方法减少对树的遍历次数,减少树的旋转次数,能在主存数据库中提高查询效率,节省时空开销。
申请公布号 CN101587484A 申请公布日期 2009.11.25
申请号 CN200910033414.3 申请日期 2009.06.19
申请人 南京航空航天大学 发明人 秦小麟;柏传杰;戴华
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 南京经纬专利商标代理有限公司 代理人 许 方
主权项 1、一种基于T-lt树的主存数据库的索引方法,其特征在于:将T树的每个结点都增加一个直接指向此结点的后继结点的尾指针构成T-lt树,所述索引方法包括数据库查询操作、关键字插入操作、关键字删除操作三个步骤,其中:(一)数据库查询操作步骤:A、开始操作,设T-lt树根结点为当前结点;B、判断当前结点是否为空,当结果为是,则结束操作,返回未搜索到;当结果为否,进入下一步骤;C、判断搜索值是否小于当前结点的最小值,当结果为是,则设左子结点为当前结点,返回步骤B,继续进行搜索操作;当结果为否,进入下一步骤;D、判断搜索值是否大于当前结点的最大值,当结果为是,则设右子结点为当前结点,返回步骤B,继续进行搜索操作;当结果为否,则进入下一步骤;E、在当前结点和其tail结点中进行二分查找,结束操作,并返回搜索结果;(二)关键字插入操作步骤:F、开始操作,设T-lt树根结点为当前结点;重复上述(一)数据库查询操作步骤A~E,在E步骤中将当前结点作为范围结点;G、判断是否找到范围结点,当没有找到范围结点,则将搜索路径中的最后一个结点作为范围结点,进入下一步骤;H、当寻找到范围结点,继续判断该范围结点是否已满;①、当该范围结点未满,判断该范围结点是否含有tail结点或者原始结点未满;a、当结果为是,将待插入元素按一定的顺序插入范围结点,结束操作;b、当结果为否,则在该范围结点中添加tail结点,使tail结点的尾指针指向原范围结点的后继结点,原范围结点的尾指针则指向该tail结点,然后将待插入值插入到新的范围结点中,结束操作;②、当该范围结点已满,进行以下操作:c、通过该范围结点的tail结点的后继指针找到其直接后继结点,然后将tail结点移出,作为其后继结点的左子结点,最后将待插入元素插入原范围结点或者新的子结点;d、判断T-lt树是否失去平衡,当树失去平衡,则进行旋转操作使树平衡,然后结束操作;当T-lt树未失去平衡,则结束操作;(三)关键字删除操作步骤:I、开始操作,设T-lt树根结点为当前结点;重复上述(一)数据库查询操作步骤A~E,在E步骤中将当前结点作为范围结点;J、判断是否找到范围结点,当没有找到范围结点,则操作失败退出;K、当寻找到范围结点,在该范围结点内删除待删元素,判断删除元素是否会导致下溢;(l)、如果在该范围结点内删除待删元素不会导致下溢,判断删除后是否会导致tail结点为空;e、当判断结果不会导致tail结点为空,则结束操作;f、当判断结果导致tail结点为空,则删除该tail结点,结束操作;(2)、如果在该范围结点内删除待删元素会导致下溢,则判断该范围结点是否为内部结点;g、如果该范围结点是一个内部结点,进行以下操作:i通过该范围结点的后继指针找到其直接后继结点;ii将后继结点的最小元素移入该范围结点中;iii判断该后继结点是否为空,如果后继结点不为空,则直接进入下述L步骤;如果后继结点为空,则删除该后继结点后进入下述L步骤;h、如果该范围结点不是一个内部结点,判断该范围结点是否为叶子结点:iv当该范围结点不是叶子结点,则直接结束操作;v当该范围结点是叶子结点,则判断进行删除操作后是否会导致该结点为空,如果该结点不为空,则直接进入下述L步骤;如果该结点为空,则删除该结点后进入下述L步骤;L、判断T-lt树是否失去平衡,当树失去平衡,则进行旋转操作使树平衡,然后结束操作;当T-lt树未失去平衡,则结束操作。
地址 210016江苏省南京市白下区御道街29号