一种基于位图的MBF数据索引结构对数据快速检索的方法与流程

文档序号:14008341阅读:247来源:国知局
一种基于位图的MBF数据索引结构对数据快速检索的方法与流程

本发明属于高性能路由器索引结构设计领域,特别针对命名数据网(nameddatanetworking)转发平面中索引结构的快速检索问题。



背景技术:

近年来,随着互联网规模不断扩大,5g通信技术以及ar/vr视频技术不断发展,用户对于随时随地广泛分发、共享数据信息的需求越来越强烈。然而基于传统tcp/ip技术的互联网通信模型却逐渐暴露出ip地址空间耗尽、移动性差、网络利用率低等弊端,使得无法满足用户对于低延时数据传输、高质量通信的要求。因此,一种新型未来网络架构命名数据网被提出,以应对tcp/ip网络的不足。

不同于传统的tcp/ip网络,命名数据网建立全新的网络架构体系,使用面向数据内容的通信模式,以内容名称代替ip地址,即不再关心内容存储的物理地址,而仅关心内容本身。通过在网络节点部署缓冲存储器,命名数据网极大地提高了网络资源的共享率,降低了网络负载,提升了数据传输的性能。

为了充分发挥命名数据网的优势,要求其路由器转发平面具有高效的性能,以支持更快速的数据处理操作。其中,数据索引结构是提高转发平面性能的关键。索引结构不仅会影响转发平面的检索速度,还会影响其存储消耗以及对转发策略的支持。因此,设计一个新型的数据索引结构来满足当前转发平面对百万级别数据处理速度的需求具有重要意义。然而,目前常用的基于namecomponentencoding(名称组件编码)方法、hash(哈希)方法、bloomfilter(布隆滤波器)技术的数据索引结构,都不能完全满足转发平面的需求。



技术实现要素:

针对现有技术,本发明提供了基于位图的mbf数据索引结构对数据快速检索的方法,其中设计了一种针对命名数据网转发平面特点的新型数据索引结构,该结构可以实现快速数据插入及检索操作,能够满足百万级别数据处理速度的需求。

为了解决上述技术问题,本发明提出的一种基于位图的mbf数据索引结构对数据快速检索的方法,包括:基于位图的mbf数据索引结构的设计、在所述数据索引结构中插入数据、对插入数据之后的数据索引结构进行数据检索;具体步骤如下:

步骤一、设计基于位图的mbf数据索引结构:基于位图的mbf数据索引结构包括一个可定位型布隆滤波器mbf和一个字节数组bitmap,其中,所述可定位型布隆滤波器mbf由一个通用型布隆滤波器和一个定位数组组成;其中,所述通用型布隆滤波器用于判断要检索的数据名称是否在所述插入数据之后的数据索引结构中;所述定位数组是与所述通用型布隆滤波器具有映射关系的比特数组,用于判断要检索的数据名称在字节数组bitmap中的位置;所述字节数组bitmap用于存储要检索的数据名称所对应的地址偏移量;

步骤二、在步骤一所设计的基于位图的mbf数据索引结构中插入数据名称,每插入一个数据名称的过程包括:

步骤2-1、定位数组初始化:将定位数组中的所有比特位初始化为0;

步骤2-2、输入数据名称:将数据名称输入到上述的基于位图的mbf数据索引结构中;

步骤2-3、对该数据名称进行k次哈希编码:所述哈希函数选用cityhash256,同时,根据通用型布隆滤波器的大小来确定编码长度及编码次数k值;

步骤2-4、将k次哈希操作所映射的通用型布隆滤波器的比特位数值全部置为1,即如果哈希操作映射到通用型布隆滤波器的一个比特位,则该比特位置1,通过k次哈希操作后数据名称被插入到通用型布隆滤波器中;

步骤2-5、计算定位数组的数值:根据数据名称的k次哈希操作在通用型布隆滤波器中的映射值,计算得出定位数组的数值;

步骤2-6、计算该数据名称在字节数组bitmap中的位置:根据步骤2-5中得出的定位数组的数值计算该数据名称在字节数组bitmap中的第几部分的第几槽;

步骤2-7、为该数据名称分配地址偏移量:根据步骤2-6得到的该数据名称插入到所在部分的顺序为该数据名称标序号,该序号即为该数据名称在存储器中的地址偏移量,并将该地址偏移量存储在该数据名称所在的字节数组bitmap的槽内;至此,完成了一个数据名称的插入操作;

步骤三、数据检索,对一个数据名称检索的步骤如下:

步骤3-1、定位数组初始化:将定位数组中的所有比特位初始化为0;

步骤3-2、输入数据名称:将数据名称输入到上述的基于位图的mbf数据索引结构中;

步骤3-3、对该输入的数据名称进行k次哈希编码:采用cityhash256,并取步骤2-3确定的编码长度及编码次数k值对该数据名称进行k次哈希编码;

步骤3-4、判断k次哈希操作所映射的通用型布隆滤波器的比特位数值是否全为1:若映射值全为1,则该输入的数据名称存在于基于位图的mbf数据索引结构中,并继续执行步骤3-5,完成检索;否则,该输入的数据名称不存在于该基于位图的mbf数据索引结构中,终止检索;

步骤3-5、计算定位数组的数值:根据该输入的数据名称的k次哈希操作在通用型布隆滤波器中的映射值,计算得到定位数组的数值;

步骤3-6、计算该输入的数据名称在字节数组bitmap中的位置:根据定位数组的数值计算该输入的数据名称在字节数组bitmap中的具体位置,即在字节数组bitmap中的第几部分的第几个槽;

步骤3-7、输出检索结果:读取与该输入的数据名称所对应的字节数组bitmap中具体位置所存储的地址偏移量,该地址偏移量即为检索结果。

与现有技术相比,本发明的有益效果是:

本发明中设计的一种数据索引结构主要是针对命名数据网转发平面特点所设计的一种新型的数据索引结构,该结构可以利用一个哈希函数得到k次哈希映射值,因此利用该结构可以实现数据的快速插入及检索操作,能够满足百万级别数据处理速度的需求。

附图说明

图1为本发明数据快速检索方法中关于b-mbf数据索引结构的原理图;

图2为本发明数据快速检索方法中关于b-mbf数据插入操作的流程框图;

图3为本发明数据快速检索方法中关于b-mbf数据检索操作的流程框图。

具体实施方式

下面结合附图和具体实施例对本发明技术方案作进一步详细描述,所描述的具体实施例仅对本发明进行解释说明,并不用以限制本发明。

本发明提出的一种基于位图的mbf数据索引结构对数据快速检索的方法,包括:基于位图的mbf(b-mbf)数据索引结构的设计、在所述b-mbf数据索引结构中插入数据、对插入数据之后的b-mbf数据索引结构进行数据检索;具体步骤如下:

步骤一、b-mbf数据索引结构的设计,如图1所示,b-mbf数据索引结构包括一个可定位型布隆滤波器(mappingbloomfilter,mbf)和一个字节数组bitmap(位图),其中,所述mbf由一个通用型布隆滤波器(bloomfilter,bf)和一个定位数组(mappingarray,ma)组成;其中,所述bf用于判断要检索的数据名称是否在所述插入数据之后的b-mbf数据索引结构中;所述ma是与所述bf具有映射关系的比特数组,用于判断要检索的数据名称在字节数组bitmap中的位置;所述字节数组bitmap用于存储要检索的数据名称所对应的地址偏移量。

步骤二、在步骤一所设计的b-mbf数据索引结构中插入数据名称,每插入一个数据名称的过程如图2所示,包括:

ma定位数组初始化:数据插入前,将ma定位数组中的所有比特位初始化为0;

输入数据名称:将数据名称输入到上述的b-mbf数据索引结构中;

对该数据名称进行k次哈希编码:所述哈希函数可以选用cityhash256,同时,可以根据bf的具体大小来调整并确定编码长度及编码次数k值;

将k次哈希操作所映射的bf的比特位数值全部置为1:即如果哈希操作映射到bf的一个比特位,则该比特位置1,通过k次哈希操作后数据名称被插入到bf中;

计算ma定位数组的数值及计算该数据名称在字节数组bitmap中的位置:根据该数据名称的k次哈希操作在bf中的映射值,计算得出ma定位数组的数值;然后,根据上述的ma定位数组的数值计算该数据名称在字节数组bitmap中的第几部分的第几槽内。

本发明中,为了实现由bf至ma的映射操作以计算ma定位数组的数值,首先将bf平均分为j个大小相同的部分,同时ma定位数组的大小设置为j比特。bf的每一个部分依次对应ma定位数组的一个比特位。当进行数据名称插入时,若bf中的第i(i=1,2,…,j-1,j)个部分存在哈希映射,则相应ma定位数组的第i个比特位的值将设置为1,否则该比特位的值为0。经过数据名称的k次哈希映射,最终得出j比特ma定位数组的数值。为了实现由ma定位数值计算该数据名称在bitmap的位置,首先将bitmap的槽个数与ma定位数组的大小设置成指数关系,即bitmap的槽个数为2j,并平均分为n部分。然后根据该ma定位数组的数值可以计算出该数据名称在bitmap中的第m(m=1,2,…,n-1,n)部分,以及该部分的具体槽位置。

为该数据名称分配地址偏移量:根据上述操作得到的该数据名称插入到所在部分的顺序为该数据名称标序号,该序号即为该数据名称在存储器中的地址偏移量,并将该地址偏移量存储在该数据名称所在的字节数组bitmap的槽内;至此,完成了一个数据名称的插入操作。

步骤三、数据检索,对一个数据名称检索过程如图3所示,步骤如下:

步骤3-1、ma定位数组初始化:数据检索前,将ma定位数组中的所有比特位初始化为0;

步骤3-2、输入数据名称:将数据名称输入到上述的b-mbf数据索引结构中;

步骤3-3、对该输入的数据名称进行k次哈希编码:使用的哈希函数和上述数据插入时的相同,即采用cityhash256,并取上述数据插入时确定的编码长度及编码次数k值对该数据名称进行k次哈希编码;

步骤3-4、判断k次哈希操作所映射的bf的比特位数值是否全为1:若映射值全为1,则该输入的数据名称存在于b-mbf数据索引结构中,并继续执行步骤3-5,完成检索;否则,该输入的数据名称不存在于该b-mbf数据索引结构中,即表明不存在检索结果,终止检索过程;

步骤3-5、计算ma定位数组的数值:根据该输入的数据名称的k次哈希操作在bf中的映射值,计算得到ma定位数组的数值;

步骤3-6、计算该输入的数据名称在字节数组bitmap中的位置:根据ma定位数组的数值计算该输入的数据名称在字节数组bitmap中的具体位置,即在字节数组bitmap中的第几部分的第几个槽;

步骤3-7、输出检索结果:读取与该输入的数据名称所对应的字节数组bitmap中具体位置所存储的地址偏移量,该地址偏移量即为检索结果。

实施例1:本发明中,数据插入的一个实例如图1所示,在该b-mbf数据索引结构中,使用k=2个哈希函数,bf的大小被设置为16比特,同时bf被等分为4份。与之相对应的ma定位数组被设置为4比特,字节数组bitmap的槽个数设置为16,并平均分为2部分。在这个数据索引结构中,三个数据名称o、p、q被依次输入,每次数据名称输入前,ma定位数组的所有比特位被初始化为0。当数据名称o输入时,bf中的5和9比特位被哈希函数映射,也就是说bf的第2和第3部分存在哈希映射,因此ma定位数组的第2、3比特位的数值被设定为1,其他比特位的数值为0,则得到ma定位数组的数值为0110。然后根据该ma定位数组的数值计算出数据名称o在字节数组bitmap的位置为第1部分的第6个槽。因为数据名称o为该部分的第一个元素,则在第6个槽内记录序号为1,即地址偏移量。同理,数据名称p和q的ma定位数组的数值分别为:0011和1010,所对应的字节数组bitmap中的位置为第1部分的第3个槽和第2部分的第2个槽,则分配的地址偏移量分别为2和1。

实施例2:通过使用c++语言,将本发明中的b-mbf数据索引结构设计在一台配置为intelcorei3-32203.30ghz、ddr34gbsdram的pc机上进行了软件测试部署。考虑到实际的转发平面需要处理百万级别的数据,来自alexa和dmoz的两百万条数据名称被输入至该b-mbf数据索引结构中。实验结果表明,该b-mbf数据索引结构可以实现1.495mpps(millionpacketpersecond,每秒百万数据包)的检索速度,并能满足当前互联网络错误率低于1%的通信需求。由此表明,本发明中设计的b-mbf数据索引结构能够实现高效的数据插入及检索操作,具有良好的数据索引性能。

尽管上面结合附图对本发明进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨的情况下,还可以做出很多变形,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1