一种监控基数树内部结构的方法及装置制造方法及图纸

技术编号:17048063 阅读:33 留言:0更新日期:2018-01-17 17:48
一种监控基数树内部结构的方法及装置;所述方法包括:获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所述基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;获取操作后所述基数树中节点的标识集合,作为第二集合;比较所述第二集合与所述预计标识集合,根据比较结果获得监控结果。本申请对于基数树内部形态可以做到在每次发生操作时进行实时监控。

A method and device for monitoring the internal structure of the base tree

A method and a device for monitoring the internal structure of the base tree; the method comprises: acquiring nodes in the tree before the operation base identifier set, as the first set; according to the first set and the node ID change information, determine the node of the tree base is expected to mark set; each node of the base tree identification for describing the shortest path to the node information from the root node; node after the acquisition operation base in the tree identifier set, as second sets; comparison of the second set and the expected identifier set, according to the monitoring results of the comparison. This application can be monitored in real time for each operation in the base tree.

【技术实现步骤摘要】
一种监控基数树内部结构的方法及装置
本专利技术涉及计算机领域,尤其涉及一种监控基数树内部结构的方法及装置。
技术介绍
基数树(radix-tree)是通用的字典类型数据结构,基数树树又称为PAT位树(PatriciaTrieorcritbittree)。基数树是一种多叉搜索树,树的叶子节点是实际的数据条目。每个结点有一个固定的、2^n指针指向子节点(每个指针称为槽slot),并有一个指针指向父节点。在使用基数树时,最常用的操作是插入、删除、查找节点。其中插入、删除节点会改变基数树内部结构。在不同的使用场景下,出于对时间复杂度和空间复杂度的权衡考虑,需要使用不同的数据结构定义以及不同的增删节点算法。比如,在插入、删除连续大块数据为主的场景下,广度优先遍历会比深度优先遍历搜索得到更低的时间复杂度;在存储数据量小且离散度高(离散度越高意味着寻址空间越大)的场景下,使用map或hash来记录子节点指针比数组节省更多内存。。在使用基数树时,在不同的使用场景下,数据结构改变或算法调整后需要做大量的测试才能保证正确性。但对于基数树这种较复杂的数据结构,测试调试工作是一个难点,体现在以下方面:(a)基数树对外提供的接口简单,但内部数据结构复杂,常用的办法是通过多次操作(插入、删除等)后检查数据正确性来测试算法正确性。这种调试方式粒度较粗,无法发现在多次操作之间发生的问题以及在连续操作时被掩盖的“负负得正”的问题。需要有非常充分的测试用例,做极大量的充分测试,才能保证质量。耗时耗力,在算法调整,数据结构调整后无法做到快速迭代,无法适应快速迭代的项目开发要求。(b)若使用(a)中提到的方式调试测试,一旦发现问题,很难立即追溯到问题发生的第一时间,很可能是内部结构在前几次插入、删除操作时就已经出错,但到整个测试用例跑完才能检测出来。遇到这种情况,很多情况下只能去尝试复现,逐步缩小问题范围,无法做到问题暴露即定位,造成定位非常困难。
技术实现思路
本申请提供一种监控基数树内部结构的方法及装置,对于基数树内部形态可以做到在每次发生操作时进行实时监控。本申请采用如下技术方案。一种监控基数树内部结构的方法,包括:获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所述基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;获取操作后所述基数树中节点的标识集合,作为第二集合;比较所述第二集合与所述预计标识集合,根据比较结果获得监控结果。可选地,所述节点的标识是从根节点到该节点的最短路径中每个节点的层索引的序列;所述基数树的不同层对应于不同级别的层索引;所述基数树中每个节点的不同子节点使用该节点所在层所对应级别的层索引进行区分。可选地,所述层索引包括数字和/或字母;所述第一集合包括操作前所述基数树每层节点的标识区间集合;所述第二集合包括操作后所述基数树每层节点的标识区间集合;所述节点标识更改信息包括每层待更改节点的标识区间。可选地,所述根据第一集合以及所述节点标识更改信息,确定所述基数树中节点的预计标识集合包括:当所述操作为插入时,分别对每层的待更改节点的标识区间和第一集合中该层的标识区间集合求并集,将所有层的并集共同作为所述预计标识集合;当所述操作为删除时,分别对每层的待更改节点的标识区间和第一集合中该层的标识区间集合求差集,将所有层的差集共同作为所述预计标识集合。可选地,所述根据所述第一集合以及节点标识更改信息,确定所属基数树中节点的预计标识集合前还包括:根据所述操作涉及的所述基数树中一个或多个叶子节点的标识,确定所涉及的叶子节点的每层父节点的标识,得到每层待更改节点的标识区间。可选地,所述获取所述基数树中节点的标识集合包括:从所述基数树的根节点开始找到每层第一个非空节点;分别从每层所找到的节点开始,通过每个节点所维护的指向右边节点的指针遍历该层的所有节点,记录该层节点的标识,遍历完成后得到每层节点的所述标识集合。一种监控基数树内部结构的装置,包括:预测单元,用于获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所述基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;比较单元,用于获取操作后所述基数树中节点的标识集合,作为第二集合;比较所述第二集合与所述预计标识集合,根据比较结果获得监控结果。可选地,所述节点的标识是从根节点到该节点的最短路径中每个节点的层索引的序列;所述基数树的不同层对应于不同级别的层索引;所述基数树中每个节点的不同子节点使用该节点所在层所对应级别的层索引进行区分。可选地,所述层索引包括数字和/或字母;所述第一集合包括操作前所述基数树每层节点的标识区间集合;所述第二集合包括操作后所述基数树每层节点的标识区间集合;所述节点标识更改信息包括每层待更改节点的标识区间。可选地,所述预测单元根据第一集合以及所述节点标识更改信息,确定所述基数树中节点的预计标识集合包括:当所述操作为插入时,分别对每层的待更改节点的标识区间和第一集合中该层的标识区间集合求并集,将所有层的并集共同作为所述预计标识集合;当所述操作为删除时,分别对每层的待更改节点的标识区间和第一集合中该层的标识区间集合求差集,将所有层的差集共同作为所述预计标识集合。可选地,所述的装置还包括:确定单元,用于根据所述操作涉及的所述基数树中一个或多个叶子节点的标识,确定所涉及的叶子节点的每层父节点的标识,得到每层待更改节点的标识区间。可选地,所述预测单元和/或比较单元获取所述基数树中节点的标识集合包括:从所述基数树的根节点开始找到每层第一个非空节点;分别从每层所找到的节点开始,通过每个节点所维护的指向右边节点的指针遍历该层的所有节点,记录该层节点的标识,遍历完成后得到每层节点的所述标识集合。一种用于监控基数树内部结构的数据处理电子设备,包括处理器、存储器;所述存储器用于存储用于监控基数树内部结构的程序;所述用于监控基数树内部结构的程序在被所述处理器读取执行时,执行如下操作:获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所属基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;获取操作后所述基数树中节点的标识集合,作为第二集合;比较所述第二集合与所述预计标识集合,根据比较结果获得监控结果。本申请包括以下优点:本申请至少一个实施例中,节点的标识包括用于描述从根节点到该节点的最短路径的信息,通过节点的标识的集合能够反映整个基数树的内部结构;在每次操作时对基数树操作后的结构进行预估,并和实际操作后得到的结果进行比较,以判断基数树内部结构在操作后是否异常,从而可以在出现问题时立即发现错误,从而实现在每次发生操作时对基数树进行实时监控。本申请实施例的一个备选方案中,节点的标识可以是从根节点到该节点的最短路径中每个节点的层索引序列,这样可以方便得到每层唯一的标识。本申请实施例的一个备选方案中,节点的标识的集合中可以包含一个或多个区间集合,节点标识更改信息也以区间形式表示,这样通过简单的区间求并集、差集的方式就可以方便地确定预本文档来自技高网
...
一种监控基数树内部结构的方法及装置

