CN109542939A - 一种基于纠删码的count-min摘要方法及装置 - Google Patents
一种基于纠删码的count-min摘要方法及装置 Download PDFInfo
- Publication number
- CN109542939A CN109542939A CN201811389708.5A CN201811389708A CN109542939A CN 109542939 A CN109542939 A CN 109542939A CN 201811389708 A CN201811389708 A CN 201811389708A CN 109542939 A CN109542939 A CN 109542939A
- Authority
- CN
- China
- Prior art keywords
- key
- bucket
- count
- abstract
- correcting
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提出了一种基于纠删码的count‑min摘要方法,包括:构建基于纠删码的count‑min摘要结构;执行插入操作,以将待插入键和所述待插入键对应的值插入到所述count‑min摘要结构的桶中得到初始count‑min摘要;执行解码操作,以搜索并修复所述初始count‑min摘要中被多个所述待插入键共用的所述桶得到目标count‑min摘要;以及执行查询操作,以获取待查询键在所述目标count‑min摘要中对应的值。本发明实施例还提出了一种基于纠删码的count‑min摘要装置。本发明实施例可以消除或降低查询误差。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种基于纠删码的count-min摘要方法及装置。
背景技术
count-min摘要是数据管理和计算机网络等领域常用的精简数据结构。它用于记录一组键-值(key-value)对集合的元素,具有常数时间的维护和查询开销。由于键值对集合具有广泛的抽象表示能力,count-min摘要得到了广泛的应用。例如,在软件定义网络的路由器和交换机中采用count-min摘要记录网络流的大小;在数据流管理系统中,count-min摘要用于记录数据流的出现频率。
常见的count-min摘要由一组比特数组构成,每个比特数组包含相同数目的“桶”(“桶”为逻辑概念,用于指代比特数组的一个位置),每个“桶”用于记录插入到该位置的键对应的值。当需要插入一个键值对时,首先通过哈希函数从每个比特数组中均匀随机选择一个“桶”,然后将对应的值插入到选中的“桶”中。在查询一个键对应的值时,首先利用相同的哈希函数从每个比特数组计算“桶”的位置,其次读取每个“桶”的值,最终选取所有“桶”值的最小结果作为该键对应的值返回。可以看出,如果多个键插入到相同的“桶”中,那么这个“桶”记录各个键对应值的代数和,并不严格对应一个键的原始值。因此,已有的count-min摘要具有查询误差,并且查询误差取决于共同位置键的值的分布情况,事先难以界定查询误差。
因此,急需提出一种count-min摘要方法及装置,以解决已有的count-min摘要所存在的以上不足。
发明内容
本发明实施例所要解决的技术问题是:针对现有的count-min摘要存在查询误差的不足,提出一种基于纠删码的count-min摘要方法及一种基于纠删码的count-min摘要装置,实现查询误差的消除或降低的目的。
一方面,本发明实施例提供了一种基于纠删码的count-min摘要方法,包括:构建基于纠删码的count-min摘要结构;执行插入操作,以将待插入键和所述待插入键对应的值插入到所述count-min摘要结构的桶中得到初始count-min摘要;执行解码操作,以搜索并修复所述初始count-min摘要中被多个所述待插入键共用的所述桶得到目标count-min摘要;以及执行查询操作,以获取待查询键在所述目标count-min摘要中对应的值。
在本发明其中一个实施例中,所述基于纠删码的count-min摘要结构包括多个比特数组,每个所述比特数组包括多个所述桶,每个所述桶包括键纠删码域、值域和计数器,其中,每个所述桶的所述键纠删码域用于合并插入到所述桶中的所述待插入键的信息,每个所述桶的所述值域用于合并插入到所述桶中的所述待插入键对应的值的信息,每个所述桶的所述计数器用于统计插入到所述桶中的所述待插入键的数目。
在本发明其中一个实施例中,每个所述桶的所述键纠删码域用于记录插入到所述桶中的所述待插入键的异或结果,每个所述桶的所述值域用于记录插入到所述桶中的所述待插入键对应的值的累加结果,每个所述桶的所述计数器用于记录插入到所述桶中的所述待插入键的数目。
在本发明其中一个实施例中,所述基于纠删码的count-min摘要方法还包括步骤:选择多个哈希函数,以用于所述插入操作、所述解码操作和所述查询操作,其中,所述哈希函数的数目与所述比特数组的数目相等。
在本发明其中一个实施例中,所述插入操作包括:利用所述哈希函数计算所述待插入键在所述多个比特数组中分别对应的桶;利用所述待插入键在所述多个比特数组中分别对应的所述桶记录所述待插入键及所述待插入键对应的值。
在本发明其中一个实施例中,所述解码操作包括:利用所述键纠删码域计算一个所述待插入键对应的所有所述桶;仅保留所述一个所述待插入键对应的所有所述桶中的一个所述桶中的所述一个所述待插入键和所述一个所述待插入键对应的值、并删除所述一个所述待插入键对应的所有所述桶中的除所述一个所述桶之外的剩余的所述桶中的所述一个所述待插入键和所述一个所述待插入键对应的值。
在本发明其中一个实施例中,所述查询操作包括:利用所述哈希函数计算所述待查询键在所述多个比特数组中分别对应的所述桶;将所述待查询键在所述多个比特数组中分别对应的所述桶的所述值域的最小值作为所述待查询键的值。
另一方面,本发明实施例提供了一种基于纠删码的count-min摘要装置,包括:摘要结构构建模块,用于构建基于纠删码的count-min摘要结构;插入操作模块,用于执行插入操作以将待插入键和所述待插入键对应的值插入到所述count-min摘要结构的桶中得到初始count-min摘要;解码操作模块,用于执行解码操作以搜索并修复所述初始count-min摘要中被多个所述待插入键共用的所述桶得到目标count-min摘要;以及查询操作模块,用于执行查询操作以获取待查询键在所述目标count-min摘要中对应的值。
本发明通过上述实施例可以具备如下有益效果:通过构建基于纠删码的count-min摘要结构;以及通过对得到的初始count-min摘要增加解码操作,以搜索并修复所述初始count-min摘要中被多个所述待插入键共用的所述桶得到目标count-min摘要,再对目标count-min摘要执行查询操作,从而可以达到消除或者降低多个键值对共用相同的“桶”造成的查询误差。
附图说明
图1是本发明实施例提供的基于纠删码的count-min摘要方法的总体流程示意图。
图2是本发明实施例提供的基于纠删码的count-min摘要装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参照图1,其为本发明实施例提供的一种基于纠删码的count-min摘要方法的总体流程示意图。具体流程如下:
第一步,构建基于纠删码的count-min摘要结构。
第二步,执行插入操作。
第三步,执行解码操作。
第四步,执行查询操作。
下面详细介绍本发明实施例的具体的技术方案如下:
第一步,构建基于纠删码的count-min摘要结构(简称为ECM)。一个ECM包括k个比特数组。每个比特数组包括m个“桶”(参数k和m是系统预先设置的参数,比特数组的大小m越大,或比特数组的数目k越大,需要的存储空间越大,能记录的键值对越多),每个“桶”由键纠删码域(记为keyErasureField),值域(记为valueSum),计数器(记为counter)构成。ECM支持插入(将一个键值对插入到ECM中)、解码(从ECM中发现并修复多个键值对共用的“桶”)、查询(查询一个键值对是否记录到ECM中)操作。此外,预先选择k个哈希函数作为哈希函数族,用于键值对的插入、解码、查询操作过程。
第二步,执行插入操作。在插入一个键值对(key,value)时,首先利用哈希函数族,计算键key在k个比特数组中对应的位置,记为{hi(key),i∈[1,k]}。对于第i个比特数组,选择第hi(key)个“桶”,记录键值对(key,value):
(2.1)
(2.2)valueSum=valueSum+value;
(2.3)counter=counter+1。
其中,(2.1)用于合并键的信息,(2.2)用于合并值的信息,(2.3)用于统计插入键的数目。
第三步,执行解码操作。解码操作在插入操作完成,查询操作之前执行,用于发现并修复多个键共用相同的桶的情况。初始化一个空的集合pureBucketIndex和一个结果缓存集合PureCache。
具体步骤如下:
(3.1)顺序遍历k个比特数组的每一个“桶”,如果第i个比特数组的第j(j∈[1,m])个“桶”满足(a)counter=1且(b)hi(keyErasureField)=j,那么将该“桶”的位置记录到集合pureBucketIndex中,即pureBucketIndex=pureBucketIndex∪(i,j),并记入结果缓存集合PureCache=PureCache x∪(keyErasureField,valueSum)。如果集合pureBucketIndex为空,转入(3.4),否则转入(3.2)步骤。
(3.2)如果集合pureBucketIndex非空,对于集合pureBucketIndex中的每个元素(i0,j0),假设为(i,j),读取第i0个比特数组的第j0个位置对应的“桶”的keyErasureField域和valueSum域,计算键keyErasureField域在除i0外的所有比特数组中的位置:{hi(keyErasureField),i∈[1,k]},对除位置(i0,j0)外的每个“桶”bucket(i,j)进行更新:
(3.2.1)
(3.2.2)bucket(i,j).valueSum=bucket(i,j).valueSum-valueSum;
(3.2.3)bucket(i,j).counter=bucket(i,j).counter-1。
(3.3)返回(3.1)步骤。
(3.4)结束。
第四步,执行查询操作。对于待查询的键key,首先查询结果缓存集合PureCache,若PureCache的某个记录(keyErasureField,valueSum)的keyErasureField域和待查询键相同,即返回valueSum作为对应的值,结束查询。否则查询ECM的数组,先利用哈希函数族计算键key在k个数组中对应的位置,记为{hi(key),i∈[1,k]},接着计算对应位置的“桶”的valueSum最小值,即min{bucket(i,hi(key)).valueSum},作为valueSum对应的近似值,结束查询。
综上所述,本发明实施例的基于纠删码的count-min摘要方法的优点在于:通过引入键纠删码域到count-min摘要数据结构中,能在保持常数级的插入和查询操作开销的同时,有效降低原有的count-min摘要的查询误差,提升count-min摘要的信息记录精度。
同时,如图2所示,其为本发明实施例提供的基于纠删码的count-min摘要装置10的结构示意图。基于纠删码的count-min摘要装置10例如用于执行如前所述的基于纠删码的count-min摘要方法,具体实现细节可参考前述内容的描述,在此不再赘述。下面仅做简要介绍。
基于纠删码的count-min摘要装置10包括:摘要结构构建模块11、插入操作模块13、解码操作模块15和查询操作模块17。
其中,摘要结构构建模块11用于构建基于纠删码的count-min摘要结构。也即用于执行如前述基于纠删码的count-min摘要方法的第一步。
插入操作模块13用于执行插入操作以将待插入键和所述待插入键对应的值插入到所述count-min摘要结构的桶中得到初始count-min摘要。也即用于执行如前述基于纠删码的count-min摘要方法的第二步。
解码操作模块15用于执行解码操作以搜索并修复所述初始count-min摘要中被多个所述待插入键共用的所述桶得到目标count-min摘要。也即用于执行如前述基于纠删码的count-min摘要方法的第三步。
查询操作模块17用于执行查询操作以获取待查询键在所述目标count-min摘要中对应的值。也即用于执行如前述基于纠删码的count-min摘要方法的第四步。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种基于纠删码的count-min摘要方法,其特征在于,包括:
构建基于纠删码的count-min摘要结构;
执行插入操作,以将待插入键和所述待插入键对应的值插入到所述count-min摘要结构的桶中得到初始count-min摘要;
执行解码操作,以搜索并修复所述初始count-min摘要中被多个所述待插入键共用的所述桶得到目标count-min摘要;以及
执行查询操作,以获取待查询键在所述目标count-min摘要中对应的值。
2.如权利要求1所述的基于纠删码的count-min摘要方法,其特征在于,所述基于纠删码的count-min摘要结构包括多个比特数组,每个所述比特数组包括多个所述桶,每个所述桶包括键纠删码域、值域和计数器,其中,每个所述桶的所述键纠删码域用于合并插入到所述桶中的所述待插入键的信息,每个所述桶的所述值域用于合并插入到所述桶中的所述待插入键对应的值的信息,每个所述桶的所述计数器用于统计插入到所述桶中的所述待插入键的数目。
3.如权利要求2所述的基于纠删码的count-min摘要方法,其特征在于,每个所述桶的所述键纠删码域用于记录插入到所述桶中的所述待插入键的异或结果,每个所述桶的所述值域用于记录插入到所述桶中的所述待插入键对应的值的累加结果,每个所述桶的所述计数器用于记录插入到所述桶中的所述待插入键的数目。
4.如权利要求2所述的基于纠删码的count-min摘要方法,其特征在于,还包括步骤:选择多个哈希函数,以用于所述插入操作、所述解码操作和所述查询操作,其中,所述哈希函数的数目与所述比特数组的数目相等。
5.如权利要求4所述的基于纠删码的count-min摘要方法,其特征在于,所述插入操作包括:
利用所述哈希函数计算所述待插入键在所述多个比特数组中分别对应的桶;
利用所述待插入键在所述多个比特数组中分别对应的所述桶记录所述待插入键及所述待插入键对应的值。
6.如权利要求3所述的基于纠删码的count-min摘要方法,其特征在于,所述解码操作包括:
利用所述键纠删码域计算一个所述待插入键对应的所有所述桶;
仅保留所述一个所述待插入键对应的所有所述桶中的一个所述桶中的所述一个所述待插入键和所述一个所述待插入键对应的值、并删除所述一个所述待插入键对应的所有所述桶中的除所述一个所述桶之外的剩余的所述桶中的所述一个所述待插入键和所述一个所述待插入键对应的值。
7.如权利要求4所述的基于纠删码的count-min摘要方法,其特征在于,所述查询操作包括:
利用所述哈希函数计算所述待查询键在所述多个比特数组中分别对应的所述桶;
将所述待查询键在所述多个比特数组中分别对应的所述桶的所述值域的最小值作为所述待查询键的值。
8.一种基于纠删码的count-min摘要装置,其特征在于,包括:
摘要结构构建模块,用于构建基于纠删码的count-min摘要结构;
插入操作模块,用于执行插入操作以将待插入键和所述待插入键对应的值插入到所述count-min摘要结构的桶中得到初始count-min摘要;
解码操作模块,用于执行解码操作以搜索并修复所述初始count-min摘要中被多个所述待插入键共用的所述桶得到目标count-min摘要;以及
查询操作模块,用于执行查询操作以获取待查询键在所述目标count-min摘要中对应的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811389708.5A CN109542939B (zh) | 2018-11-21 | 2018-11-21 | 一种基于纠删码的count-min摘要方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811389708.5A CN109542939B (zh) | 2018-11-21 | 2018-11-21 | 一种基于纠删码的count-min摘要方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542939A true CN109542939A (zh) | 2019-03-29 |
CN109542939B CN109542939B (zh) | 2020-09-01 |
Family
ID=65848684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811389708.5A Active CN109542939B (zh) | 2018-11-21 | 2018-11-21 | 一种基于纠删码的count-min摘要方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542939B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460230A (zh) * | 2020-03-25 | 2020-07-28 | 中国人民解放军国防科技大学 | 一种自修复的计数式摘要方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103561057A (zh) * | 2013-10-15 | 2014-02-05 | 深圳清华大学研究院 | 基于分布式哈希表和纠删码的数据存储方法 |
CN103729151A (zh) * | 2014-01-16 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种基于改进型纠删码的失效数据修复方法 |
WO2014089786A1 (zh) * | 2012-12-12 | 2014-06-19 | 华为技术有限公司 | 数据存储方法及系统 |
CN104657450A (zh) * | 2015-02-05 | 2015-05-27 | 中国科学院信息工程研究所 | 面向大数据环境的概要信息动态构建与查询方法及装置 |
CN104866430A (zh) * | 2015-04-30 | 2015-08-26 | 上海交通大学 | 结合主从备份和纠删码的内存计算系统高可用优化方法 |
CN105574076A (zh) * | 2015-11-27 | 2016-05-11 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
CN105677508A (zh) * | 2015-12-16 | 2016-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种云存储中纠删码数据的修改方法及系统 |
CN106662983A (zh) * | 2015-12-31 | 2017-05-10 | 华为技术有限公司 | 分布式存储系统中的数据重建的方法、装置和系统 |
-
2018
- 2018-11-21 CN CN201811389708.5A patent/CN109542939B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014089786A1 (zh) * | 2012-12-12 | 2014-06-19 | 华为技术有限公司 | 数据存储方法及系统 |
CN103561057A (zh) * | 2013-10-15 | 2014-02-05 | 深圳清华大学研究院 | 基于分布式哈希表和纠删码的数据存储方法 |
CN103729151A (zh) * | 2014-01-16 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种基于改进型纠删码的失效数据修复方法 |
CN104657450A (zh) * | 2015-02-05 | 2015-05-27 | 中国科学院信息工程研究所 | 面向大数据环境的概要信息动态构建与查询方法及装置 |
CN104866430A (zh) * | 2015-04-30 | 2015-08-26 | 上海交通大学 | 结合主从备份和纠删码的内存计算系统高可用优化方法 |
CN105574076A (zh) * | 2015-11-27 | 2016-05-11 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
CN105677508A (zh) * | 2015-12-16 | 2016-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种云存储中纠删码数据的修改方法及系统 |
CN106662983A (zh) * | 2015-12-31 | 2017-05-10 | 华为技术有限公司 | 分布式存储系统中的数据重建的方法、装置和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460230A (zh) * | 2020-03-25 | 2020-07-28 | 中国人民解放军国防科技大学 | 一种自修复的计数式摘要方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109542939B (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165224B (zh) | 一种在区块链数据库上针对关键字key的索引方法 | |
CN104156380B (zh) | 一种分布式存储器哈希索引方法及系统 | |
US8103658B2 (en) | Index backbone join | |
US7644079B2 (en) | System and method for temporal data mining | |
CN102110171B (zh) | 基于树形结构的布鲁姆过滤器的查询与更新方法 | |
US20090240655A1 (en) | Bit String Seacrching Apparatus, Searching Method, and Program | |
US20070233720A1 (en) | Lazy bulk insertion method for moving object indexing | |
CN102546299B (zh) | 一种在大流量下进行深度包检测的方法 | |
US20100043057A1 (en) | Method for dynamic secure management of an authenticated relational table in a database | |
CN108287840A (zh) | 一种基于矩阵哈希的数据存储和查询方法 | |
CN111552692A (zh) | 一种加减法布谷鸟过滤器 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
US20010049711A1 (en) | Pipeline processing type shaping apparatus and its method | |
CN109299334A (zh) | 一种知识图谱的数据处理方法及装置 | |
CN101256579A (zh) | 一种数据库范围查询数据组织的方法 | |
CN110532307A (zh) | 一种流滑动窗口的数据存储方法及查询方法 | |
CN106484815B (zh) | 一种基于海量数据类sql检索场景的自动识别优化方法 | |
CN109542939A (zh) | 一种基于纠删码的count-min摘要方法及装置 | |
CN112131228A (zh) | 一种基于fabric的便于数据检索的联盟链系统 | |
CN111694860A (zh) | 安全检测的时序数据实时异常发现方法及电子装置 | |
CN113779286B (zh) | 管理图数据的方法及装置 | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及系统 | |
CN115114289A (zh) | 一种数据查询方法、装置及电子设备 | |
CN108304467A (zh) | 用于文本间匹配的方法 | |
CN111198884A (zh) | 一种车辆初次入城信息处理方法及信息处理系统 |
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 |