[发明专利]一种数据去重方法有效
申请号: | 201611207408.1 | 申请日: | 2016-12-23 |
公开(公告)号: | CN108241639B | 公开(公告)日: | 2019-07-23 |
发明(设计)人: | 王焰辉;李振钊;曾刚 | 申请(专利权)人: | 中科星图股份有限公司 |
主分类号: | G06F16/215 | 分类号: | G06F16/215;G06F16/2455 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 101399 北京市顺义区临空经济核*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据块 数据库服务器 存储 分块 去重 接口服务器 数据文件 重复数据块 重复数据 最小数据 非重复 分块数 哈希 结尾 指向 指针 分类 | ||
1.一种数据去重方法,该方法所应用的系统结构包括接口服务器和多个数据库服务器,所述接口服务器负责管理数据文件的存储入库,而数据库服务器用于实际存储数据,其特征在于,该方法包括以下步骤:
步骤100:基于数据块的最后一个字节,对数据块进行分类,同时设置对应于每一类数据块进行处理和存储的数据库服务器;
步骤200:接口服务器设置最小数据块长度,对于需求去重的数据文件,如果小于该最小长度,直接发送给该数据块对应的数据库服务器;否则使用不同的结尾字节对该数据文件分块,分块基于以下原则:除最后一块外,每一块的长度不小于该最小长度,且结尾字节相同;
步骤300:在分块数最多的六种分块方式中,接口服务器选择重复数据量最大的两种分块方式,指示相应的数据库服务器进行存储;
步骤400:所述数据库服务器对于重复数据块,仅存储一个指针,指向已存储的相同数据块;对于非重复数据块,则存储整个数据块及其哈希值;
(1)接口服务器接收需要存储入库的数据文件;
接口服务器作为整个系统与外界的接口,接收外界发送来的数据文件,并负责采用后续的步骤将该数据文件存储到数据库服务器中;
(2)所述接口服务器检查所述数据文件的长度L,如果L小于预定义的最小数据块长度MinBlockLength,则提取该数据文件的最后一个字节B,转到步骤3;如果L≥MinBlockLength,则转到步骤5;
(3)预先给系统中的256个数据库服务器编号,分别命名为Server(i),其中0≤i≤255,接口服务器将该数据文件发送到Server(B),同时保存该数据文件的相关信息;
根据数据块结尾的字节,对数据块进行分类,由于一个字节一共有256个取值,因此将数据块分成256类,并且对应的分配到256个数据库服务器,每个数据库服务器的编号与其负责的数据块的分类结尾字节的值相同;
所述数据文件的相关信息包括数据文件的名字、大小、数据库服务器的编号,由此接口服务器可以查询到该数据文件;
(4)所述Server(B)计算该数据文件的哈希值,根据该哈希值判断该数据文件是否已存储在服务器中,如果已存储,则该数据文件是重复数据,仅为该数据文件保留一个指针,指向已存储的数据即可;如果并未存储,则Server(B)存储该数据文件和其哈希值,方法结束;
由于数据库服务器保存了每个存储的数据文件或数据块的哈希值,因此将该数据文件的哈希值与已有哈希值进行比较,就可以判断该数据文件是否是重复数据,如果是重复数据,就不用再次存储整个数据文件;
所述哈希算法包括但不限于:MD4、MD5、SHA-1、SHA-256;
(5)所述接口服务器准备对该数据文件进行数据分块,首先设置初始的分块向量V=0;
(6)所述接口服务器从该数据文件的第MinBlockLength个字节开始向后扫描,当扫描某个字节等于分块向量时,记录该字节的位置P1,然后再从P1+MinBlockLength的位置开始扫描,寻找并记录下一个等于分块向量的字节位置,如此循环,直到数据文件的末尾;
(7)根据步骤6的所记录的位置,将每个位置作为一个数据块的结尾,对数据文件进行分块,得到一个或多个数据块,设得到了KV个数据块;
步骤7得到的数据块可能有两类,第一类是以分块向量V结尾的数据块,第二类是数据文件的最后一个以B结尾的数据块;其中第二类的数据块的数量只能是1或者0,第一类数据块的数据量也可能为0,这取决于数据文件的具体内容;
(8)分块向量V增加1,如果V≤255,则返回步骤6,否则继续步骤9;
上述步骤6-8是一个循环,基于0到255的每个分块向量值进行文件扫描,从而获得了多种数据块分割形式,数量从K0到K255;
(9)对K0到K255按照从大到小进行排序,有相等的KV,则下标大的在前,获取排在最前的6个值,假设为KV1,KV2,KV3,KV4,KV5,KV6;
(10)按照V1到V6六个分块向量对该数据文件的分块结果,将各个数据块按照其结尾字节发送到相应的数据库服务器进行重复性检测;
如果一个数据块的结尾字节是X,则将该数据块发送到Server(X);
(11)每个数据库服务器对接收到的每个数据块,计算其哈希值,根据该哈希值判断该数据块是否是重复数据,将判断结果发送给接口服务器;
(12)所述接口服务器根据步骤11接收到的判断结果,从六种分块方式中选择重复数据量最多的两种,在重复数据量相同时,则随机选择;根据这两种分块方式,通知相应的数据库服务器进行存储;接口服务器自身保存该数据文件的相关信息,包括其两种分块方式和相应的数据库服务器;
数据库服务器的存储方式与步骤4相同,如果是重复的数据块,则只保留指针和相应的哈希值,如果是不重复的数据块,则保存该数据块和相应的哈希值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科星图股份有限公司,未经中科星图股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611207408.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种多用户节点间数据传输系统
- 下一篇:一种分布式的文件存储方法