CN110659286B - 基于弱平衡空间树动态空间索引方法及其存储介质、装置 - Google Patents
基于弱平衡空间树动态空间索引方法及其存储介质、装置 Download PDFInfo
- Publication number
- CN110659286B CN110659286B CN201910839492.6A CN201910839492A CN110659286B CN 110659286 B CN110659286 B CN 110659286B CN 201910839492 A CN201910839492 A CN 201910839492A CN 110659286 B CN110659286 B CN 110659286B
- Authority
- CN
- China
- Prior art keywords
- node
- index
- tree
- low
- executing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 230000008569 process Effects 0.000 claims description 22
- 238000003780 insertion Methods 0.000 claims description 11
- 230000037431 insertion Effects 0.000 claims description 11
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004931 aggregating effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000012554 master batch record Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于低平衡空间树动态空间索引方法及存储介质、装置。所述方法案包括:步骤1、确定要分裂的叶子节点的索引项集合S;步骤2、将索引项集合S在d维度上划分为S1和S0两组;步骤3、对上述步骤得到的索引项集合S0集合和S1集合重复执行步骤2,分别得到索引项集合S00、S01和S10、S11四组;步骤4、初始化一个非叶节点r,其四个子节点r[0],r[1],r[2]和r[3]分别存储索引项集合S00,S01,S10和S11;步骤5、输出非叶节点r。
Description
技术领域
本发明属于空间信息系统技术领域,具体涉及动态空间索引技术领域。
背景技术
随着无线通信技术的发展和便携式设备的日益普及,基于位置的服务变得越来越重要。例如,在地理信息系统,地图应用软件和基于位置的广告推荐等应用场景下都需要基于位置的服务来实现。基于位置的服务是以时空数据为基本输入元素的,通常基于时空数据的应用对时间的敏感度较高,因而对实时性有着较高的要求。传统的提高处理时空数据效率的方式是以批处理的方式实现的,具体而言,是通过从移动设备和传感器设备收集大量时空数据,然后进行存储、分析、查询等操作。查询操作是批处理方式中最主要的操作,现有技术中,R-tree及其变种是经常用于空间数据查询的索引。索引是为了加快检索而设计的,这意味着它更适用于查询小于更新的情景。
现有技术中,经典索引的模型,如B-tree和R-tree,虽然已经多次修改使得其数据结构适合于低延迟地查询需求,但对于实时处理系统而言,需要对位置变化频繁的对象做出快速的响应,而现有技术中空间索引的性能不足往往无法满足其要求。在现有技术中,空间索引大多是在变化不是很大的数据集上建立索引,这种情形下只需通过提升索引的查询效率就可以满足大部分的需求。也就是说,现有技术中的空间索引更适应于查询次数远大于更新(删除或插入)次数的应用场景。
然而,在实时处理的场景下,索引的更新操作是查询操作的两倍。每个上传至系统的数据元组要进行一次查询,同时这个数据元素也要插入到索引中供后续到来的元组查询,还要在超出预设的时间时从索引中删除以保证索引中数据集的实效性,而现有技术中的B-tree和R-tree等树形索引难以解决上述问题;而且实时处理与批处理的一个关键差异是前者每个输入元组同时扮演着检索和更新的角色。在实时处理系统中,我们经常会维护一个时间窗口,比如一个5分钟的窗口,我们会在索引中存储最近5分钟的数据,当有新数据输入时,把这条数据作为查询项在索引上执行一次查询操作,同时将其插入到索引中,5分钟后又需要把这条数据从索引中删除,所以在实时处理系统中,索引的更新次数是查询次数的两倍。索引设计的初衷是提高查询效率,在高频率更新的情况下,上面提及的现有技术需要经常调整树的结构或重新分配节点数据。另外,因为实时处理系统要求索引既具有高效的查询性能,又具有高效的更新性能,这就需要树形索引的查询路径尽量短和少,同时应尽量避免调整结构或重新分配数据,因而现有技术中当索引需要动态更新时,这些空间索引需要经常调整树的结构或重建树,以维持索引项的均衡分布。这些操作的成本很高,在实时处理系统中,这些树形索引只能满足系统对查询效率的要求,不能满足其对更新效率的要求,因此这些空间索引不适合在实时处理系统中使用。
发明内容
针对现有技术中存在的上述在实时处理的场景下,操作成本高,难以满足其对更新效率的要求的问题,本发明提出一种基于低平衡空间树适用于实时处理系统的动态空间索引方法及计算机存储介质、计算机装置。本发明具体方案包括:
步骤1、确定要分裂的叶子节点的索引项集合S;
步骤2、将索引项集合S在d维度上划分为S1和S0两组,其中索引项集合S0和S1两组元素的大小由参数p决定,其中p需满足其中M=(2d+1)m,M为叶节点中存储索引项数量的上界,m为叶节点中存储索引项数量的下界;以使得该方法获得的新叶节点不会立即进入易于调整的状态,即如果存储在新叶节点中的项目数接近m,则该数量将来可能减少到m,进而能够很快实现低平衡空间树的再次调整,且本发明低平衡空间树的平衡因子设置为可配置参数。
将索引项集合S在d维度上分组的过程为:应用快速排序算法,随机选择pivot(支点)进行迭代计算,当某次迭代所选择的pivot位于集合S的第位和第位之间时则结束该过程,此时S在d维度上被划分为S1和S0两组集合。上述算法下,最终索引项集合S在d维上划分的两组集合并非绝对为两等份,因为pivot是随机选择的,所以某次选取的pivot是中点的概率仅1/S.size,上述算法执行过程中需要遍历索引项集合S中的所有元素,因而为了减少遍历次数,在pivot位于集合S的第位和第/>位之间时就进行终止。
步骤3、对上述步骤得到的索引项集合S0在d维度上划分得到索引项集合S00、S01;对索引项集合S1在d维度上划分得到索引项集合S10、S11;;
步骤4、初始化一个非叶节点r,其四个子节点r[0],r[1],r[2]和r[3]分别存储索引项集合S00,S01,S10和S11;
步骤5、输出非叶节点r。
上述过程还包括:为各节点组成的低平衡空间树结构设置平衡因子,将所述平衡因子设置为可配置参数,并且在对所述低平衡空间树执行插入和删除操作时,进行重分配低平衡空间树中元素。
重分配低平衡空间树中元素的步骤如下:
步骤1、确定需要重新分配的节点n;
步骤2、判断节点n是否是非叶节点,若是,则执行步骤3;若否,则执行步骤5;
步骤3、将存储在节点n中所有索引项聚合到一个节点I中;
步骤4、对上述步骤得到的节点I递归执行步骤1和2,直到所得结果为叶节点;
步骤5、对节点n的索引项集合S执行分裂步骤,得到非叶节点r;
步骤6、对i赋初始值0;
步骤7、将Sr[i]·size与M进行比较,若Sr[i]·size大于M,则对r[i]递归执行步骤1-7,若否则输出r[i],并执行步骤8;
步骤8、并将i赋值更新为i+1,并执行步骤7,直至i=2d-1;
步骤9、输出非叶节点r。
对低平衡空间树执行插入操作的步骤如下:
步骤1、确定低平衡空间树的根节点r和待插入的元素e;
步骤2、查找适合插入待插入元素e的叶节点I;
步骤3、将待插入元素e添加到叶节点l的索引项集合SI中;
步骤4、通过将Sl.size与M进行比较判断是否发生越界,若Sl.size小于M则未发生越界,判断插入成功;若Sl.size大于M则判断发生越界,执行步骤5;
步骤5、确定在分裂步骤后的I的上层节点中第一个失衡的节点n;
步骤6、查找失衡的节点n的最小子树a,重新分配a中的元素。
其中查找失衡的节点n的最小子树a的过程为:
N(1/2d)D<M (1)
N(p-1/2p)dD<M (2)
通过公式(1)、(2)和(3)计算出n的深度值D的取值范围,当D的取值导致n的更高层节点失衡时,则以该失衡节点再执行重分配过程,直到重新分配节点元素后节点的更高级别节点不会失去平衡,此时低平衡空间树为最小子树a。其中N是n中存储的元素数;d为索引对象的维度,M为叶节点中存储索引项数量的上界。当重新分配n中的数据时,如果元素被均分,即每个新叶节点中的元素数相等,则D是满足公式(1)的最大整数,此时D的值最小。如果数据以最不均匀的方式划分,即进行分组时,最后一个pivot位于第Sn.size(p-1/2p)位或第Sn.size(p+1/2p)位,D是满足公式(2)的最大整数,此时D的值最大。因此,能够通过(1)和(2)中推导出(3),(3)中表示的范围中的某些值可能导致n的上层节点失去平衡,因此,在通过执行重新分配a中的元素后,不会导致其上层节点出现不平衡的子树a即为最小的子树a。进一步的,利用公式(3)计算出的n的深度值D的取值范围,当D的取值导致n的更高层节点失衡时,则以该失衡节点递归执行上述过程,直到重新分配节点元素后节点的更高级别节点不会失去平衡,进而找到最小子树a。
对所述低平衡空间树执行删除操作包括:
步骤1、确定低平衡空间树的根节点r,以及待删除的元素e;
步骤2、确定存储e的叶节点I,将e从I的索引项集合SI中移除e;
步骤3、判断SI的元素数是否小于叶节点中存储索引项的数量下界m,若是则执行步骤4;若否,则结束流程;
步骤4、判断SI.pa的元素数是否大于叶节点中存储索引项的数量上界M,若是,则执行步骤5;若否,则执行步骤6;
步骤5、确定I.pa的最小子树a,重新分配a中的元素;
步骤6、初始化新的叶节点nl代替I.pa,并将I.pa的所有子节点的索引元素添加到nI中;
步骤7、查找nI中第一个失衡节点n,并查找失衡的节点n的最小子树a,重新分配a中的元素。
本发明还请求保护一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例记载的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法。
本发明还请求保护一种装置,所述装置为计算机装置,包括:处理器、用于存储处理器可执行指令的存储器。所述处理器被配置为实现上述实施例记载的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法。
本发明采用低平衡空间树技术,一方面解决了现有技术中需要经常调整树的结构或重建树造成的操作成本高的问题;另一方面,由于大多数空间树形索引都是严格平衡的树形索引,即所有叶节点都位于树的最底层或最底的两层,这种做法虽然会保证查询路径短,能够提高这些树形索引的查询效率。但是,在频繁更新操作的情况下,这些树很容易失衡,这将使树形索引需要经常调整其结构,因而导致现有技术中这一系列的树形索引的更新效率低下。在所属技术领域,平衡树的平衡因子越大,动态更新时树的失衡次数就越小。但是,如果平衡因子太大,查询路径会很长,这会降低查询效率。因此,本发明通过将平衡因子设置为可配置参数,同时解决了查询和更新效率低下的问题。
附图说明
图1是构建索引时只考虑y维度时分割数据示意图。
图2是构建索引时考虑x和y维度时分割数据示意图。
图3是坐标系中索引项的位置。
图4是对索引项完成索引后的示意图。
图5是本发明一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图。
图6是本发明另一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图。
图7是本发明另一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图。
图8是本发明一种实施例下低平衡空间树插入操作过程示意图。
图9是本发明另一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图。
图10是本发明一种实施例下低平衡空间树删除操作过程示意图。
图11是低平衡空间树在6万条索引项下的性能示意图。
图12是低平衡空间树在60万条索引项下的性能示意图。
图13是低平衡空间树在150万条索引项下的性能示意图。
图14是更新时间示意图。
图15是响应时间示意图。
图16本发明一种实施方式的实现基于低平衡空间树适用于实时处理系统的动态空间索引方法的计算机装置结构示意图。
图17本发明一种实施方式的实现基于低平衡空间树适用于实时处理系统的动态空间索引方法的计算机装置的另一种结构示意图。
具体实施方式
下面将通过具体实施例对本发明的方案进行详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法中各个步骤的动作执行主体可以为基于本发明提出的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法的计算机系统;而该系统可以内置于计算机、服务器等,所以本发明实施例提供的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法中各个步骤的动作执行主体还可以为内置了该系统的计算机、服务器等。
影响空间索引查询性能的因素很多,且这些因素相互影响。为了提高检索速度,通常需要考虑以下因素:1.同层节点的MBR(Mininum Boundary Rectangle,最小边界矩形)的重叠区域应当足够小,以减少查询路径的数量;2.每个节点的MBR的周长应尽可能小,以提高索引中数据聚合度,同时减少查询路径的数量;3.索引应尽可能节省空间,这意味着树索引中的节点总数应该尽可能小,以减少查询路径长度。为了提高检索速度,应该综合考虑这些因素,在构建索引时,如果我们不考虑数据在各个维度上的特征以减少MBR的重叠区域,大部分节点的MBR会变成长矩形,图1示出了该情形。结合上述影响因素重点第1点和第2点,在构建索引时应该考虑数据在各个维度上的特征,图2示出了该情形,这样构建出来的索引的大部分节点的MBR会是一个接近正方形的矩形。如果在图2中索引执行KNN查询时,大部分的KNN查询矩形是一个正方形,查询矩形与叶节点的MBR相交的个数会比图1中的索引中少的多,这样查询路径数也相应地减少。对于上述第3点因素,树索引应尽可能平衡,并且每个节点的索引项数量不应太大。
基于上述三点的考虑,本发明提出一种基于低平衡空间树技术进行动态空间索引的设计。低平衡空间树用于实时处理系统中能够针对多维数据集上的大规模空间查询和分析进行优化,低平衡空间树继承并扩展了B-tree和R-tree,它比实时分布式环境中的现有索引鲁棒性更高,更快速。为方便描述,现将各实施例中所用到的符号及其含义列于表1中。
表1
动态空间索引机制中根据同层节点的MBR是否具有重叠区域,可以将树行索引分为重叠和非重叠树。如果重叠区域越小,则树形索引的平均查询路径数越少。但是,我们的索引对象通常被表示为多维矩形而不是一个多维点,所以不同索引对象的MBR之间可能存在重叠区域。结果导致在同一层节点的MBR必然存在重叠区域。现有技术中通过用索引对象的MBR的中心点表示这个索引对象,然后用Sort Tile Recursive算法打包节点的方式减少这种重叠。如图3所示,四个节点的MBR是由虚线表示的四个矩形,它们之间的重叠面积比较小。
低平衡空间树的特征是一个节点管理固定的空间区域,并且该区域仅由该节点管理。换句话说,如果索引对象MBR的中心点属于某个节点管理的空间区域,则索引对象必定存储在其根是该节点的子树的叶节点中。例如,可以采用二维数据的形式详细描述上述过程,现将每个索引项都用其MBR的中心点表示自身,有r个索引项,每个叶节点可以存储n个索引项。图3展示了坐标系中索引项的位置,首先对索引项按中心点的x维上的值进行升序排序,根据这个顺序将r个索引项分成等份,并将它们分别存储在个/>节点中;其次,与上述过程类似,每个节点中的索引项在y维上进行排序,然后根据这个顺序将每个节点中的索引项再分成/>等份,并分别存储在/>个新节点中。经过上述过程,可以得到个节点,每个节点有n个索引项,上述过程即完成一次算法迭代过程,通过将/>个节点视为索引项,然后执行多次迭代,直到生成根节点,完成整个方法流程,如图4所示。
本发明在现有技术的基础上进行了进一步的改进,请参阅图5,图5为本发明其中一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图。该实施例下的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法,包括分裂步骤,如下所示:
步骤1、确定要分裂的叶子节点的索引项集合S;
步骤2、将索引项集合S在d维度上划分为S1和S0两组,其中索引项集合S0和S1两组元素的大小由参数p决定,其中p需满足其中M=(2d+1)m,M为叶节点中存储索引项数量的上界,m为叶节点中存储索引项数量的下界;以使得该方法获得的新叶节点不会立即进入易于调整的状态,即如果存储在新叶节点中的项目数接近m,则该数量将来可能减少到m,进而能够很快实现低平衡空间树的再次调整,且本发明低平衡空间树的平衡因子设置为可配置参数;
将索引项集合S在d维度上分组的过程为:应用快速排序算法,随机选择pivot(支点)进行迭代计算,当某次迭代所选择的pivot位于集合S的第位和第/>位之间时则结束该过程,此时S在d维度上被划分为S1和S0两组集合。上述算法下,最终索引项集合S在d维上划分的两组集合并非绝对为两等份,因为pivot是随机选择的,所以某次选取的pivot是中点的概率仅1/S.size,上述算法执行过程中需要遍历索引项集合S中的所有元素,因而为了减少遍历次数,在pivot位于集合S的第位和第/>位之间时就进行终止。
步骤3、对上述步骤得到的索引项集合S0集合和S1集合重复执行步骤2,分别得到索引项集合S00、S01和S10、S11四组;
步骤4、初始化一个非叶节点r,其四个子节点r[0],r[1],r[2]和r[3]分别存储索引项集合S00,S01,S10和S11;
步骤5、输出非叶节点r。
请参阅图6,图6为本发明另一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图。上述过程还包括:为各节点组成的低平衡空间树结构设置平衡因子,将所述平衡因子设置为可配置参数,并且在对所述低平衡空间树执行插入和删除操作时,进行重分配低平衡空间树中元素。
重分配低平衡空间树中元素的步骤如下:
步骤1、确定需要重新分配的节点n;
步骤2、判断节点n是否是非叶节点,若是,则执行步骤3;若否,则执行步骤5;
步骤3、将存储在节点n中所有索引项聚合到一个节点I中;
步骤4、对上述步骤得到的节点I递归执行步骤1和2,直到所得结果为叶节点;
步骤5、对节点n的索引项集合S执行分裂步骤,得到非叶节点r;
步骤6、对i赋初始值0;
步骤7、将Sr[i]·size与M进行比较,若Sr[i]·size大于M,则对r[i]递归执行步骤1-7,若否则输出r[i],并执行步骤8;
步骤8、并将i赋值更新为i+1,并执行步骤7,直至i=2d-1。
步骤9、输出非叶节点r;
请参阅图7,图7为本发明另一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图,包括对低平衡空间树执行插入操作,步骤如下:
步骤1、确定低平衡空间树的根节点r和待插入的元素e;
步骤2、查找适合插入待插入元素e的叶节点I;
步骤3、将待插入元素e添加到叶节点I的索引项集合Sl中;
步骤4、通过将Sl.size与M进行比较判断是否发生越界,若Sl.size小于M则未发生越界,判断插入成功;若Sl.size大于M则判断发生越界,执行步骤5;
步骤5、确定在分裂步骤后的l的上层节点中第一个失衡的节点n;
步骤6、查找失衡的节点n的最小子树a,重新分配a中的元素。
其中查找失衡的节点n的最小子树a的过程为:
N(1/2d)D<M (1)
N(p-1/2p)dD<M (2)
通过公式(1)、(2)和(3)计算出n的深度值D的取值范围,当D的取值导致n的更高层节点失衡时,则以该失衡节点再执行重分配过程,直到重新分配节点元素后节点的更高级别节点不会失去平衡,此时低平衡空间树为最小子树a。其中N是n中存储的元素数;d为索引对象的维度,M为叶节点中存储索引项数量的上界。当重新分配n中的数据时,如果元素被均分,即每个新叶节点中的元素数相等,则D是满足公式(1)的最大整数,此时D的值最小。如果数据以最不均匀的方式划分,即进行分组时,最后一个pivot位于第Sn.size(p-1/2p)位或第Sn.size(p+1/2p)位,D是满足公式(2)的最大整数,此时D的值最大。因此,能够通过(1)和(2)中推导出(3),(3)中表示的范围中的某些值可能导致n的上层节点失去平衡,因此,在通过执行重新分配a中的元素后,不会导致其上层节点出现不平衡的子树a即为最小的子树a。进一步的,利用公式(3)计算出的n的深度值D的取值范围,当D的取值导致n的更高层节点失衡时,则以该失衡节点递归执行上述过程,直到重新分配节点元素后节点的更高级别节点不会失去平衡,进而找到最小子树a。
一种优选的实施方式下,如图8所示,图8演示了插入操作的流程,其中圆圈内的数字表示节点索引的元素数。图8中低平衡空间树的下界m为4,平衡因子为1。现在,一个元素想要插入叶子节点A,节点A的元素数量将达到上限20。如果我们直接使用分裂步骤来分割节点A,则节点E的深度将变为3,节点C将失衡。我们可以调用重分配步骤来重新分配子树C的元素。如果这样做,所有子树C的元素将被重新分配到四个新的叶节点,节点C的深度将为2。但节点D的深度为4.这将导致节点R失去平衡。因此,我们应该重新分配低平衡空间树中的所有元素。图8-(d)中显示了最终的正确结果。
请参阅图9,图9为本发明另一种实施例提供的基于低平衡空间树适用于实时处理系统的动态空间索引方法的流程图,包括对所述低平衡空间树执行删除操作,步骤如下:
步骤1、确定低平衡空间树的根节点r,以及待删除的元素e;
步骤2、确定存储e的叶节点I,将e从I的索引项集合Sl中移除e;
步骤3、判断SI的元素数是否小于叶节点中存储索引项的数量下界m,若是则执行步骤4;若否,则结束流程;
步骤4、判断SI.pa的元素数是否大于叶节点中存储索引项的数量上界M,若是,则执行步骤5;若否,则执行步骤6;
步骤5、确定I.pa的最小子树a,重新分配a中的元素;
步骤6、初始化新的叶节点nI代替I.pa,并将I.pa的所有子节点的索引元素添加到nl中;
步骤7、查找nl中第一个失衡节点n,并查找失衡的节点n的最小子树a,重新分配a中的元素。
一种优选的实施方式下,如图10所示,图10演示了删除操作的流程,图10中低平衡空间树具有与图9中的低平衡空间树相同的下界和平衡因子。现在,需要从节点A删除一个元素。这会使节点A的元素数量超出下限。子树C中的元素数量仅为16,我们可以将节点C的四个子节点合并成一个新的叶子节点C。但这又会使节点D失去平衡。所以我们可以通过重分配步骤重新分配子树D中的元素。这将使节点D的深度变为2,这时节点R失去平衡,此时则直接重建整颗树,最终结果如图10-(d)所示。
本发明采用低平衡空间树技术,一方面解决了现有技术中需要经常调整树的结构或重建树造成的操作成本高的问题;另一方面,由于大多数空间树形索引都是严格平衡的树形索引,即所有叶节点都位于树的最底层或最底的两层,这种做法虽然会保证查询路径短,能够提高这些树形索引的查询效率。但是,在频繁更新操作的情况下,这些树很容易失衡,这将使树形索引需要经常调整其结构,因而导致现有技术中这一系列的树形索引的更新效率低下。在所属技术领域,平衡树的平衡因子越大,动态更新时树的失衡次数就越小。但是,如果平衡因子太大,查询路径会很长,这会降低查询效率。因此,本发明通过将平衡因子设置为可配置参数,同时解决了查询和更新效率低下的问题。
本发明以充足的实验数据验证了上述技术效果。本发明利用真实的北京出租车的GPS轨迹数据集为基础数据。该数据集包含2008年2月2日至2月8日期间10,357辆出租车的GPS轨迹。该数据集中的总点数约为1500万。每个点包括出租车ID,事件的时间戳和位置(经度和纬度)。轨迹段由连续到达的两个出租车点构成,它是我们存储在空间索引中的索引项。为了模仿实时数据,我们使用java程序不断向ApacheKafka发送数据,然后让ApacheFlink消费Kafka中的数据。
性能度量:我们将数据存储在Flink框架内,并通过时间窗口来缓存最近一段时间内的数据。窗口大小决定了树中存储的数据量。主要指标是时间,它包含从索引中删除轨迹段、将轨迹段插入索引查询轨迹段的相邻轨迹段等所需的时间。我们使用三个时间的和来表示索引对一个轨迹段的响应时间。
性能参数:我们使用以下参数进行比较实验。
1.level是存储在空间索引中的索引项的数量级,由Window的大小控制。
2.LowBound是存储在低平衡空间树的叶子节点中的索引项的下限。
3.BF是低平衡空间树的平衡因子。
性能实验:我们观察在不同数量级下不同空间索引的表现。我们尝试用BF和LowBound的不同组合来测试低平衡空间树(QBS-tree)在不同的数量级上的性能。
如图14、15所示,随着level的增加,R-tree的删除时间急剧增加,其响应时间基本上随删除时间而变化。但是,低平衡空间树在不同数量级别上的插入和删除时间变化不大,因此其响应时间也相对稳定。实际上,在10w的数量级下,R-tree的响应时间高达410.03毫秒,而低平衡空间树只有0.3毫秒,倍数关系是1300。在100w的数量级下,R-tree的响应时间很难测试,而低平衡空间树的响应时间仅为11.99毫秒。
图11、12和13示出了低平衡空间树在不同数量级和BF和LowBound的不同组合下的性能。当LowBound连续增加时,QBS树的删除和查询时间呈下降趋势,插入时间呈上升趋势,在所有数量级下。此外,当BF为1时,QBS树的插入,删除和查询性能优于BF为其它值时的性能。当BF和LowBound分别为1和10时,低平衡空间树在此数据集上表现最佳。
本发明还提供了一直实施例,包括一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一实施例记载的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法。
本发明所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
请参阅图16,图16为本发明实施例提供的一种计算机装置的结构示意图。本发明实施例提供的一种计算机装置,包括:存储器101,用于存储计算机程序;处理器102,用于执行计算机程序时实现如上任一实施例所描述的基于低平衡空间树适用于实时处理系统的动态空间索引方法的步骤。请参阅图17,本发明实施例提供的另一种计算机装置中还可以包括:与处理器102连接的输入单元103,用于传输外界输入的命令至处理器102;与处理器102连接的输出单元104,用于显示处理器102的处理结果至外界;与处理器102连接的通信单元105,用于实现计算机装置与外界的通信。输出单元104可以为显示面板、激光扫描使显示器等;通信单元105所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本发明实施例提供的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法及计算机存储介质、计算机装置中相关部分的说明请参见本发明实施例提供的一种基于低平衡空间树适用于实时处理系统的动态空间索引方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,当本发明中提及诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。
因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种基于低平衡空间树动态空间索引方法,其特征在于,包括如下步骤:
步骤1、确定待分裂的叶子节点的索引项集合S;
步骤2、将索引项集合S在d维度上划分为S1和S0两组;
步骤3、对索引项集合S0在d维度上划分得到索引项集合S00、S01;对索引项集合S1在d维度上划分得到索引项集合S10、S11;
步骤4、初始化一个非叶节点r,r包括四个子节点r[0],r[1],r[2]和r[3];将索引项集合S00,S01,S10和S11分别存储到四个子节点r[0],r[1],r[2]和r[3]中;
步骤5、输出非叶节点r;
所述索引项集合S0和S1两组元素的大小由参数p决定,其中参数p需满足其中M为叶节点中存储索引项数量的上界,m为叶节点中存储索引项数量的下界,且M=(2d+1)m;
还包括:在对所述低平衡空间树执行插入和删除操作时,进行重分配低平衡空间树中元素;
对所述低平衡空间树执行插入操作包括:
步骤1、确定低平衡空间树的根节点r和待插入的元素e;
步骤2、查找适合插入待插入元素e的叶节点l;
步骤3、将待插入元素e添加到叶节点l的索引项集合Sl中;
步骤4、通过将Sl.size与M进行比较判断是否发生越界,若Sl.size小于M则未发生越界,插入操作执行成功;
若Sl.size大于M则判断发生越界,执行步骤5;
步骤5、确定l经分裂步骤后的上层节点中第一个失衡的节点n;
步骤6、查找失衡的节点n的最小子树,重新分配最小子树中的元素,完成插入操作;
所述查找失衡的节点n的最小子树的过程包括:
N(1/2d)D<M(1)N(p-1/2p)dD<M(2)
其中N是n中存储的元素数,通过公式(1)、(2)和(3)计算出n的深度值D的取值范围,当D的取值导致n的更高层节点失衡时,则以该失衡节点再执行重分配过程,直到重新分配节点元素后节点的更高级别节点不会失去平衡,此时低平衡空间树为最小子树。
2.根据权利要求1所述的方法,其特征在于,步骤2所述将索引项集合S在d维度上分组包括:应用快速排序算法随机选择pivot进行迭代计算,当某次迭代所选择的pivot位于集合S的第位和第/>位之间时则结束迭代过程,此时S在d维度上被划分为S1和S0两组集合。
3.根据权利要求2所述的方法,其特征在于,还包括:为各节点组成的低平衡空间树设置平衡因子,将所述平衡因子设置为可配置参数。
4.根据权利要求1所述的方法,其特征在于,所述重分配低平衡空间树中元素包括:
步骤1、确定需要重新分配的节点n;
步骤2、判断节点n是否是非叶节点,若是,则执行步骤3;若否,则执行步骤5;
步骤3、将存储在节点n中所有索引项聚合到一个节点l中;
步骤4、对上述步骤得到的节点l递归执行步骤1和2,直到所得结果为叶节点;
步骤5、对节点n的索引项集合S进行分裂,得到非叶节点r;
步骤6、对i赋初始值0;
步骤7、将Sr[i].size与M进行比较,若Sr[i].size大于M,则对r[i]递归执行步骤1-7,若否则输出r[i],并执行步骤8;
步骤8、并将i赋值更新为i+1,并执行步骤7,直至i=2d-1;
步骤9、输出非叶节点r。
5.根据权利要求4所述的方法,其特征在于,对所述低平衡空间树执行删除操作包括:
步骤1、确定低平衡空间树的根节点r,以及待删除的元素e;
步骤2、确定存储e的叶节点l,将e从l的索引项集合Sl中移除e;
步骤3、判断Sl的元素数是否小于叶节点中存储索引项的数量下界m,若是,则执行步骤4;若否,则结束流程;
步骤4、判断Sl.pa的元素数是否大于叶节点中存储索引项的数量上界M,若是,则执行步骤5;若否,则执行步骤6;
步骤5、确定l.pa的最小子树,重新分配最小子树中的元素;
步骤6、初始化新的叶节点nl代替l.pa,并将l.pa的所有子节点的索引元素添加到nl中;
步骤7、查找nl中第一个失衡节点n,并查找失衡的节点n的最小子树,重新分配最小子树中的元素,完成删除操作。
6.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的方法。
7.一种装置,所述装置为计算机装置,包括:处理器、用于存储处理器可执行指令的存储器;其特征在于,所述处理器被配置为实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839492.6A CN110659286B (zh) | 2019-09-05 | 2019-09-05 | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839492.6A CN110659286B (zh) | 2019-09-05 | 2019-09-05 | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659286A CN110659286A (zh) | 2020-01-07 |
CN110659286B true CN110659286B (zh) | 2023-11-24 |
Family
ID=69037984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910839492.6A Active CN110659286B (zh) | 2019-09-05 | 2019-09-05 | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659286B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590891B (zh) * | 2021-08-09 | 2023-08-11 | 江苏网进科技股份有限公司 | 一种实时流处理框架 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980047127A (ko) * | 1996-12-13 | 1998-09-15 | 윤덕용 | Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법 |
CN101241511A (zh) * | 2008-03-05 | 2008-08-13 | 北京邮电大学 | 一种基于时空数据的快速索引方法 |
CN101286160A (zh) * | 2008-05-30 | 2008-10-15 | 同济大学 | 数据库索引的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7650320B2 (en) * | 2005-02-24 | 2010-01-19 | Nahava Inc. | Method and system for efficient indexed storage for unstructured content |
-
2019
- 2019-09-05 CN CN201910839492.6A patent/CN110659286B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980047127A (ko) * | 1996-12-13 | 1998-09-15 | 윤덕용 | Hg-트리 색인 구조 및 그의 삽입, 삭제, 검색 방법 |
CN101241511A (zh) * | 2008-03-05 | 2008-08-13 | 北京邮电大学 | 一种基于时空数据的快速索引方法 |
CN101286160A (zh) * | 2008-05-30 | 2008-10-15 | 同济大学 | 数据库索引的方法 |
Non-Patent Citations (1)
Title |
---|
多维索引hB树的改进方法――hB*树;金树东, 冯玉才, 孙小薇;软件学报(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110659286A (zh) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11789978B2 (en) | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment | |
US10922316B2 (en) | Using computing resources to perform database queries according to a dynamically determined query size | |
US20180239800A1 (en) | Data query method and apparatus | |
CN106528787B (zh) | 一种基于海量数据多维分析的查询方法及装置 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
US20160328445A1 (en) | Data Query Method and Apparatus | |
US9798808B2 (en) | Data visualization system | |
EP3224740A1 (en) | Systems and methods for providing distributed tree traversal using hardware-based processing | |
CN112395288B (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
US20190384751A1 (en) | Database live reindex | |
US20230385353A1 (en) | Spatial search using key-value store | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN110659286B (zh) | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
US9977789B2 (en) | Hierarchical grid for spatial querying | |
CN108763381A (zh) | 基于一致性哈希算法的分表方法及设备 | |
CN110309367B (zh) | 信息分类的方法、信息处理的方法和装置 | |
US10802796B1 (en) | Distributed sorted set | |
WO2017095421A1 (en) | Automatic selection of neighbor lists to be incrementally updated | |
US8849866B2 (en) | Method and computer program product for creating ordered data structure | |
CN109359111B (zh) | 一种安卓视图的存取方法和装置 | |
KR20230096180A (ko) | 블록체인 기반의 지리 공간 포인트 데이터 인덱싱을 위한 공간 lsm 트리 장치 및 방법 | |
CN117762971A (zh) | 面向区块链交易检索的高效查询方法、系统、设备及介质 | |
CN115757581A (zh) | 文本数据导入数据库的方法及装置 | |
CN114297260A (zh) | 分布式rdf数据查询方法、装置和计算机设备 |
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 |