CN103259729A - 基于零碰撞散列算法的网络数据精简传输方法 - Google Patents
基于零碰撞散列算法的网络数据精简传输方法 Download PDFInfo
- Publication number
- CN103259729A CN103259729A CN2012105259333A CN201210525933A CN103259729A CN 103259729 A CN103259729 A CN 103259729A CN 2012105259333 A CN2012105259333 A CN 2012105259333A CN 201210525933 A CN201210525933 A CN 201210525933A CN 103259729 A CN103259729 A CN 103259729A
- Authority
- CN
- China
- Prior art keywords
- block
- data block
- data
- md5key
- client
- 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
Images
Abstract
本发明涉及用于局域网或广域网的数据传输领域,具体为一种基于零碰撞散列算法的网络数据精简传输方法。一种基于零碰撞散列算法的网络数据精简传输方法,包括将待传输的数据包分割,其特征是:还包括如下步骤:(1)切分数据包;(2)零碰撞散列操作;(3)匹配数据块;(4)写入存储区;(5)更新缓冲区索引;(6)写入存储区;(7)重复第(2)至第(6)步。本发明数据精简率高,传输速率快,安全性强,适用范围广。
Description
技术领域
本发明涉及用于局域网或广域网的数据传输领域,具体为一种基于零碰撞散列算法的网络数据精简传输方法。
背景技术
一般在网络带宽限制的情况下为了节约带宽流量采用数据压缩和重复数据删除的数据缩减技术。采用数据压缩的方式一般使用ZIP、RAR等数据块压缩算法,在数据块从客户端通过网络传输到服务器端之前进行压缩,以缩短数据块长度,服务器端在收到数据后进行解压恢复原来的数据内容,从而实现节约带宽流量的目的。由于数据块内容重复的可能性很大,而压缩算法无法利用重复的数据块,因此精简效率不高。重复数据删除可以对存储空间数据进行有效的精简,通过删除其中重复的数据,只保留其中一份,从而消除冗余数据。重复数据删除技术多用于数据备份和归档场合,因为对数据进行多次备份后,存在大量的重复数据,非常适合使用这种技术。重复数据删除技术除了可以提高存储空间的利用率,也可以有效的减少网络数据传输。但是,重复数据块的识别技术大都采用数据块指纹(即Finger Printer,简称FP)技术,即通过散列算法计算数据块的散列值,将散列值作为数据块的指纹,常见的有MD5、SHA-1、SHA-256、SHA-512等,从纯数学角度看,如果两个数据块的指纹不同,则这两个数据块必然是不同的;然而,如果两个数据块指纹相同,仍不能断定这两个数据块是完全相同的,这是因为散列函数有可能会产生碰撞。不过,由于碰撞的概率非常小,并且可以通过提高散列位数的方法来进一步缩小碰撞概率,因此在近似条件下,可以认为数据块和指纹之间存在一一映射的关系。为了最大限度降低碰撞的概率,重复数据删除领域常用的Bloom Filter数据结构被设计成采用多种hash映射,希望能既降低冲突率又保证查询效率,但是无法从根本上解决问题,仍然存在一定的误识别率和删除索引困难的缺点,因此重复数据删除技术目前难以被用于关键数据存储场合。
发明内容
为了克服现有技术的缺陷,提供一种数据精简率高、传输速率快、安全性强的网络数据传输方法,本发明公开了一种基于零碰撞散列算法的网络数据精简传输方法。
本发明通过如下技术方案达到发明目的:
一种基于零碰撞散列算法的网络数据精简传输方法,包括将待传输的数据包分割,其特征是:还包括如下步骤:
(1) 在客户端对要传输的数据包实施切分,产生多组数据块,具体切分方法:设定一切分值,设切分值为k0,将数据包从第一个字节起算每k0大小切分成一个数据块,如此对数据包依次切分直至剩下的数据块小于k0,将剩下的数据块作为最后一个数据块,完成切分;如果数据包小于k0,则不予切分而将整个数据包作为一个数据块;
(2) 对一个数据块实施零碰撞散列操作,设计算所得的散列值为md5key,以md5key作为该数据块的指纹;
(3) 根据指纹和指纹所对应的数据块内容在客户端全局缓冲区查找是否存在相同的数据块;
(4) 如果客户端全局缓冲区不存在该数据块,则发送md5key和对应的数据块到服务器,服务器将md5key和数据块写入存储空间,并生成和md5key所对应的数据块标志,设数据块标志为block_id,服务器更新服务器端全局缓冲区索引,同时将block_id返回给客户端;
(5) 客户端收到服务器返回的block_id后,将该数据块更新到客户端缓冲区索引,随后跳至第(7)步;
(6) 如果数据块在客户端索引区找到相同的数据块,则取得该数据块的md5key和block_id,将md5key和block_id发送至服务器,服务器根据服务器端全局索引区找到block_id所对应的数据块,将该数据块写入存储空间;
(7) 对下一个数据块重复上述第(2)至第(6)步,直至数据包的所有数据块都被处理完毕,结束网络数据精简传输。
所述的基于零碰撞散列算法的网络数据精简传输方法,其特征是:第(2)步对一个数据块实施零碰撞散列操作时,零碰撞散列操作采用信息-摘要第5版算法,即Message-Digest Algorithm 5,简称MD5。
所述的基于零碰撞散列算法的网络数据精简传输方法,其特征是:
第(1)步在客户端对要传输的数据包实施切分时,切分值为k0为512KByte;
第(2)步对一个数据块实施零碰撞散列操作时,在客户端全局缓冲区存储该数据块的如下标志:md5key、block_count和block_id,其中,md5key是该数据块的指纹,block_count是和该数据块指纹相同的数据块的数量,block_id是和该数据块指纹相同的各个数据块的逻辑块编号,block_id由服务器全局索引区分配具有唯一性,存储时采用链表的形式,以md5key作为链表内每一条记录的标志,链表内的每条记录包括指纹信息、数量信息和逻辑块编号信息这三部分内容,链表的格式为:
指纹 | 数量 | 逻辑块编号 |
md5key(1) | block_count(1) | block_id(11)|block_id(12)|…|block_id(1x) |
md5key(2) | block_count(2) | block_id(21)|block_id(22)|…|block_id(2y) |
md5key(3) | block_count(3) | block_id(31)|block_id(32)|…|block_id(3z) |
…… | …… | …… |
md5key(n) | block_count(n) | block_id(n1)|block_id(n2)|…|block_id(nm) |
第(3)步根据指纹和指纹所对应的数据块内容在客户端全局缓冲区查找是否存在相同的数据块时,按如下步骤依次进行:
a. 计算待查数据块的散列值,设为md5key,设待查数据块的全局逻辑块号为block_id;
b. 根据md5key在链表中查找是否存在此散列值;
c. 如果不存在此散列值,则将和md5key所对应的block_id插入到链表的一条新记录中,并置block_count为1;
d. 如果存在此散列值,设链表内已有md5key(1),且md5key=md5key(1),则根据md5key(1)所对应的所有的全局逻辑块号值,逐个寻址至各个数据块,将寻址所得数据块逐个地和待查数据块按位逐一比较,如果待查数据块和所有寻址所得数据块都不同,则将待查数据块的block_id补入md5key(1)记录的逻辑块编号信息部分,并将md5key(1)记录数量信息部分的block_count(1)加1;
e. 如果待查数据块和寻址所得数据块中的一个相同,设待查数据块和数据块一相同,则取得数据块一的全局逻辑块号block_id(11),指定待查数据块的全局逻辑块号为block_id(11)。
本发明设计了一种使用零碰撞散列算法实现精简网络传输的方法,既保持了很好的传输精简率,又能确保不存在任何指纹冲突的情况,有效地解决了以往使用的压缩技术和重复数据删除技术的缺陷。可用于高并发的非结构化数据存储引擎中。
本发明的有益效果是:数据精简率高,传输速率快,安全性强,适用范围广。
附图说明
图1是本发明的流程图;
图2是本发明在匹配数据块时的流程图。
具体实施方式
以下通过具体实施例进一步说明本发明。
实施例1
一种基于零碰撞散列算法的网络数据精简传输方法,如图1所示,按如下步骤依次进行:
(1) 在客户端对要传输的数据包实施切分,产生多组数据块,具体切分方法:设定一切分值,设切分值为k0,将数据包从第一个字节起算每k0大小切分成一个数据块,如此对数据包依次切分直至剩下的数据块小于k0,将剩下的数据块作为最后一个数据块,完成切分;如果数据包小于k0,则不予切分而将整个数据包作为一个数据块;本实施例中,k0=512Kbyte;
(2) 对一个数据块实施零碰撞散列操作,设计算所得的散列值为md5key,以md5key作为该数据块的指纹;
(3) 根据指纹和指纹所对应的数据块内容在客户端全局缓冲区查找是否存在相同的数据块;
(4) 如果客户端全局缓冲区不存在该数据块,则发送md5key和对应的数据块到服务器,服务器将md5key和数据块写入存储空间,并生成和md5key所对应的数据块标志,设数据块标志为block_id,服务器更新服务器端全局缓冲区索引,同时将block_id返回给客户端;
(5) 客户端收到服务器返回的block_id后,将该数据块更新到客户端缓冲区索引,随后跳至第(7)步;
(6) 如果数据块在客户端索引区找到相同的数据块,则取得该数据块的md5key和block_id,将md5key和block_id发送至服务器,服务器根据服务器端全局索引区找到block_id所对应的数据块,将该数据块写入存储空间;
(7) 对下一个数据块重复上述第(2)至第(6)步,直至数据包的所有数据块都被处理完毕,结束网络数据精简传输。
本实施例中,第(2)步对一个数据块实施零碰撞散列操作时,零碰撞散列操作采用信息-摘要第5版算法,即Message-Digest Algorithm 5,简称MD5,在客户端全局缓冲区存储该数据块的如下标志:md5key、block_count和block_id,其中,md5key是该数据块的指纹,block_count是和该数据块指纹相同的数据块的数量,block_id是和该数据块指纹相同的各个数据块的逻辑块编号,block_id由服务器全局索引区分配具有唯一性,存储时采用链表的形式,以md5key作为链表内每一条记录的标志,链表内的每条记录包括指纹信息、数量信息和逻辑块编号信息这三部分内容,链表的格式为:
指纹 | 数量 | 逻辑块编号 |
md5key(1) | block_count(1) | block_id(11)|block_id(12)|…|block_id(1x) |
md5key(2) | block_count(2) | block_id(21)|block_id(22)|…|block_id(2y) |
md5key(3) | block_count(3) | block_id(31)|block_id(32)|…|block_id(3z) |
…… | …… | …… |
md5key(n) | block_count(n) | block_id(n1)|block_id(n2)|…|block_id(nm) |
本实施例中,第(3)步根据指纹和指纹所对应的数据块内容在客户端全局缓冲区查找是否存在相同的数据块时,如图2所示,按如下步骤依次进行:
a. 计算待查数据块的散列值,设为md5key,设待查数据块的全局逻辑块号为block_id;
b. 根据md5key在链表中查找是否存在此散列值;
c. 如果不存在此散列值,则将和md5key所对应的block_id插入到链表的一条新记录中,并置block_count为1;
d. 如果存在此散列值,设链表内已有md5key(1),且md5key=md5key(1),则根据md5key(1)所对应的所有的全局逻辑块号值,逐个寻址至各个数据块,将寻址所得数据块逐个地和待查数据块按位逐一比较,如果待查数据块和所有寻址所得数据块都不同,则将待查数据块的block_id补入md5key(1)记录的逻辑块编号信息部分,并将md5key(1)记录数量信息部分的block_count(1)加1;
e. 如果待查数据块和寻址所得数据块中的一个相同,设待查数据块和数据块一相同,则取得数据块一的全局逻辑块号block_id(11),指定待查数据块的全局逻辑块号为block_id(11)。
图1和图2中的hashtable指链表。
Claims (3)
1.一种基于零碰撞散列算法的网络数据精简传输方法,包括将待传输的数据包分割,其特征是:还包括如下步骤:
(1) 在客户端对要传输的数据包实施切分,产生多组数据块,具体切分方法:设定一切分值,设切分值为k0,将数据包从第一个字节起算每k0大小切分成一个数据块,如此对数据包依次切分直至剩下的数据块小于k0,将剩下的数据块作为最后一个数据块,完成切分;如果数据包小于k0,则不予切分而将整个数据包作为一个数据块;
(2) 对一个数据块实施零碰撞散列操作,设计算所得的散列值为md5key,以md5key作为该数据块的指纹;
(3) 根据指纹和指纹所对应的数据块内容在客户端全局缓冲区查找是否存在相同的数据块;
(4) 如果客户端全局缓冲区不存在该数据块,则发送md5key和对应的数据块到服务器,服务器将md5key和数据块写入存储空间,并生成和md5key所对应的数据块标志,设数据块标志为block_id,服务器更新服务器端全局缓冲区索引,同时将block_id返回给客户端;
(5) 客户端收到服务器返回的block_id后,将该数据块更新到客户端缓冲区索引,随后跳至第(7)步;
(6) 如果数据块在客户端索引区找到相同的数据块,则取得该数据块的md5key和block_id,将md5key和block_id发送至服务器,服务器根据服务器端全局索引区找到block_id所对应的数据块,将该数据块写入存储空间;
(7) 对下一个数据块重复上述第(2)至第(6)步,直至数据包的所有数据块都被处理完毕,结束网络数据精简传输。
2.如权利要求1所述的基于零碰撞散列算法的网络数据精简传输方法,其特征是:
第(1)步在客户端对要传输的数据包实施切分时,切分值为k0为512KByte;
第(2)步对一个数据块实施零碰撞散列操作时,零碰撞散列操作采用信息-摘要第5版算法。
3.如权利要求2所述的基于零碰撞散列算法的网络数据精简传输方法,其特征是:
第(2)步对一个数据块实施零碰撞散列操作时,在客户端全局缓冲区存储该数据块的如下标志:md5key、block_count和block_id,其中,md5key是该数据块的指纹,block_count是和该数据块指纹相同的数据块的数量,block_id是和该数据块指纹相同的各个数据块的逻辑块编号,存储时采用链表的形式,以md5key作为链表内每一条记录的标志,链表内的每条记录包括指纹信息、数量信息和逻辑块编号信息这三部分内容,链表的格式为:
第(3)步根据指纹和指纹所对应的数据块内容在客户端全局缓冲区查找是否存在相同的数据块时,按如下步骤依次进行:
a. 计算待查数据块的散列值,设为md5key,设待查数据块的全局逻辑块号为block_id;
b. 根据md5key在链表中查找是否存在此散列值;
c. 如果不存在此散列值,则将和md5key所对应的block_id插入到链表的一条新记录中,并置block_count为1;
d. 如果存在此散列值,设链表内已有md5key(1),且md5key=md5key(1),则根据md5key(1)所对应的所有的全局逻辑块号值,逐个寻址至各个数据块,将寻址所得数据块逐个地和待查数据块按位逐一比较,如果待查数据块和所有寻址所得数据块都不同,则将待查数据块的block_id补入md5key(1)记录的逻辑块编号信息部分,并将md5key(1)记录数量信息部分的block_count(1)加1;
e. 如果待查数据块和寻址所得数据块中的一个相同,设待查数据块和数据块一相同,则取得数据块一的全局逻辑块号block_id(11),指定待查数据块的全局逻辑块号为block_id(11)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210525933.3A CN103259729B (zh) | 2012-12-10 | 2012-12-10 | 基于零碰撞散列算法的网络数据精简传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210525933.3A CN103259729B (zh) | 2012-12-10 | 2012-12-10 | 基于零碰撞散列算法的网络数据精简传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103259729A true CN103259729A (zh) | 2013-08-21 |
CN103259729B CN103259729B (zh) | 2018-03-02 |
Family
ID=48963437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210525933.3A Active CN103259729B (zh) | 2012-12-10 | 2012-12-10 | 基于零碰撞散列算法的网络数据精简传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103259729B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108028841A (zh) * | 2015-09-17 | 2018-05-11 | 三星电子株式会社 | 用于在通信系统中发送和接收数据的方法和装置 |
CN111931000A (zh) * | 2020-08-12 | 2020-11-13 | 武汉兆图科技有限公司 | 一种面向大规模矢量场数据处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989929A (zh) * | 2010-11-17 | 2011-03-23 | 中兴通讯股份有限公司 | 容灾数据备份的方法及系统 |
CN102156727A (zh) * | 2011-04-01 | 2011-08-17 | 华中科技大学 | 一种采用双指纹哈希校验的重复数据删除方法 |
CN102495894A (zh) * | 2011-12-12 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | 重复数据查找方法、装置及系统 |
-
2012
- 2012-12-10 CN CN201210525933.3A patent/CN103259729B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989929A (zh) * | 2010-11-17 | 2011-03-23 | 中兴通讯股份有限公司 | 容灾数据备份的方法及系统 |
CN102156727A (zh) * | 2011-04-01 | 2011-08-17 | 华中科技大学 | 一种采用双指纹哈希校验的重复数据删除方法 |
CN102495894A (zh) * | 2011-12-12 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | 重复数据查找方法、装置及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108028841A (zh) * | 2015-09-17 | 2018-05-11 | 三星电子株式会社 | 用于在通信系统中发送和接收数据的方法和装置 |
CN108028841B (zh) * | 2015-09-17 | 2021-08-27 | 三星电子株式会社 | 用于在通信系统中发送和接收数据的方法和装置 |
CN111931000A (zh) * | 2020-08-12 | 2020-11-13 | 武汉兆图科技有限公司 | 一种面向大规模矢量场数据处理方法 |
CN111931000B (zh) * | 2020-08-12 | 2023-12-19 | 武汉兆图科技有限公司 | 一种面向大规模矢量场数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103259729B (zh) | 2018-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1866776B1 (en) | Method for detecting the presence of subblocks in a reduced-redundancy storage system | |
US8051252B2 (en) | Method and apparatus for detecting the presence of subblocks in a reduced-redundancy storage system | |
CN104932841B (zh) | 一种云存储系统中节约型重复数据删除方法 | |
WO2012065408A1 (zh) | 容灾数据备份的方法及系统 | |
US8543555B2 (en) | Dictionary for data deduplication | |
CN105069111B (zh) | 云存储中基于相似性的数据块级数据去重方法 | |
US20120303595A1 (en) | Data restoration method for data de-duplication | |
CN113535706B (zh) | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
US20120327956A1 (en) | Flow compression across multiple packet flows | |
WO2013086969A1 (zh) | 重复数据查找方法、装置及系统 | |
US20120150824A1 (en) | Processing System of Data De-Duplication | |
CN102467572B (zh) | 支持重复数据删除程序的数据区块查询方法 | |
WO2017020576A1 (zh) | 一种键值存储系统中文件压实的方法和装置 | |
WO2013075668A1 (zh) | 重复数据删除方法和装置 | |
CN102469142A (zh) | 重复数据删除程序的数据传输方法 | |
CN102708148B (zh) | 一种基于多维点阵数据空间模型的去重方法 | |
CN111966654A (zh) | 一种基于Trie字典树的混合过滤器 | |
EP2374080A1 (en) | Efficient full or partial duplicate fork detection and archiving | |
CN106990914B (zh) | 数据删除方法及装置 | |
CN101800761A (zh) | 一种基于网络字典的无损数据压缩方法 | |
CN103259729A (zh) | 基于零碰撞散列算法的网络数据精简传输方法 | |
WO2015061995A1 (zh) | 数据处理方法、装置及重删处理器 | |
CN112162973A (zh) | 指纹碰撞规避、去重及恢复方法、存储介质和去重系统 | |
CN104281412A (zh) | 一种在数据存储前去除重复数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 200233 Shanghai City, Xuhui District 7 Guangxi Jinglu 3 Building No. 203 room Applicant after: Shanghai Tak Billiton information technology Limited by Share Ltd Applicant after: Radio and Television Group of Zhejiang Address before: 200233 Shanghai City, Xuhui District 7 Guangxi Jinglu 3 Building No. 203 room Applicant before: Shanghai Datatom Information Technology Co., Ltd. Applicant before: Radio and Television Group of Zhejiang |
|
GR01 | Patent grant | ||
GR01 | Patent grant |