【技术保护点】
一种监控基数树内部结构的方法,包括:获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所述基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;获取操作后所述基数树中节点的标识集合,作为第二集合;比较所述第二集合与所述预计标识集合,根据比较结果获得监控结果。

【技术特征摘要】
1.一种监控基数树内部结构的方法,包括:获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所述基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;获取操作后所述基数树中节点的标识集合,作为第二集合;比较所述第二集合与所述预计标识集合,根据比较结果获得监控结果。2.如权利要求1所述的方法,其特征在于:所述节点的标识是从根节点到该节点的最短路径中每个节点的层索引的序列;所述基数树的不同层对应于不同级别的层索引;所述基数树中每个节点的不同子节点使用该节点所在层所对应级别的层索引进行区分。3.如权利要求2所述的方法,其特征在于:所述层索引包括数字和/或字母;所述第一集合包括操作前所述基数树每层节点的标识区间集合;所述第二集合包括操作后所述基数树每层节点的标识区间集合;所述节点标识更改信息包括每层待更改节点的标识区间。4.如权利要求3所述的方法,其特征在于,所述根据第一集合以及所述节点标识更改信息,确定所述基数树中节点的预计标识集合包括:当所述操作为插入时,分别对每层的待更改节点的标识区间和第一集合中该层的标识区间集合求并集,将所有层的并集共同作为所述预计标识集合;当所述操作为删除时,分别对每层的待更改节点的标识区间和第一集合中该层的标识区间集合求差集,将所有层的差集共同作为所述预计标识集合。5.如权利要求3所述的方法,其特征在于,所述根据所述第一集合以及节点标识更改信息,确定所属基数树中节点的预计标识集合前还包括:根据所述操作涉及的所述基数树中一个或多个叶子节点的标识,确定所涉及的叶子节点的每层父节点的标识,得到每层待更改节点的标识区间。6.如权利要求1所述的方法,其特征在于,所述获取所述基数树中节点的标识集合包括:从所述基数树的根节点开始找到每层第一个非空节点;分别从每层所找到的节点开始,通过每个节点所维护的指向右边节点的指针遍历该层的所有节点,记录该层节点的标识,遍历完成后得到每层节点的所述标识集合。7.一种监控基数树内部结构的装置,其特征在于,包括:预测单元,用于获取操作前基数树中节点的标识集合,作为第一集合;根据所述第一集合以及节点标识更改信息,确定所述基数树中节点的预计标识集合;所述基数树中每个节点的标识包括用于描述从根节点到该节点的最短路径的信息;比...

【专利技术属性】
技术研发人员:袁诚
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1