CN107644081A - 数据去重方法及装置 - Google Patents
数据去重方法及装置 Download PDFInfo
- Publication number
- CN107644081A CN107644081A CN201710860395.6A CN201710860395A CN107644081A CN 107644081 A CN107644081 A CN 107644081A CN 201710860395 A CN201710860395 A CN 201710860395A CN 107644081 A CN107644081 A CN 107644081A
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- block
- segment
- hash value
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 239000013598 vector Substances 0.000 claims description 68
- 230000011218 segmentation Effects 0.000 claims description 4
- 230000000903 blocking effect Effects 0.000 claims description 2
- 238000013500 data storage Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据去重方法及装置,涉及计算机存储领域,用于去掉重复数据以减少数据存储空间。该方法包括:对数据流等间隔分段得到待存储段数据,对待存储段数据进行等间隔分块得到待存储块数据;根据待存储块数据,得到待存储块数据的块哈希以及待存储段数据的段哈希;根据数据流的段哈希和块哈希以及段清单表从已有数据中查找与数据流相同的块数据;将数据流中相同块数据的块指针设置为已有数据中相同块数据的块指针;将数据流中不相同块数据的待存储块数据存储,将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置;将数据流的段哈希、块哈希和块指针存储至段清单表。本申请实施例应用于数据存储。
Description
技术领域
本发明涉及计算机存储领域,尤其涉及一种数据去重方法及装置。
背景技术
超融合基础设施(Hyper Converged Infrastructure,简称HCI)是一种集成了存储、网络及计算的基础架构,在这样的架构环境中,搭配虚拟化软件,集成在一个机箱之中,支持平滑水平扩展,既可扩展到大规模集群,也可扩展到多个数据中心。它的存储是通过软件定义存储(Software Defined Storage,简称SDS)将集群内各服务器节点的本地存储池化,形成统一的分布式存储。因此,超融合基础架构解决了传统信息技术(InformationTechnology,IT)架构部署时间长、扩展困难的问题,实现了快速部署与扩展;简化了虚拟环境的存储和数据管理,起到了性能加速、容量优化的作用;降低了虚拟化的管理难度,提供了更为简单的扩展和管理平台;解决了传统IT架构总体拥有成本(TCO,Total Cost ofOwnership)高的问题,降低了成本。但是,企业面对数据的急剧膨胀,需要不断购置大量的存储设备来应对不断增长的存储需求。
发明内容
本发明的实施例提供一种数据去重方法及装置,用于去掉重复数据以减少数据存储空间。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种数据去重方法,包括:
对数据流按照第一间隔等间隔分段得到待存储段数据,并对每个待存储段数据按照第二间隔等间隔分块得到待存储块数据,所述第二间隔小于所述第一间隔;
根据所述待存储块数据,得到所述待存储块数据的块哈希值以及所述待存储段数据的段哈希值,其中,所述待存储块数据的块哈希值用于唯一索引所述待存储块数据,所述待存储段数据的段哈希值用于唯一索引所述待存储段数据;
根据所述数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与所述数据流相同的块数据,其中,所述段清单表包括已存储段数据的段哈希值、已存储块数据的块哈希值以及所述已存储块数据的块指针,所述已存储段数据为所述已有数据按照所述第一间隔等间隔分段得到,所述已存储块数据为所述已存储段数据按照所述第二间隔等间隔分块得到,所述已存储段数据的段哈希值用于唯一索引所述已存储段数据,所述已存储块数据的块哈希值用于唯一索引所述已存储块数据,所述已存储块数据的块指针用于指示对应已存储块数据的存储位置;
将所述数据流中查找到的相同块数据的块指针设置为所述已有数据中相同块数据的块指针;将所述数据流中未查找到相同块数据的待存储块数据存储,并将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置;
将所述数据流的段哈希值、块哈希值和块指针存储至所述段清单表。
第二方面,提供了一种数据去重装置,包括:
分段单元,用于对数据流按照第一间隔等间隔分段得到待存储段数据,并对每个待存储段数据按照第二间隔等间隔分块得到待存储块数据,所述第二间隔小于所述第一间隔;
获取单元,用于根据所述分段单元得到的所述待存储块数据,得到所述待存储块数据的块哈希值以及所述待存储段数据的段哈希值,其中,所述待存储块数据的块哈希值用于唯一索引所述待存储块数据,所述待存储段数据的段哈希值用于唯一索引所述待存储段数据;
查找单元,用于根据所述获取单元所获取的所述数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与所述数据流相同的块数据,其中,所述段清单表包括已存储段数据的段哈希值、已存储块数据的块哈希值以及所述已存储块数据的块指针,所述已存储段数据为所述已有数据按照所述第一间隔等间隔分段得到,所述已存储块数据为所述已存储段数据按照所述第二间隔等间隔分块得到,所述已存储段数据的段哈希值用于唯一索引所述已存储段数据,所述已存储块数据的块哈希值用于唯一索引所述已存储块数据,所述已存储块数据的块指针用于指示对应已存储块数据的存储位置;
存储单元,用于将所述查找单元从所述数据流中查找到的相同块数据的块指针设置为所述已有数据中相同块数据的块指针;将所述数据流中未查找到相同块数据的待存储块数据存储,并将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置;
所述存储单元,还用于将所述数据流的段哈希值、块哈希值和块指针存储至所述段清单表。
本申请实施例提供的数据去重方法和装置,通过对数据流先分段得到段数据,再对段数据分块得到块数据,对数据流的段数据的哈希值与已有数据的段数据的哈希值进行相似度计算,从而找到相似度较高的段数据,再从相似度较高的段数据中通过块数据的哈希值的精确匹配,找到完全相同的块数据。对数据流进行存储时,仅存储相同块数据的指针,不存储实际数据,减少了数据流占用存储空间。达到了去掉重复数据以减少数据存储空间的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种数据去重系统架构的示意图;
图2为本申请实施例提供的一种数据去重方法的流程示意图;
图3为本申请实施例提供的一种数据去重方法的举例示意图;
图4为本申请实施例提供的计算块哈希值和段哈希值的流程示意图;
图5为本申请实施例提供的查找相同的块数据的举例示意图;
图6本申请实施例提供的计算哈希值相似度的流程示意图;
图7为本申请实施例提供的另一种数据去重方法的流程示意图;
图8为本申请实施例提供的读取数据流的流程示意图;
图9为本申请实施例提供的数据去重装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参照图1中所示,整个数据去重系统架构包括:虚拟机11、虚拟磁盘驱动12、虚拟机监视器(Hypervisor)、文件系统14、数据去重装置15和物理存储16。数据去重装置15对来自上层虚拟机11的数据流进行去重处理后存储至物理存储16。
物理存储16可以包括段清单存储161和块存储162,具体存储介质可以是硬盘驱动器(Hard Disk Drive,HDD)、固态硬盘(Solid State Drives,SSD)等。段清单存储161用于存储段清单表,块存储162用于存储实际的块数据。
本申请实施例所述的计算哈希值或通过哈希值进行查找过程都可以通过调用固化在现场可编程门阵列(Field Programmable Gate Array,FPGA)或复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)等硬件资源上的函数来执行。通过充分发挥了硬件资源的性能,使得计算哈希值或通过哈希值进行查找的时间在纳秒级。
本申请实施例所述的技术方案可以扩展到虚拟桌面基础设施(Virtual DesktopInfrastructure,VDI)存储、虚拟化应用(如Web服务器、文件服务器、邮件服务器、大数据等)、数据容灾备份、磁盘备份等。
参照图2中所示,本申请实施例提供的数据去重方法包括S101-S106:
S101、对数据流按照第一间隔等间隔分段得到待存储段数据,并对每个待存储段数据按照第二间隔等间隔分块得到待存储块数据,第二间隔小于所述第一间隔。
第一间隔和第二间隔指间隔的比特位数目,例如128k比特、32k比特等。
具体的,可以通过数据流分段器对接收到的数据流进行分段。例如可以按照128k比特划分为一个段数据,再将段数据进一步分块,例如可以按照32k比特划分为一个块数据,则每个段数据包括四个块数据。
为了便于说明,示例性的,参照图3中所示,以一个字节(8比特)为一个块数据,两个块数据为一个段数据为例进行说明,则段数据1101101000011111可以被划分为两个块数据11011010和00011111。
S102、根据待存储块数据,得到待存储块数据的块哈希值以及待存储段数据的段哈希值,其中,待存储块数据的块哈希值用于唯一索引待存储块数据,待存储段数据的段哈希值用于唯一索引待存储段数据。
参照图4中所示,该步骤可以包括步骤S1021-S1025:
S1021、对待存储块数据进行哈希运算得到待存储块数据的块哈希值。
本申请实施例并不限定所采用哈希计算的方式,例如可以采用直接取余法、乘法取整法、平方取中法等等。
示例性的,参照图3中所示,对第一个块数据11011010进行哈希计算得到的哈希值为1011,对第二个块数据00011111进行哈希计算得到的哈希值为0110。
S1022、取待存储块数据的固定长度比特位的值作为待存储块数据的级别。
本申请实施例并不限定固定长度的具体值,示例性的,参照图3中所示,以待存储块数据的最后四个比特位的值作为待存储块数据的级别,则第一个块数据11011010的级别为1010(10),第二个块数据00011111的级别为1111(15)。
S1023、根据待存储块数据的块哈希值和级别得到待存储块数据的矢量表示,其中,待存储块数据的矢量表示的每个分量对应待存储块数据的块哈希值的一个比特位。
具体的,可以根据块哈希值的每一比特位为0或1来决定矢量表示中的对应分量取正或负的级别值。
如果待存储块数据的块哈希值的一个比特位值为0,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的负值;如果待存储块数据的块哈希值的一个比特位值为1,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的正值。
或者相反地,如果待存储块数据的块哈希值的一个比特位值为0,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的正值;如果待存储块数据的块哈希值的一个比特位值为1,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的负值。
示例性的,参照图3中所示,第一个块数据11011010的块哈希值1011的第一个比特位为1,则对应的矢量表示的第一个分量为1*级别=10,第二个比特位为0,则对应的矢量表示的第二个分量为-1*级别=-10。类似地,可以得到第一个块数据11011010的矢量表示为(10,-10,10,10),第二个块数据00011111的矢量表示为(-15,15,15,-15)。
S1024、对待存储段数据中所有待存储块数据的矢量表示进行矢量相加或相减得到待存储段数据的矢量表示。
示例性的,参照图3中所示,将第一个块数据11011010的矢量表示为(10,-10,10,10)与第二个块数据00011111的矢量表示(-15,15,15,-15)进行矢量相加得到整个待存储段数据的矢量表示为(-5,5,25,-5)。当然也可以对两矢量进行矢量相减来得到待存储段数据的矢量表示,具体不再赘述。
S1025、根据待存储段数据的矢量表示得到待存储段数据的段哈希值,其中,待存储段数据的段哈希值的每个比特位对应待存储段数据的矢量表示的一个分量。
具体的,可以将待存储段数据的矢量表示的每一个分量与预设门限比较,来确定取值为0或1。预设门限可以是任意数据,本申请实施例在此不作限定。
如果待存储段数据的矢量表示的一个分量大于预设门限,则得到待存储段数据的段哈希值的对应比特位值为0,否则,则得到待存储段数据的段哈希值的对应比特位值为1。
或者,如果待存储段数据的矢量表示的一个分量大于预设门限,则待存储段数据的段哈希值的对应比特位值为1,否则,则得到待存储段数据的段哈希值的对应比特位值为0。
示例性的,参照图3中所示,假设预设门限为10,对于段数据的矢量表示(-5,5,25,-5)来说,第一个分量-5小于10,得到段哈希值对应第一个比特位为0,第二个分量5小于10,得到段哈希值对应第二个比特位为0,第三个分量25大于10,得到段哈希值对应第三个比特位为1,第四个分量-5小于10,得到段哈希值对应第四个比特位为0。最终得到该段数据的段哈希值0010。
S103、根据数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与数据流相同的块数据。
其中,段清单表包括已存储段数据的段哈希值、已存储块数据的块哈希值以及已存储块数据的块指针。已存储段数据为已有数据按照第一间隔等间隔分段得到,已存储块数据为已存储段数据按照第二间隔等间隔分块得到。已存储段数据的段哈希值用于唯一索引已存储段数据,已存储块数据的块哈希值用于唯一索引已存储块数据。已存储块数据的块指针用于指示对应已存储块数据的存储位置。并且段数据的段哈希值与该段数据所包含的块数据的块哈希值和块指针相对应(例如可以通过链表来对应)。当通过各个段数据的段哈希值可以进一步查找到该段数据所包含的块数据的块哈希及块指针。段清单表可以通过段清单表索引来唯一索引。
参照图5中所示,假设已有数据包括三个段数据,对应的段哈希值分别为段哈希1、段哈希2、段哈希3。每个段数据包括两个块数据,每个块数据对应一个块哈希和一个块指针。例如段哈希1包括的第一个块数据的块哈希为块哈希1,块指针为块指针1;第二个块数据的块哈希为块哈希2,块指针为块指针2。
本申请实施例通过相似度判断哈希来实现段数据相似性的判断。具体的,参照图6中所示,步骤S103可以包括步骤S1031-S1034:
S1031、计算数据流的待存储段数据的段哈希值与已有数据的已存储段数据的段哈希值之间的汉明距离。
通过汉明距离(Hamming distance)可以计算出两个哈希值是否相似。两个哈希值对应二进制串取值不同的数量称为这两个哈希值的汉明距离。例如:10101和00110从第一位开始依次有第一、二、五位不同,因此其汉明距离为3。
示例性的,参照图5中所示,假设数据流的待存储段数据的段哈希值为段哈希4,待存储段数据所包括的待存储块数据的块哈希值分别为块哈希2和块哈希6。
将段哈希4纵向分别与段哈希1、段哈希2、段哈希3计算汉明距离。
S1032、根据汉明距离与预设门限比较来判断待存储段数据的段哈希值与已存储段数据的段哈希值是否相似。
示例性的,参照图5中所示,假设预设门限为3,待存储段数据的段哈希4与段哈希1的汉明距离为3满足预设门限的条件,认为待存储段数据与段哈希1对应段数据相似度高。
S1033、当判断相似时,则从对应的已存储块数据的块哈希值中查找与待存储段数据的待存储块数据的块哈希值相同的块哈希值。
示例性的,参照图5中所示,取段哈希4对应的块哈希2和块哈希6分别与段哈希1对应的块哈希1和块哈希2比较,发现具有相同块哈希值块哈希2。
S1034、将相同块哈希值对应的块指针指示的块数据作为查找到的相同的块数据。
示例性的,参照图5中所示,以段哈希1对应的块哈希2所指示的块数据作为查找到的相同的块数据。
S104、将数据流中查找到的相同块数据的块指针设置为已有数据中相同块数据的块指针。
示例性的,参照图5中所示,将段哈希4对应的块哈希2的块指针设置为段哈希1对应的块哈希2的块指针2。这样就不必再实际对块哈希2所指向的块数据进行重复存储,通过指针指向相同数据即可。
S105、将数据流中未查找到相同块数据的待存储块数据存储,并将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置。
示例性的,参照图5中所示,块哈希6所对应的块数据属于数据流中未查找到相同块数据的待存储块数据,因此其对应的块数据需要进行存储。并将对应的块指针6设置为对应块数据的存储位置。
S106、将上述数据流的段哈希值、块哈希值和块指针存储至段清单表。
示例性的,参照图5中所示,同样可以通过链表形式进行存储。
可选的,参照图7中所示,本申请实施例所述的数据去重方法还可以包括步骤S107:
S107、根据段清单表中已有数据的段哈希值和块指针获取段数据。
具体的,读取数据流程的过程是上述写数据流过程的逆过程。参照图7中所示,数据流生成器通过段清单表中的段哈希值找到段数据所包括的块数据的块指针,将块指针所指向的存储位置的块数据按照顺序拼接后即得到完整的段数据,最后提供给文件系统。需要说明的是步骤S107与步骤S101-S106没有先后执行顺序。
本申请实施例提供的数据去重方法,通过对数据流先分段得到段数据,再对段数据分块得到块数据,对数据流的段数据的哈希值与已有数据的段数据的哈希值进行相似度计算,从而找到相似度较高的段数据,再从相似度较高的段数据中通过块数据的哈希值的精确匹配,找到完全相同的块数据。对数据流进行存储时,仅存储相同块数据的指针,不存储实际数据,减少了数据流占用存储空间。达到了去掉重复数据以减少数据存储空间的目的。
当存储系统数据中有重复数据时,能够很好的去掉重复数据,解决了超融合基础设施面临数据膨胀快,存储空间不足的问题,数据可以缩减到原来的1/20~1/50,极大地减少数据存储空间,提高数据存储利用率,同时,在数据去重过程中,系统不会消耗大量的内存容量和降低性能,还能提高数据传输效率。实现简单易行。并且支持在线数据缩减功能,在数据去重过程中,系统不会消耗大量的内存容量和降低性能,同时,还能提高数据传输效率,即数据存储效率。
本申请实施例所述的技术方案提出的相似度判断哈希,其能够表征原内容的相似度,而传统哈希无法衡量原内容的相似度,例如:对于传统哈希来说,如果段数据只相差一个比特,其所产生的签名也可能差别很大,但是,有可能存在其它内容大部分或全部相同,这样,就错失数据去重的机会。另外,通过对数据流先分段再分块,大大减少了段哈希表项,减少了用于保存段清单表的内存容量。
实施例2、
本申请实施例提供了一种数据去重装置,应用于上述网络架构,参照图9中所示,该装置90包括:
分段单元901,用于对数据流等间隔分段得到待存储段数据,并对每个待存储段数据进行等间隔分块得到待存储块数据;
获取单元902,用于根据分段单元901得到的待存储块数据,得到待存储块数据的块哈希值以及待存储段数据的段哈希值,其中,待存储块数据的块哈希值用于唯一索引待存储块数据,待存储段数据的段哈希值用于唯一索引待存储段数据;
查找单元903,用于根据获取单元902所获取的数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与数据流相同的块数据,其中,段清单表包括已存储段数据的段哈希值、已存储块数据的块哈希值以及已存储块数据的块指针,已存储段数据为已有数据等间隔分段得到,已存储块数据为已存储段数据等间隔分块得到,已存储段数据的段哈希值用于唯一索引已存储段数据,已存储块数据的块哈希值用于唯一索引已存储块数据,已存储块数据的块指针用于指示对应已存储块数据的存储位置;
存储单元904,用于将查找单元903从数据流中查找到的相同块数据的块指针设置为已有数据中相同块数据的块指针;将数据流中未查找到相同块数据的待存储块数据存储,并将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置;
存储单元904,还用于将数据流的段哈希值、块哈希值和块指针存储至段清单表。
在一种可能的设计中,获取单元902,具体用于:对待存储块数据进行哈希运算得到待存储块数据的块哈希值;取待存储块数据的固定长度比特位的值作为待存储块数据的级别;根据待存储块数据的块哈希值和级别得到待存储块数据的矢量表示,其中,待存储块数据的矢量表示的每个分量对应待存储块数据的块哈希值的一个比特位;对待存储段数据中所有待存储块数据的矢量表示进行矢量相加或相减得到待存储段数据的矢量表示;根据待存储段数据的矢量表示得到待存储段数据的段哈希值,其中,待存储段数据的段哈希值的每个比特位对应待存储段数据的矢量表示的一个分量。
在一种可能的设计中,获取单元902,具体用于:如果待存储块数据的块哈希值的一个比特位值为0,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的负值;如果待存储块数据的块哈希值的一个比特位值为1,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的正值;或者,如果待存储块数据的块哈希值的一个比特位值为0,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的正值;如果待存储块数据的块哈希值的一个比特位值为1,则得到待存储块数据的矢量表示的对应分量为待存储块数据的级别的负值。
在一种可能的设计中,获取单元902,具体用于:如果待存储段数据的矢量表示的一个分量大于第一预设门限,则得到待存储段数据的段哈希值的对应比特位值为0,否则,则得到待存储段数据的段哈希值的对应比特位值为1;或者,如果待存储段数据的矢量表示的一个分量大于第一预设门限,则待存储段数据的段哈希值的对应比特位值为1,否则,则得到待存储段数据的段哈希值的对应比特位值为0。
在一种可能的设计中,查找单元903,具体用于:计算数据流的待存储段数据的段哈希值与已有数据的已存储段数据的段哈希值之间的汉明距离;根据汉明距离与第二预设门限比较来判断待存储段数据的段哈希值与已存储段数据的段哈希值是否相似;当判断相似时,则从对应的已存储块数据的块哈希值中查找与待存储段数据的待存储块数据的块哈希值相同的块哈希值;将相同块哈希值对应的块指针指示的块数据作为查找到的相同的块数据。
由于本发明实施例中的装置可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本发明实施例在此不再赘述。
需要说明的是,分段单元、获取单元、查找单元、存储单元可以为单独设立的处理器,也可以集成在控制器的某一个处理器中实现,此外,也可以以程序代码的形式存储于控制器的存储器中,由控制器的某一个处理器调用并执行以上各单元的功能。这里的处理器可以是一个中央处理器(英文全称:Central Processing Unit,英文简称:CPU),或者是特定集成电路(英文全称:Application Specific Integrated Circuit,英文简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文简称:ROM)、随机存取存储器(英文全称:Random Access Memory,英文简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据去重方法,其特征在于,包括:
对数据流按照第一间隔等间隔分段得到待存储段数据,并对每个待存储段数据按照第二间隔等间隔分块得到待存储块数据,所述第二间隔小于所述第一间隔;
根据所述待存储块数据,得到所述待存储块数据的块哈希值以及所述待存储段数据的段哈希值,其中,所述待存储块数据的块哈希值用于唯一索引所述待存储块数据,所述待存储段数据的段哈希值用于唯一索引所述待存储段数据;
根据所述数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与所述数据流相同的块数据,其中,所述段清单表包括已存储段数据的段哈希值、已存储块数据的块哈希值以及所述已存储块数据的块指针,所述已存储段数据为所述已有数据按照所述第一间隔等间隔分段得到,所述已存储块数据为所述已存储段数据按照所述第二间隔等间隔分块得到,所述已存储段数据的段哈希值用于唯一索引所述已存储段数据,所述已存储块数据的块哈希值用于唯一索引所述已存储块数据,所述已存储块数据的块指针用于指示对应已存储块数据的存储位置;
将所述数据流中查找到的相同块数据的块指针设置为所述已有数据中相同块数据的块指针;将所述数据流中未查找到相同块数据的待存储块数据存储,并将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置;
将所述数据流的段哈希值、块哈希值和块指针存储至所述段清单表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待存储块数据,得到所述待存储块数据的块哈希值以及所述待存储段数据的段哈希值,包括:
对所述待存储块数据进行哈希运算得到所述待存储块数据的块哈希值;
取所述待存储块数据的固定长度比特位的值作为所述待存储块数据的级别;
根据所述待存储块数据的块哈希值和级别得到所述待存储块数据的矢量表示,其中,所述待存储块数据的矢量表示的每个分量对应所述待存储块数据的块哈希值的一个比特位;
对所述待存储段数据中所有待存储块数据的矢量表示进行矢量相加或相减得到所述待存储段数据的矢量表示;
根据所述待存储段数据的矢量表示得到所述待存储段数据的段哈希值,其中,所述待存储段数据的段哈希值的每个比特位对应所述待存储段数据的矢量表示的一个分量。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待存储块数据的块哈希值和级别得到所述待存储块数据的矢量表示,包括:
如果所述待存储块数据的块哈希值的一个比特位值为0,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的负值;如果所述待存储块数据的块哈希值的一个比特位值为1,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的正值;
或者,
如果所述待存储块数据的块哈希值的一个比特位值为0,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的正值;如果所述待存储块数据的块哈希值的一个比特位值为1,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的负值。
4.根据权利要求2所述的方法,其特征在于,所述根据所述待存储段数据的矢量表示得到所述待存储段数据的段哈希值,包括:
如果所述待存储段数据的矢量表示的一个分量大于第一预设门限,则得到所述待存储段数据的段哈希值的对应比特位值为0,否则,则得到所述待存储段数据的段哈希值的对应比特位值为1;
或者,
如果所述待存储段数据的矢量表示的一个分量大于所述第一预设门限,则所述待存储段数据的段哈希值的对应比特位值为1,否则,则得到所述待存储段数据的段哈希值的对应比特位值为0。
5.根据权利要求1所述的方法,其特征在于,所述根据所述数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与所述数据流相同的块数据,包括:
计算所述数据流的待存储段数据的段哈希值与已有数据的已存储段数据的段哈希值之间的汉明距离;
根据所述汉明距离与第二预设门限比较来判断所述待存储段数据的段哈希值与所述已存储段数据的段哈希值是否相似;
当判断相似时,则从对应的已存储块数据的块哈希值中查找与所述待存储段数据的待存储块数据的块哈希值相同的块哈希值;
将相同块哈希值对应的块指针指示的块数据作为查找到的相同的块数据。
6.一种数据去重装置,其特征在于,包括:
分段单元,用于对数据流按照第一间隔等间隔分段得到待存储段数据,并对每个待存储段数据按照第二间隔等间隔分块得到待存储块数据,所述第二间隔小于所述第一间隔;
获取单元,用于根据所述分段单元得到的所述待存储块数据,得到所述待存储块数据的块哈希值以及所述待存储段数据的段哈希值,其中,所述待存储块数据的块哈希值用于唯一索引所述待存储块数据,所述待存储段数据的段哈希值用于唯一索引所述待存储段数据;
查找单元,用于根据所述获取单元所获取的所述数据流的段哈希值和块哈希值以及段清单表,从已有数据中查找与所述数据流相同的块数据,其中,所述段清单表包括已存储段数据的段哈希值、已存储块数据的块哈希值以及所述已存储块数据的块指针,所述已存储段数据为所述已有数据按照所述第一间隔等间隔分段得到,所述已存储块数据为所述已存储段数据按照所述第二间隔等间隔分块得到,所述已存储段数据的段哈希值用于唯一索引所述已存储段数据,所述已存储块数据的块哈希值用于唯一索引所述已存储块数据,所述已存储块数据的块指针用于指示对应已存储块数据的存储位置;
存储单元,用于将所述查找单元从所述数据流中查找到的相同块数据的块指针设置为所述已有数据中相同块数据的块指针;将所述数据流中未查找到相同块数据的待存储块数据存储,并将未查找到相同块数据的待存储块数据的块指针设置为对应待存储块数据的存储位置;
所述存储单元,还用于将所述数据流的段哈希值、块哈希值和块指针存储至所述段清单表。
7.根据权利要求6所述的装置,其特征在于,所述获取单元,具体用于:
对所述待存储块数据进行哈希运算得到所述待存储块数据的块哈希值;
取所述待存储块数据的固定长度比特位的值作为所述待存储块数据的级别;
根据所述待存储块数据的块哈希值和级别得到所述待存储块数据的矢量表示,其中,所述待存储块数据的矢量表示的每个分量对应所述待存储块数据的块哈希值的一个比特位;
对所述待存储段数据中所有待存储块数据的矢量表示进行矢量相加或相减得到所述待存储段数据的矢量表示;
根据所述待存储段数据的矢量表示得到所述待存储段数据的段哈希值,其中,所述待存储段数据的段哈希值的每个比特位对应所述待存储段数据的矢量表示的一个分量。
8.根据权利要求7所述的装置,其特征在于,所述获取单元,具体用于:
如果所述待存储块数据的块哈希值的一个比特位值为0,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的负值;如果所述待存储块数据的块哈希值的一个比特位值为1,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的正值;
或者,
如果所述待存储块数据的块哈希值的一个比特位值为0,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的正值;如果所述待存储块数据的块哈希值的一个比特位值为1,则得到所述待存储块数据的矢量表示的对应分量为所述待存储块数据的级别的负值。
9.根据权利要求7所述的装置,其特征在于,所述获取单元,具体用于:
如果所述待存储段数据的矢量表示的一个分量大于第一预设门限,则得到所述待存储段数据的段哈希值的对应比特位值为0,否则,则得到所述待存储段数据的段哈希值的对应比特位值为1;
或者,
如果所述待存储段数据的矢量表示的一个分量大于所述第一预设门限,则所述待存储段数据的段哈希值的对应比特位值为1,否则,则得到所述待存储段数据的段哈希值的对应比特位值为0。
10.根据权利要求6所述的装置,其特征在于,所述查找单元,具体用于:
计算所述数据流的待存储段数据的段哈希值与已有数据的已存储段数据的段哈希值之间的汉明距离;
根据所述汉明距离与第二预设门限比较来判断所述待存储段数据的段哈希值与所述已存储段数据的段哈希值是否相似;
当判断相似时,则从对应的已存储块数据的块哈希值中查找与所述待存储段数据的待存储块数据的块哈希值相同的块哈希值;
将相同块哈希值对应的块指针指示的块数据作为查找到的相同的块数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710860395.6A CN107644081A (zh) | 2017-09-21 | 2017-09-21 | 数据去重方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710860395.6A CN107644081A (zh) | 2017-09-21 | 2017-09-21 | 数据去重方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107644081A true CN107644081A (zh) | 2018-01-30 |
Family
ID=61122590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710860395.6A Pending CN107644081A (zh) | 2017-09-21 | 2017-09-21 | 数据去重方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107644081A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109816536A (zh) * | 2018-12-14 | 2019-05-28 | 中国平安财产保险股份有限公司 | 清单去重方法、装置和计算机设备 |
CN110750508A (zh) * | 2019-09-27 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种数据存储方法与装置 |
CN111124312A (zh) * | 2019-12-23 | 2020-05-08 | 第四范式(北京)技术有限公司 | 数据去重的方法及其装置 |
WO2021114464A1 (zh) * | 2019-12-12 | 2021-06-17 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、系统、设备及计算机可读存储介质 |
CN113810337A (zh) * | 2020-06-12 | 2021-12-17 | 中国电信股份有限公司 | 用于网络报文去重的方法、装置、以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495894A (zh) * | 2011-12-12 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | 重复数据查找方法、装置及系统 |
CN103189867A (zh) * | 2012-10-30 | 2013-07-03 | 华为技术有限公司 | 重复数据检索方法及设备 |
CN104361068A (zh) * | 2014-11-06 | 2015-02-18 | 华中科技大学 | 一种数据去重过程中的并行分块方法与系统 |
CN105808169A (zh) * | 2016-03-14 | 2016-07-27 | 联想(北京)有限公司 | 用于数据去重的方法、装置和系统 |
-
2017
- 2017-09-21 CN CN201710860395.6A patent/CN107644081A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495894A (zh) * | 2011-12-12 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | 重复数据查找方法、装置及系统 |
CN103189867A (zh) * | 2012-10-30 | 2013-07-03 | 华为技术有限公司 | 重复数据检索方法及设备 |
CN104361068A (zh) * | 2014-11-06 | 2015-02-18 | 华中科技大学 | 一种数据去重过程中的并行分块方法与系统 |
CN105808169A (zh) * | 2016-03-14 | 2016-07-27 | 联想(北京)有限公司 | 用于数据去重的方法、装置和系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109816536A (zh) * | 2018-12-14 | 2019-05-28 | 中国平安财产保险股份有限公司 | 清单去重方法、装置和计算机设备 |
CN109816536B (zh) * | 2018-12-14 | 2023-08-25 | 中国平安财产保险股份有限公司 | 清单去重方法、装置和计算机设备 |
CN110750508A (zh) * | 2019-09-27 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种数据存储方法与装置 |
WO2021114464A1 (zh) * | 2019-12-12 | 2021-06-17 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、系统、设备及计算机可读存储介质 |
CN111124312A (zh) * | 2019-12-23 | 2020-05-08 | 第四范式(北京)技术有限公司 | 数据去重的方法及其装置 |
CN111124312B (zh) * | 2019-12-23 | 2023-10-31 | 第四范式(北京)技术有限公司 | 数据去重的方法及其装置 |
CN113810337A (zh) * | 2020-06-12 | 2021-12-17 | 中国电信股份有限公司 | 用于网络报文去重的方法、装置、以及存储介质 |
CN113810337B (zh) * | 2020-06-12 | 2023-08-08 | 天翼云科技有限公司 | 用于网络报文去重的方法、装置、以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107644081A (zh) | 数据去重方法及装置 | |
US11954568B2 (en) | Root cause discovery engine | |
JP5732536B2 (ja) | 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム、方法及び非一時的なコンピュータ可読ストレージ媒体 | |
US8898120B1 (en) | Systems and methods for distributed data deduplication | |
Park et al. | Parallel computation of skyline and reverse skyline queries using mapreduce | |
US10402427B2 (en) | System and method for analyzing result of clustering massive data | |
US10679055B2 (en) | Anomaly detection using non-target clustering | |
US10146786B2 (en) | Managing deduplication in a data storage system using a Bloomier filter data dictionary | |
CN108121810A (zh) | 一种数据去重方法、系统、中心服务器及分布式服务器 | |
US9747051B2 (en) | Cluster-wide memory management using similarity-preserving signatures | |
US11226737B2 (en) | Methods and systems for de-duplicating blocks of data | |
WO2017095413A1 (en) | Incremental automatic update of ranked neighbor lists based on k-th nearest neighbors | |
CN105183399A (zh) | 一种基于弹性块存储的数据写、读方法及装置 | |
CN113971225A (zh) | 图像检索系统、方法和装置 | |
WO2017095439A1 (en) | Incremental clustering of a data stream via an orthogonal transform based indexing | |
WO2022007596A1 (zh) | 图像检索系统、方法和装置 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
WO2017065795A1 (en) | Incremental update of a neighbor graph via an orthogonal transform based indexing | |
US11221779B2 (en) | Method and system for building content for a de-duplication engine | |
WO2014168199A1 (ja) | 論理演算方法および情報処理装置 | |
KR20140125312A (ko) | 데이터 중심의 컴퓨팅 환경을 구축하기 위한 빅데이터 처리 방법 및 이를 수행하는 장치 | |
CN116860180B (zh) | 一种分布式存储方法、装置、电子设备及存储介质 | |
US11593010B2 (en) | Systems and methods for block-data clustering-based deduplication | |
CN110019162B (zh) | 实现属性归一的方法和装置 | |
US10467191B1 (en) | Large scale data join service within a service provider network |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180130 |
|
RJ01 | Rejection of invention patent application after publication |