欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2016103731120
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.面向数据流的低时延内存B+树索引构建方法,包括以下步骤:

1)负责接收数据的节点机采用双缓存机制,每个开始接收数据的缓存对应一个时间窗并有相应的时间戳标记winTime;当其中一个时间窗时间到期后,进行相应处理,并启动另一个缓存对应的缓存用于接收后续到达的数据,如此往复;在某个给定时间窗完成流数据接收时,该窗口到期,假设对应该窗口构建好的子树根节点指针rootPtr,以winTime为键值,将元组插入到全局B+树上;

2)步骤1)中时间窗口中接收的流式元组数据以健-值格式缓存到KVArray数组中;

3)根据窗口时间将窗口数据进行等时间分片,每个分片数据接收完成后进行排序,然后与之前排序好的数据进行归并排序;

4)同时,若当前窗口流式数据接收时间已达规定时长,则获取当前窗口数据元组数W。

设B+树内部节点默认为B,最大容量即最大子节点数,计算以下参数:(4.1)子B+树的层数H,满足:

BH-1<W≤BH

(4.2)子B+树内节点的子节点数m

(4.3)内节点数NiNodes,

(4.4)叶子节点数NleafNodes,NleafNodes=mH-1(4.5)叶子节点的子节点数d:d=W/NleafNodes(4.6)叶子节点的子节点数偏移量dindex,即前dindex叶子节点的子节点数多一个,使构建的B+树均衡:dindex=W%NleafNodes

5)待参数计算完毕,进行树结构初始化:

(5.1)初始化节点数组BNodeArray,该数组长度为NiNodes+NleafNodes;其中NiNodes为内节点数,NleafNodes为叶节点数,内节点中最后一个节点为根节点;

(5.2)将根节点指向节点数组最后一个元素;

6)启用多线程构建叶子节点,共构建NleafNodes个节点,每个叶子节点构建相对独立。构建叶子节点需要计算三部分数据:父节点相关数据、本节点相关数据、子节点相关数据,并进行相应的引用连接操作,即将孤立的节点通过指针指向其父节点及子节点,从而形成树结构。下面以构建第lfindex叶子节点为例进行说明:(6.1)计算父节点相关数据,计算父节点在节点数组BNodeArray的下标lpindex:lpindex=NleafNodes+lfindex/m(6.2)计算本节点相关数据,所属层数lflevel,叶子节点属于最底层,层数即为树的层数H,lflevel=H(6.3)计算子节点相关数据:

(6.3.1)计算子节点在数组KVArray中的起始下标lfcsindex。在满足lfindex≤dindex时:lfcsindex=lfindex×d+lfindex;

在满足lfindex>dindex时,lfcsindex=lfindex×d+dindex;

(6.3.2)计算叶子节点的子节点数NlfcNodes。

在满足lfindex≤dindex时,NlfcNodes=d+1;

在满足lfindex>dindex时,NlfcNodes=d;

(6.4)构建叶子节点,并将子节点通过引用方式将元组数组连接到叶子节点;

7)启用多线程构建内节点,共构建NiNodes个节点,每个叶子节点构建相对独立。构建内节点需要计算三部分数据:父节点相关数据、本节点相关数据、子节点相关数据,并进行相应的引用连接操作,即将孤立的节点通过指针指向其父节点及子节点,从而形成树结构。下面以构建第iindex叶子节点为例进行说明:(7.1)计算内节点的相关数据;

(7.1.1)计算内节点所属层数ilevel,满足以下条件;

(7.1.2)计算内节点在所在层数的次序ilevelindex:

(7.2)计算父节点在数组BNodeArray的下标ipindex:

(7.3)计算内部节点的子节点相关数据;

(7.3.1)计算内部节点的子节点在数组KVArray中的起始下标icsindex:

(7.3.2)计算内部节点的子节点数NicNodes:NicNodes=m(7.4)在进行引用连接操作前,须判断所有子节点是否已经完成构建,若已经完成构建,则可以开始引用连接操作。

2.如权利要求l所述的低时延内存B+树索引构建方法,其特征在于:如权利1所述的步骤1)将B+树内存索引构建成双层树结构,其中上层构建全局B+树索引,采用插入法将已接收窗口的时间winTime为键值,以该窗口数据构建的B+树根节点rootPtr为值,将〈winTime,rootPtr>元组挂接到全局B+树索引上;由于时间窗的时间戳是递增的,因此,〈winTime,rootPtr>元组的插入操作中只需在最右边的树枝上进行,可以做相应优化处理,最右分枝构建中,其节点的饱和度不受传统B+树的约束,从而不必进行节点分裂操作;

步骤2)~7)在构建窗口数据的局部B+树中,采用新颖的建树方法构建子B+树索引,建树分成三大步骤:步骤2)的数据接收阶段、步骤3)的排序阶段、步骤4)~7)的建树阶段;在构建树阶段,将构建树阶段分成计算树结构阶段和构建树节点阶段,通过计算树结构,获得构建树所用的空间情况及树结构情况,进而通过统一申请、分配空间,使树的地址空间连续;在计算树结构的基础上并行构建相对独立的树节点,提高建树效率。在数据接收阶段,边接收数据边排序,将排序与接收数据并行;在排序阶段进行赋值交换,在构建树阶段进行引用操作,实现排序与树构建并行;实现排序与数据接收并行,排序与树构建并行,将建树的三大主要操作并行,降低建树时延,提高建树效率,从而提高计算机处理效率,提高数据吞吐量。