CN109254962B - 一种基于t-树的索引优化方法、装置及存储介质 - Google Patents
一种基于t-树的索引优化方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109254962B CN109254962B CN201710548181.5A CN201710548181A CN109254962B CN 109254962 B CN109254962 B CN 109254962B CN 201710548181 A CN201710548181 A CN 201710548181A CN 109254962 B CN109254962 B CN 109254962B
- Authority
- CN
- China
- Prior art keywords
- index
- value
- data
- node
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种基于T‑树的索引优化方法及装置,所述方法包括:获取包含有批量数据的数据块,所述数据块的数据量根据T‑树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。所述装置执行上述方法。本发明实施例提供的基于T‑树的索引优化方法及装置,在大批量插入数据的场景下,优化了原始索引,能够提高T‑树索引的响应速度。
Description
技术领域
本发明实施例涉及数据索引技术领域,具体涉及一种基于T-树的索引优化方法及装置。
背景技术
索引用于在数据查询时提高效率,随着海量数据的产生,对索引技术提出了新的挑战。
现有技术T-tree(T-树)索引在这种场景下,采用将每一条数据插入索引,由于每一条数据的插入,都需要进行二叉树节点的判断,尤其是待插入的数据量很大,响应速度性能极其低下。
因此,如何在大批量插入数据的场景下,提高T-树索引的响应速度,成为亟须解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于T-树的索引优化方法及装置。
第一方面,本发明实施例提供一种基于T-树的索引优化方法,所述方法包括:
获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;
根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;
根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
第二方面,本发明实施例提供一种基于T-树的索引优化装置,所述装置包括:
获取单元,用于获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;
生成单元,用于根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;
融入单元,用于根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
第三方面,本发明实施例提供另一种基于T-树的索引优化装置,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:
获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;
根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;
根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:
所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如下方法:
获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;
根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;
根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
本发明实施例提供的基于T-树的索引优化方法及装置,在大批量插入数据的场景下,优化了原始索引,能够提高T-树索引的响应速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例基于T-树的索引优化方法的流程示意图;
图2为本发明实施例T-树的结构示意图;
图3为本发明实施例基于T-树的索引优化装置的结构示意图;
图4为本发明实施例提供的装置实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好地理解本发明实施例,下面先对相关的T-树作简要介绍:
T-tree(T-树)索引用来实现关键字的范围查询。T-tree是一棵特殊平衡的二叉树(AVL),它的每个节点存储了按键值排序的一组关键字。T-tree除了较高的节点空间占有率,遍历一棵树的查找算法在复杂程度和执行时间上也占有优势。现在T-tree己经成为内存数据库中最主要的一种索引方式。
T-tree具有以下特点:1)左子树与右子树之差不超过1;2)在一个存储节点(索引节点)可以保存多个键值(索引数值),它的最左与最右键值分别为这个节点的最小与最大键值,它的左子树仅仅包含那些键值小于或等于最小键值的一记录,同理右子树只包括那些键值大于或等于最大键值的记录;3)同时拥有左右子树的节点被称为内部节点,只拥有一个子树的节点被称为半叶节点,没有子树的节点被称为叶子;4)为了保持空间的利用率,每一个内部节点都需要包含一个最小数目的键值。由此可知T-tree是一个每个结点含有多个关键字的平衡二叉树,每个节点内的关键字有序排列,左子树都要比根节点关键字小,右子树都要比根节点关键字大。
在上述T-tree结点结构中,包含如下信息:
(1)balance(平衡因子),其绝对值不大于1,balance=右子树高度- 左子树高度;
(2)Left_child_ptr和Right_child_ptr分别表示当前结点的左子树和右子树指针;
(3)Max_Item表示结点中所能容纳的键值的最大数;
(4)Key[0]至K[Max_Item-1]为结点内存放的关键字;
(5)nItem是当前节点实际存储的关键字个数。
对于T-tree有如下特征:
(1)与AVL树相似,T-tree中任何结点的左右子树的高度之差最大为1;
(2)与AVL树不同,T-tree的结点中可存储多个键值,并且这些键值排列有序;
(3)T-tree结点的左子树中容纳的键值不大于该结点中的最左键值;右子树中容纳的键值不小于该结点中的最右键值;
(4)为了保证每个结点具有较高的空间占用率,每个内部结点所包含的键值数目必须不小于某个指定的值,通常为 (Max_Item-2)(Max_Item为结点中最大键值目)。
T树索引的操作
用T-tree作为索引方式主要完成三个工作:查找,插入,删除。其中插入和删除都是以查找为基础。下面分别介绍三种操作的流程。
1查找
T-tree的查找类似于二叉树,不同之处主要在于每一结点上的比较不是针对结点中的各个元素值,而是首先检查所要查找的目标键值是否包含在当前结点的最左键值和最右键值所确定的范围内,如果是的话,则在当前结点的键值列表中使用二分法进行查找;如果目标键值小于当前结点的最左键值,则类似地搜索当前结点的左孩子结点;如果目标键值大于当前结点的最右键值,则类似地搜索当前结点的右孩子结点。
2插入
T-tree的插入是以查找为基础,应用查找操作定位目标键值插入位置,并记下查找过程所遇到的最后结点。如果查找成功,判断此结点中是否有足够的存储空间。如果有,则将目标键值插入结点中;否则将目标键值插入此结点,然后将结点中的最左键值插入到它的左子树中(此时是递归插入操作),之后结束;否则分配新结点,并插入目标键值;然后根据目标键值与结点的最大最小键值之间的关系,将新分配的结点链接为结点的左孩子或右孩子;对树进行检查,判断T-tree的平衡因子是否满足条件,如果平衡因子不满足则执行旋转操作。
3删除
T-tree的删除操作也是以查找为基础,应用查找操作定位目标键值。如果查找失败,则结束;否则令N为目标键值所在的结点,并从结点N中删除目标键值;删除节点后,如果结点N为空,则删除结点N,并对树的平衡因子进行检查,判断是否需要执行旋转操作;如果结点N中的键值数量少于最小值,则根据N的平衡因子决定从结点N的左子树中移出最大的键值或者右子树中移出最小值来填充。
图1为本发明实施例基于T-树的索引优化方法的流程示意图,如图1所示,本发明实施例提供的一种基于T-树的索引优化方法,包括以下步骤:
S1:获取包含有批量数据的数据块,所述数据块的数据量根据 T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量。
具体的,装置获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量。图2为本发明实施例T-树的结构示意图;如图2所示,T-树的每一个索引节点包括有索引信息,该索引信息可以包括有索引节点保存的数据量(索引数值的个数)、索引数值的最大值和最小值,临时处理数据的批量数据缓冲区。数据块可以理解为将待批量插入的数据总量分成若干份的批量数据,每一份批量数据的数量可以根据索引数值的个数来确定,可以选择和索引数值的个数相等的数量作为每一份批量数据的数量。每一个数据块预留有与索引数值的个数相等的空间,批量插入的数据就按照时序往每一个数据块中插入(本发明实施例提到的数据插入均是指索引值的插入而不包含往物理表中的插入)。
S2:根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点。
具体的,装置根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点。从T-树根节点开始比对,如果数据块的最大数值和最小数值与索引信息中的索引数值的最大值和最小值没有交集(包括如下两种情况:(1)数据块的最小数值大于索引数值的最大值,(2)数据块的最大数值小于索引数值的最小值),对于情况(1)参照图2,将比对的节点选为根节点右侧的相邻节点;同理,对于情况(2)参照图2,将比对的节点选为根节点左侧的相邻节点;直到查找到有交集的索引节点。本发明实施例针对的是有交集的索引节点。如果数据块的最小数值大于索引数值的最小值,且数据块的最大数值小于索引数值的最大值(最大数值和最小数值对应的取值范围包含于索引数值的最大值和最小值对应的取值范围之间),则将数据缓冲指针指向数据块,以使批量数据置于批量数据缓冲区中,并将批量数据缓冲区中的批量数据的数据数值和索引数值合并、并排序,还可以重新计算索引节点的索引数值的最小值、最大值和索引数值的个数,以便更加准确、合理地生成新的索引节点,再将索引数值的最小值和数据块的最大数值之间排序后的批量数据(第一数值)作为生成新的索引节点的索引数值。并将批量数据缓冲区内的数据拷贝到索引数值的存储空间中,还可以再计算新生成的索引节点的索引数值的最小值、最大值和索引数值的个数,以提高后续使用该新生成的索引节点的进行索引的准确性。
如果数据块的最小数值大于索引数值的最小值,且数据块的最大数值大于索引数值的最大值,则获取索引节点的右子树键值(如不存在,则获取索引节点的父索引节点(parent)),直到找到使数据块的最大数值小于索引数值的最大值的待选索引节点(该待选索引节点可以是上述索引节点的右子树键值对应的索引节点,或者是上述索引节点的父索引节点对应的索引节点),参照图2举例说明如下:以第二行右侧的索引节点作为与数据块数值比对的索引节点,该索引节点的右子树键值对应的索引节点相当于该索引节点向右指向的索引节点(向右指向的索引节点图2未画出);该索引节点的父索引节点对应的索引节点相当于该索引节点右上方的向左指向该索引节点的索引节点(右上方的向左指向该索引节点的索引节点、以及向左箭头图2未画出)。如果右子树键值大于数据块的最大数值,将右子树键值对应的索引节点作为第二索引节点,并获取第二索引节点的第二索引数值的最大值和最小值,可以同时将索引数值的最小值和最大值分别作为第一索引数值的最小值和最大值,可以理解上述数值的按从小到大的排序依次为:第一索引数值的最小值和最大值、第二索引数值的最小值和最大值;对批量数据进行排序,将第一索引数值的最小值和最大值之间的排序后的批量数据作为第一批量数据,将第二索引数值的最小值和最大值之间的排序后的批量数据作为第二批量数据。可以参照上述实施例介绍的方法分别生成与第一批量数据对应的新的第一索引节点的第一索引数值,与第二批量数据对应的新的第二索引节点的第二索引数值。对于如果父索引节点对应的索引数值大于数据块的最大数值的情况,同理不再赘述。
如果数据块的最大数值和最小数值之间包含有x个的索引节点对应的索引数值,当x大于等于预设阈值(预设阈值可根据实际情况自主设置),则将数据块中的批量数据逐一进行数据索引(即按照现有技术的方法);当x小于预设阈值,则继续执行上述已说明的方法,不再赘述。
S3:根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
具体的,装置根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。将新生成的索引节点的rchild(右子树指针)指向index.rchild(索引节点的右子树),index.rchild指向该新生成的索引节点,如果判断该T-树需要翻转则翻转,从而将新生成的索引节点融合到原始索引中。判断T-树是否需要翻转、以及如何翻转是本领域的成熟技术,不再赘述。至此完成了一个数据块的数据索引,再依次完成包含有批量数据的每一个数据块的数据索引,从而完成了对待批量插入的所有数据的数据索引。
需要说明的是:可以采用生产者消费者模式来处理批量插入的数据。生产者:将批量插入的数据,按照T-树的索引节点保存的索引数值个数m,构建多个数据块,每个数据块中包含m个批量数据,这是专门生产批量插入数据的数据块的部分;消费者:以原有T-树索引为基础,将每一个“生产者”生产出来的数据块,对数据块进行插入索引操作,具体插入索引操作不再赘述。可以采用多消费者模式。每次进行上述的对数据块进行插入索引操作时,可以将索引节点加锁,其余索引节点则可以用并发方式来处理,可以极大提高数据处理的效率。
本发明实施例提供的基于T-树的索引优化方法,在大批量插入数据的场景下,优化了原始索引,能够提高T-树索引的响应速度。
在上述实施例的基础上,所述索引信息还包括批量数据缓冲区;相应的,所述根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点,包括:
若所述最大数值和最小数值对应的取值范围包含于所述索引数值的最大值和最小值对应的取值范围之间,则将所述批量数据置于所述批量数据缓冲区中。
具体的,装置若判断获知所述最大数值和最小数值对应的取值范围包含于所述索引数值的最大值和最小值对应的取值范围之间,则将所述批量数据置于所述批量数据缓冲区中。可参照上述实施例的说明,不再赘述。
将所述批量数据缓冲区中的批量数据的数据数值和所述索引数值合并,并对合并后的数值进行排序。
具体的,装置将所述批量数据缓冲区中的批量数据的数据数值和所述索引数值合并,并对合并后的数值进行排序。可参照上述实施例的说明,不再赘述。
将所述索引数值的最小值和所述最大数值之间排序后的第一数值作为生成新的索引节点的索引数值;相应的,将所述批量数据缓冲区中的第一数值复制到所述索引数值的存储空间中。
具体的,装置将所述索引数值的最小值和所述最大数值之间排序后的第一数值作为生成新的索引节点的索引数值;相应的,将所述批量数据缓冲区中的第一数值复制到所述索引数值的存储空间中。可参照上述实施例的说明,不再赘述。
本发明实施例提供的基于T-树的索引优化方法,在大批量插入数据的场景下,通过在不同的条件下生成新的索引节点,进一步提高了T-树索引的响应速度。
在上述实施例的基础上,所述根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点,包括:
若所述最小数值大于所述索引数值的最小值、且所述最大数值大于所述索引数值的最大值,则获取所述索引节点的右子树键值。
具体的,装置若判断获知若所述最小数值大于所述索引数值的最小值、且所述最大数值大于所述索引数值的最大值,则获取所述索引节点的右子树键值。可参照上述实施例的说明,不再赘述。
若所述右子树键值大于所述最大数值,将所述右子树键值对应的索引节点作为第二索引节点,相应的,获取所述第二索引节点的第二索引数值的最大值和最小值,并将所述索引数值的最小值和所述索引数值的最大值分别作为第一索引数值的最小值和最大值。
具体的,装置若判断获知所述右子树键值大于所述最大数值,将所述右子树键值对应的索引节点作为第二索引节点,相应的,获取所述第二索引节点的第二索引数值的最大值和最小值,并将所述索引数值的最小值和所述索引数值的最大值分别作为第一索引数值的最小值和最大值。可参照上述实施例的说明,不再赘述。
对所述批量数据进行排序,并将所述第一索引数值的最小值和最大值之间的排序后的批量数据作为第一批量数据,将所述第二索引数值的最小值和最大值之间的排序后的批量数据作为第二批量数据。
具体的,装置对所述批量数据进行排序,并将所述第一索引数值的最小值和最大值之间的排序后的批量数据作为第一批量数据,将所述第二索引数值的最小值和最大值之间的排序后的批量数据作为第二批量数据。可参照上述实施例的说明,不再赘述。
分别将所述第一批量数据和所述第二批量数据,作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值。
具体的,装置分别将所述第一批量数据和所述第二批量数据,作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值。可参照上述实施例的说明,不再赘述。
本发明实施例提供的基于T-树的索引优化方法,在大批量插入数据的场景下,通过在不同的条件下生成新的索引节点,进一步提高了T-树索引的响应速度。
在上述实施例的基础上,所述方法还包括:
若所述索引节点不存在的右子树,则获取所述索引节点的父索引节点。
具体的,装置若判断获知所述索引节点不存在的右子树,则获取所述索引节点的父索引节点。可参照上述实施例的说明,不再赘述。
若所述父索引节点的右子树键值大于所述最大数值,将父索引节点的右子树对应的索引节点作为第二索引节点,相应的,继续执行所述获取所述第二索引节点的第二索引数值的最大值和最小值至所述作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值之间的步骤。
具体的,装置若判断获知所述父索引节点的右子树键值大于所述最大数值,将父索引节点的右子树对应的索引节点作为第二索引节点,相应的,继续执行所述获取所述第二索引节点的第二索引数值的最大值和最小值至所述作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值之间的步骤。可参照上述实施例的说明,不再赘述。
本发明实施例提供的基于T-树的索引优化方法,在大批量插入数据的场景下,通过在不同的条件下生成新的索引节点,进一步提高了T-树索引的响应速度。
在上述实施例的基础上,所述根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中,包括:
将所述新的索引节点的右子树指针指向所述索引节点的右子树,将所述索引节点的右子树指向所述新的索引节点,以将所述新的索引节点融入到原始索引中。
具体的,装置将所述新的索引节点的右子树指针指向所述索引节点的右子树,将所述索引节点的右子树指向所述新的索引节点,以将所述新的索引节点融入到原始索引中。可参照上述实施例的说明,不再赘述。
或,
在所述将所述索引节点的右子树指向所述新的索引节点的步骤之后,若判断获知T-树需要翻转,则对所述T-树进行翻转,以将所述新的索引节点融入到原始索引中。
具体的,装置在所述将所述索引节点的右子树指向所述新的索引节点的步骤之后,若判断获知T-树需要翻转,则对所述T-树进行翻转,以将所述新的索引节点融入到原始索引中。可参照上述实施例的说明,不再赘述。
本发明实施例提供的基于T-树的索引优化方法,在大批量插入数据的场景下,通过将新生成的索引节点融入到原始索引中,优化了原始索引,进一步提高了T-树索引的响应速度。
在上述实施例的基础上,所述方法还包括:
若所述最大数值和最小数值对应的取值范围中包含x个索引节点对应的索引数值的取值范围,且x大于等于预设阈值,则将所述数据块中的批量数据逐一进行数据索引。
具体的,装置若判断获知所述最大数值和最小数值对应的取值范围中包含x个索引节点对应的索引数值的取值范围,且x大于等于预设阈值,则将所述数据块中的批量数据逐一进行数据索引。可参照上述实施例的说明,不再赘述。
或,
若x小于所述预设阈值,则继续执行所述则获取所述索引节点的右子树键值至所述作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值之间的步骤。
具体的,装置若判断获知x小于所述预设阈值,则继续执行所述则获取所述索引节点的右子树键值至所述作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值之间的步骤。可参照上述实施例的说明,不再赘述。
本发明实施例提供的基于T-树的索引优化方法,根据数据块的数据数值与索引数值不同情况,选择相应的索引,进一步提高了T- 树索引的响应速度。
在上述实施例的基础上,在所述获取包含有批量数据的数据块步骤之前,所述方法还包括:
获取待批量插入的数据总量。
具体的,装置获取待批量插入的数据总量。待批量插入的数据总量可以理解为待批量插入的所有数据的总数量。
若判断获知所述数据总量大于所述批量数据的N倍,则删除所述原始索引,并创建新的索引,所述新的索引包括更新的索引信息,所述更新的索引信息包括更新的索引节点保存的数据量n,其中,所述数据总量与n的比值小于等于N。
具体的,装置若判断获知所述数据总量大于所述批量数据的N 倍,则删除所述原始索引,并创建新的索引,所述新的索引包括更新的索引信息,所述更新的索引信息包括更新的索引节点保存的数据量n,其中,所述数据总量与n的比值小于等于N。N,n的数值相关联,可以根据实际情况设置,可以理解的是:当数据总量远远大于每一个数据块中的批量数据时,删除原始索引,并创建新的索引,并增加新的索引的索引节点保存的数据量,增加后的新的索引的索引节点保存的数据量为n,使得数据总量与n的比值小于等于N。
获取包含有更新批量数据的数据块,所述更新批量数据的数据量根据所述数据量n所确定。
具体的,装置获取包含有更新批量数据的数据块,所述更新批量数据的数据量根据所述数据量n所确定。可参照没有更新的情况,不再赘述。
根据所述更新批量数据的数据块的最大数值和最小数值与所述新的T-树的索引信息中的索引数值的比较结果、以及第一预设规则,生成所述新的T-树的新索引节点。
具体的,装置根据所述更新批量数据的数据块的最大数值和最小数值与所述新的T-树的索引信息中的索引数值的比较结果、以及第一预设规则,生成所述新的T-树的新索引节点。可参照没有更新的情况,不再赘述。
根据所述新索引节点和第二预设规则,将所述新索引节点融入到所述新的索引中。
具体的,装置根据所述新索引节点和第二预设规则,将所述新索引节点融入到所述新的索引中。可参照没有更新的情况,不再赘述。
或,
若判断获知所述数据总量小于等于所述批量数据的N倍,则继续执行所述获取包含有批量数据的数据块以后的步骤。
具体的,装置若判断获知所述数据总量小于等于所述批量数据的N倍,则继续执行所述获取包含有批量数据的数据块以后的步骤。可参照上述实施例的说明,不再赘述。
本发明实施例提供的基于T-树的索引优化方法,在大批量插入数据的场景下,通过创建新的索引、并优化了新的索引,进一步提高了T-树索引的响应速度。
图3为本发明实施例基于T-树的索引优化装置的结构示意图,如图3所示,本发明实施例提供了一种基于T-树的索引优化装置,包括获取单元1、生成单元2和融入单元3,其中:
获取单元1用于获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;生成单元2用于根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;融入单元3用于根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
具体的,获取单元1用于获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;生成单元2用于根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;融入单元3用于根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
本发明实施例提供的基于T-树的索引优化装置,在大批量插入数据的场景下,优化了原始索引,能够提高T-树索引的响应速度。
本发明实施例提供的基于T-树的索引优化装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图4为本发明实施例提供的装置实体结构示意图,如图4所示,所述装置包括:处理器(processor)401、存储器(memory)402和总线 403;
其中,所述处理器401、存储器402通过总线403完成相互间的通信;
所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点;根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。
Claims (9)
1.一种基于T-树的索引优化方法,其特征在于,包括:
获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;
所述索引信息还包括批量数据缓冲区;根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点,具体包括:
若所述最大数值和最小数值对应的取值范围包含于所述索引数值的最大值和最小值对应的取值范围之间,则将所述批量数据置于所述批量数据缓冲区中;
将所述批量数据缓冲区中的批量数据的数据数值和所述索引数值合并,并对合并后的数值进行排序;
将所述索引数值的最小值和所述最大数值之间排序后的第一数值作为生成新的索引节点的索引数值;相应的,将所述批量数据缓冲区中的第一数值复制到所述索引数值的存储空间中;
根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点,包括:
若所述最小数值大于所述索引数值的最小值、且所述最大数值大于所述索引数值的最大值,则获取所述索引节点的右子树键值;
若所述右子树键值大于所述最大数值,将所述右子树键值对应的索引节点作为第二索引节点,相应的,获取所述第二索引节点的第二索引数值的最大值和最小值,并将所述索引数值的最小值和所述索引数值的最大值分别作为第一索引数值的最小值和最大值;
对所述批量数据进行排序,并将所述第一索引数值的最小值和最大值之间的排序后的批量数据作为第一批量数据,将所述第二索引数值的最小值和最大值之间的排序后的批量数据作为第二批量数据;
分别将所述第一批量数据和所述第二批量数据,作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述索引节点不存在的右子树,则获取所述索引节点的父索引节点;
若所述父索引节点的右子树键值大于所述最大数值,将父索引节点的右子树对应的索引节点作为第二索引节点,相应的,继续执行所述获取所述第二索引节点的第二索引数值的最大值和最小值至所述作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值之间的步骤。
4.根据权利要求1所述的方法,其特征在于,所述根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中,包括:
将所述新的索引节点的右子树指针指向所述索引节点的右子树,将所述索引节点的右子树指向所述新的索引节点,以将所述新的索引节点融入到原始索引中;
或,
在所述将所述索引节点的右子树指向所述新的索引节点的步骤之后,若判断获知T-树需要翻转,则对所述T-树进行翻转,以将所述新的索引节点融入到原始索引中。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述最大数值和最小数值对应的取值范围中包含x个索引节点对应的索引数值的取值范围,且x大于等于预设阈值,则将所述数据块中的批量数据逐一进行数据索引;
或,
若x小于所述预设阈值,则继续执行所述则获取所述索引节点的右子树键值至所述作为生成新的第一索引节点的第一索引数值和新的第二索引节点的第二索引数值之间的步骤。
6.根据权利要求1所述的方法,其特征在于,在所述获取包含有批量数据的数据块步骤之前,所述方法还包括:
获取待批量插入的数据总量;
若判断获知所述数据总量大于所述批量数据的N倍,则删除所述原始索引,并创建新的索引,所述新的索引包括更新的索引信息,所述更新的索引信息包括更新的索引节点保存的数据量n,其中, 所述数据总量与n的比值小于等于N;
获取包含有更新批量数据的数据块,所述更新批量数据的数据量根据所述数据量n所确定;
根据所述更新批量数据的数据块的最大数值和最小数值与所述新的T-树的索引信息中的索引数值的比较结果、以及第一预设规则,生成所述新的T-树的新索引节点;
根据所述新索引节点和第二预设规则,将所述新索引节点融入到所述新的索引中;
或,
若判断获知所述数据总量小于等于所述批量数据的N倍,则继续执行所述获取包含有批量数据的数据块以后的步骤。
7.一种基于T-树的索引优化装置,其特征在于,包括:
获取单元,用于获取包含有批量数据的数据块,所述数据块的数据量根据T-树中的索引节点保存的数据量所确定,其中,所述索引节点的索引信息包括所述索引节点保存的数据量;所述索引信息还包括批量数据缓冲区;
生成单元,用于根据所述数据块的最大数值和最小数值与所述索引信息中的索引数值的最大值和最小值的比较结果、以及第一预设规则,生成新的索引节点,具体包括:
若所述最大数值和最小数值对应的取值范围包含于所述索引数值的最大值和最小值对应的取值范围之间,则将所述批量数据置于所述批量数据缓冲区中;
将所述批量数据缓冲区中的批量数据的数据数值和所述索引数值合并,并对合并后的数值进行排序;
将所述索引数值的最小值和所述最大数值之间排序后的第一数值作为生成新的索引节点的索引数值;相应的,将所述批量数据缓冲区中的第一数值复制到所述索引数值的存储空间中;
融入单元,用于根据所述新的索引节点和第二预设规则,将所述新的索引节点融入到原始索引中。
8.一种基于T-树的索引优化装置,其特征在于,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710548181.5A CN109254962B (zh) | 2017-07-06 | 2017-07-06 | 一种基于t-树的索引优化方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710548181.5A CN109254962B (zh) | 2017-07-06 | 2017-07-06 | 一种基于t-树的索引优化方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109254962A CN109254962A (zh) | 2019-01-22 |
CN109254962B true CN109254962B (zh) | 2020-10-16 |
Family
ID=65050874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710548181.5A Active CN109254962B (zh) | 2017-07-06 | 2017-07-06 | 一种基于t-树的索引优化方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109254962B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569396B (zh) * | 2019-09-03 | 2022-05-06 | 上海赜睿信息科技有限公司 | 一种数据搜索方法、电子设备和计算机可读存储介质 |
CN111190861B (zh) * | 2019-12-27 | 2023-06-30 | 中移(杭州)信息技术有限公司 | 热点文件管理方法、服务器及计算机可读存储介质 |
CN113392089B (zh) * | 2021-06-25 | 2023-02-24 | 瀚高基础软件股份有限公司 | 一种数据库索引优化方法及可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779180B (zh) * | 2012-06-29 | 2015-09-09 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
US9280575B2 (en) * | 2012-07-20 | 2016-03-08 | Sap Se | Indexing hierarchical data |
CN103412917B (zh) * | 2013-08-08 | 2016-08-10 | 广西大学 | 一种可扩展的多类型领域数据协调管理的数据库系统和管理方法 |
CN104424222B (zh) * | 2013-08-23 | 2019-09-13 | 华为技术有限公司 | 数据库索引方法及装置 |
CN103902693B (zh) * | 2014-03-28 | 2017-06-20 | 西安交通大学 | 一种读优化的内存数据库t树索引结构的方法 |
CN105550225B (zh) * | 2015-12-07 | 2019-05-28 | 百度在线网络技术(北京)有限公司 | 索引构建方法、查询方法及装置 |
-
2017
- 2017-07-06 CN CN201710548181.5A patent/CN109254962B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109254962A (zh) | 2019-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484875B (zh) | 基于molap的数据处理方法及装置 | |
US9870382B2 (en) | Data encoding and corresponding data structure | |
CN106528787B (zh) | 一种基于海量数据多维分析的查询方法及装置 | |
CN110515896B (zh) | 模型资源管理方法、模型文件制作方法、装置和系统 | |
CN109254962B (zh) | 一种基于t-树的索引优化方法、装置及存储介质 | |
CN108694158A (zh) | 用于检查bim模型文件是否变化的方法 | |
CN111324577B (zh) | 一种Yml文件读写的方法及装置 | |
CN109522271B (zh) | 一种b+树节点的批量插入和删除方法及装置 | |
CN105787126B (zh) | k-d树生成方法和k-d树生成装置 | |
CN112765405B (zh) | 空间数据搜索结果的聚类和查询的方法及系统 | |
CN109086456B (zh) | 数据索引方法及装置 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN110727687A (zh) | 一种物料清单转换方法及其系统 | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN111562920A (zh) | 小程序代码相似度确定方法、装置、服务器及存储介质 | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
CN110990423B (zh) | Sql语句的执行方法、装置、设备和存储介质 | |
CN106569986B (zh) | 字符串替换方法和装置 | |
US7302377B1 (en) | Accelerated event queue for logic simulation | |
CN115017161A (zh) | 一种结合虚拟dom更新树形数据结构方法、装置及应用 | |
CN110321353B (zh) | 一种基于半分解策略的多维空间数据索引方法 | |
CN110413617B (zh) | 一种根据数据量的大小动态调节哈希表组的方法 | |
CN113806365A (zh) | 一种单数据源数据管理方法、装置及存储介质 | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |