一种自修复的计数式摘要方法技术

技术编号:25042206 阅读:17 留言:0更新日期:2020-07-29 05:32
本发明专利技术公开一种自修复的计数式摘要方法,包括以下步骤:构建自修复的计数式摘要结构;执行键值对插入操作:将一个键值对掺入到所述计数式摘要结构中;执行键值对删除操作:利用所述键校验域信息计算一个键对应的桶的集合,仅保留一个桶的值并从其他桶中删除该键值对;执行键值对解码操作:从所述计数式摘要结构中发现并修复多个键值对共用的桶;执行键值对查询操作:查询一个键值对是否记录到所述计数式摘要结构中。本发明专利技术通过引入修复操作到计数式摘要数据结构,能有效降低甚至消除原有的查询误差,提升计数式摘要的信息记录精度和查询的有效性,并且保持常数级的插入和查询操作,确保判断的准确性。

【技术实现步骤摘要】
一种自修复的计数式摘要方法
本专利技术涉及网络通信
,具体是一种自修复的计数式摘要方法。
技术介绍
计数式摘要(count-sketch)是数据管理领域常用的精简数据结构。记录数据流的键-值(key-value)对,具有广泛的抽象表示能力,得到了广泛的应用。常见的计数式摘要由一组数组构成,每个数组包含相同数目的桶(“桶”为逻辑概念,用于指代数组的一个位置),每个桶用于记录插入到该位置的键对应的值。当需要插入一个键值对(key,value)时,首先通过哈希函数从每个数组中均匀随机选择一个桶,然后通过哈希函数选择+1或者-1对值进行加权,最后将值插入到选中的桶中。在查询一个键对应的值时,首先利用相同的哈希函数从每个数组计算桶的位置,其次读取每个桶的值,最终选取所有桶值的加权中间值作为该键对应的值返回。计数式摘要具有常数时间的维护和查询开销。计数式摘要具有查询误差,如果多个键插入到相同的桶中,那么这个桶记录各个键对应值的加权代数和,并不严格对应一个键的原始值。查询误差严重降低了计数式摘要的查询有效性,应用查询结果可能造成偏差,造成判断错误。因此,有必要设计一种自修复的计数式摘要方法。
技术实现思路
本专利技术针对现有的计数式摘要存在查询误差的不足,提出一种自修复的计数式摘要方法,实现查询误差的降低甚至消除的目的。为了解决上述技术问题,本专利技术是通过以下技术方案实现的:一种自修复的计数式摘要方法,包括以下步骤,S1,构建自修复的计数式摘要结构:对现有的计数式摘要中的桶增加键校验域;S2,执行键值对插入操作:将一个键值对掺入到所述计数式摘要结构中,并在校验域记录插入到桶中的键校验域;S3,执行键值对删除操作:利用所述键校验域信息计算一个键对应的桶的集合,仅保留一个桶的值并从其他桶中删除该键值对;S4,执行键值对解码操作:从所述计数式摘要结构中发现并修复多个键值对共用的桶;S5,执行键值对查询操作:查询一个键值对是否记录到所述计数式摘要结构中。进一步的,步骤S1中,每个所述计数式摘要结构包括K个数组,每个所述数组包括m个桶,其中参数K和m是系统预先设置的参数,每个所述桶至少包括键校验域KEYSUM,值域VALSUM。进一步的,步骤S2之前,还需要预先选择K个哈希函数作为哈希函数族,用于所述键值对的插入、解码以及查询过程。进一步的,所述步骤S2包括:S21,利用所述哈希函数族计算键key在K个数组中对应的位置,记为{hi(key),i∈[1,k]};S22,对于第i个数组,选择第hi(key)个桶,利用哈希函数族计算键key的加权值,记为ri(key),i∈[1,k];S23,记录键值对(key,value):(231)(232)VALSUM=VALSUM+ri(key)×value;其中,(231)表示合并键的信息,(232)表示合并值的信息。进一步的,执行步骤S2的同时维护一个缓冲stash,记录C个键值对,用于初始化解码过程。进一步的,所述步骤S3包括:S31,利用所述哈希函数族计算键在K个数组中对应的位置,记为{hi(key),i∈[1,k]};S32,对于第i个数组,选择第hi(key)个桶,利用哈希函数族计算键的加权值,记为ri(key),i∈[1,k];S33,记录键值对(key,value):(331)(332)VALSUM=VALSUM-ri(key)×value;其中,(331)表示合并键的信息,(332)表示合并值的信息。进一步的,所述步骤S4包括:S41,初始化一个空的结果缓存集合RepairCache;S42,遍历K个数组的每一个桶,如果第i个数组的第j(j∈[1,m])个桶满足:hi(KEYSUM)=j;那么将该桶的位置和结果记录到结果缓存集合RepairCache=RepairCache∪((i,j):(KEYSUM,ri(KEYSUM)×VALSUM))如果集合RepairCache为空,则结束;否则转入S43;S43,如果集合RepairCache非空,对于集合RepairCache中的每个元素,假设主键为(i,j),读取RepairCache主键为(i,j)的元素KEYSUM域和VALSUM域,计算键KEYSUM域在所有数组的位置:{hi(KEYSUM),i∈[1,k]};对每个桶bucket(i,j)进行更新:(431)(432)S44,返回步骤3。进一步的,所述步骤S5包括:对于待查询的键key,首先查询缓冲stash和结果缓存集合RepairCache,若两个集合的某个记录的键和待查询的键相同,即返回记录的值作为结果,结束查询;若两个集合的某个记录的键和待查询的键不同,则查询数组,利用哈希函数族计算键key在K个数组中对应的位置,记为{hi(key),i∈[1,k]},接着计算对应位置的桶的加权VALSUM的中间值,即median{bucket(i,hi(key)).VALSUM×ri(key)},作为对应的近似值,结束查询。本专利技术还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:构建自修复的计数式摘要结构:对现有的计数式摘要中的桶增加键校验域;执行键值对插入操作:将一个键值对掺入到所述计数式摘要结构中,并在校验域记录插入到桶中的键校验域;执行键值对删除操作:利用所述键校验域信息计算一个键对应的桶的集合,仅保留一个桶的值并从其他桶中删除该键值对;执行键值对解码操作:从所述计数式摘要结构中发现并修复多个键值对共用的桶;执行键值对查询操作:查询一个键值对是否记录到所述计数式摘要结构中。本专利技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:构建自修复的计数式摘要结构:对现有的计数式摘要中的桶增加键校验域;执行键值对插入操作:将一个键值对掺入到所述计数式摘要结构中,并在校验域记录插入到桶中的键校验域;执行键值对删除操作:利用所述键校验域信息计算一个键对应的桶的集合,仅保留一个桶的值并从其他桶中删除该键值对;执行键值对解码操作:从所述计数式摘要结构中发现并修复多个键值对共用的桶;执行键值对查询操作:查询一个键值对是否记录到所述计数式摘要结构中。与现有技术相比,本专利技术的有益之处是:本专利技术提供的自修复的计数式摘要方法通过引入修复操作到计数式摘要数据结构,能有效降低甚至消除原有的查询误差,提升计数式摘要的信息记录精度和查询的有效性,并且保持常数级的插入和查询操作,确保判断的准确性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需本文档来自技高网...

【技术保护点】
1.一种自修复的计数式摘要方法,其特征在于,包括以下步骤,/nS1,构建自修复的计数式摘要结构:对计数式摘要中的桶增加键校验域;/nS2,执行键值对插入操作:将一个键值对掺入到所述计数式摘要结构中,并在校验域记录插入到桶中的键校验域;/nS3,执行键值对删除操作:利用所述键校验域信息计算一个键对应的桶的集合,仅保留一个桶的值并从其他桶中删除该键值对;/nS4,执行键值对解码操作:从所述计数式摘要结构中发现并修复多个键值对共用的桶;/nS5,执行键值对查询操作:查询一个键值对是否记录到所述计数式摘要结构中。/n

【技术特征摘要】
1.一种自修复的计数式摘要方法,其特征在于,包括以下步骤,
S1,构建自修复的计数式摘要结构:对计数式摘要中的桶增加键校验域;
S2,执行键值对插入操作:将一个键值对掺入到所述计数式摘要结构中,并在校验域记录插入到桶中的键校验域;
S3,执行键值对删除操作:利用所述键校验域信息计算一个键对应的桶的集合,仅保留一个桶的值并从其他桶中删除该键值对;
S4,执行键值对解码操作:从所述计数式摘要结构中发现并修复多个键值对共用的桶;
S5,执行键值对查询操作:查询一个键值对是否记录到所述计数式摘要结构中。


2.根据权利要求1所述的一种自修复的计数式摘要方法,其特征在于,步骤S1中,每个所述计数式摘要结构包括K个数组,每个所述数组包括m个桶,其中参数K和m是系统预先设置的参数,每个所述桶至少包括键校验域KEYSUM,值域VALSUM。


3.根据权利要求1所述的一种自修复的计数式摘要方法,其特征在于,步骤S2之前,还需要预先选择K个哈希函数作为哈希函数族,用于所述键值对的插入、解码以及查询过程。


4.根据权利要求3所述的一种自修复的计数式摘要方法,其特征在于,所述步骤S2包括:
S21,利用所述哈希函数族计算键key在K个数组中对应的位置,记为{hi(key),i∈[1,k]};
S22,对于第i个数组,选择第hi(key)个桶,利用哈希函数族计算键key的加权值,记为ri(key),i∈[1,k];
S23,记录键值对(key,value):
(231)
(232)VALSUM=VALSUM+ri(key)×value;
其中,(231)表示合并键的信息,(232)表示合并值的信息。


5.根据权利要求4所述的一种自修复的计数式摘要方法,其特征在于,执行步骤S2的同时维护一个缓冲stash,记录C个键值对,用于初始化解码过程。


6.根据权利要求5所述的一种自修复的计数式摘要方法,其特征在于,所述步骤S3包括:
S31,利用所述哈希函数族计算键在K个数组中对应的位置,记为{hi(key),i∈[1,k]};
S32,对于第i个数组,选择第hi(key)个桶,利用哈希函数族计算键的加权值,记为ri(key),i∈[1,k];
...

【专利技术属性】
技术研发人员:符永铨沈思淇王庆林黄春苏华友李荣春姜晶菲李东升窦勇
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

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

1