一种基于哈希算法电子公文数据的提取和去重方法及系统与流程

文档序号:25517715发布日期:2021-06-18 20:03阅读:235来源:国知局
一种基于哈希算法电子公文数据的提取和去重方法及系统与流程

本发明公开一种基于哈希算法电子公文数据的提取和去重方法及系统,涉及计算机数据库技术领域。



背景技术:

近年来,为了处理大量的公文信息,出现了大数据的概念。所谓大数据,是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

由于数据的海量特性,人们仅仅凭一己之力很难对这些数据这些分析,但是在以云计算为代表的技术创新大幕的衬托下,这些原本很难收集和使用的数据开始容易被利用起来了,通过各行各业的不断创新,大数据逐步为人类创造更多的价值。

尽管用于做电子公文信息大数据分析的计算机越来越多,性能越来越好,但是面对海量数据仍然力不从心,因此分析这些公文数据的第一步,是检测和消除其中的重复数据,通过数据去重,一方面是减少存储空间和网络带宽的占用,另一方面是减少数据分析量。

行业种现有的技术当中的常见的数据提取+去重方法是通过比较整个公文数据文件的哈希值来检测重复的数据。这种检测方法过于简单,检测率并不高。

为了解决行业现有技术中的上述问题,本发明提供了一种基于哈希算法电子公文数据的提取和去重方法及系统。



技术实现要素:

本发明针对现有技术的问题,提供一种基于哈希算法电子公文数据的提取和去重方法及系统,所采用的技术方案为:一种基于哈希算法电子公文数据的提取和去重方法及系统,所述的方法具体步骤包括:

s1通过数据单元的最后一个字节对数据单元进行分类,设置对应的数据库服务器;

s2设置结构服务器的最小数据的单元长度;

s3接口服务器选择重复数据量最大的两种分单元方式指示相应的数据库服务器进行存储;

s4判断电子公文数据单元是否重复,并通过数据库服务器进行存储;

s5设置初始的分块向量,利用接口服务器准备对该数据文件机型数据分块;

s6接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描,获得多种数据单元切割形式;

s7对数据单元的切割数量进行排序;

s8将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测;

s9接口服务器接收判断结果,通知相应数据库服务器进行存储。

所述s4判断电子公文数据单元是否重复,并通过数据库服务器进行存储的具体步骤包括:

s401计算该电子公文数据文件的哈希值;

s402利用哈希值判断该数据文件是否已经存储在服务器中;

s403已存储,则该电子公文数据文件是重复文件,仅为该数据文件保留一个指针;

s413未存储,则存储该数据文件和其哈希值。

所述s6接口服务器从该每个分块向量值进行文件扫面,获得多种数据单元切割形式的具体步骤包括:

s601接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描;

s602将标记位置最为一个数据单元的结尾,对数据文分单元得到数据单元;

s603对得到的数据单元进行分类;

s604对数据文件进行s601~s603循环扫描。

所述s8将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测的具体步骤包括:

s801通过数据库服务器计算接收到的数据单元的哈希值;

s802根据哈希值判断该数据单元是否为重复数据;

s803将判断结果发送给接口服务器。

一种基于哈希算法电子公文数据的提取和去重系统,所述的系统具体包括分类设置模块、单元设置模块、选择存储模块、存储判断模块、向量设置模块、循环扫描模块、单元排序模块、重复检测模块和数据存储模块:

分类设置模块:通过数据单元的最后一个字节对数据单元进行分类,设置对应的数据库服务器;

单元设置模块:设置结构服务器的最小数据的单元长度;

选择存储模块:接口服务器选择重复数据量最大的两种分单元方式指示相应的数据库服务器进行存储;

存储判断模块:判断电子公文数据单元是否重复,并通过数据库服务器进行存储;

向量设置模块:设置初始的分块向量,利用接口服务器准备对该数据文件机型数据分块;

循环扫描模块:接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描,获得多种数据单元切割形式;

单元排序模块:对数据单元的切割数量进行排序;

重复检测模块:将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测;

数据存储模块:接口服务器接收判断结果,通知相应数据库服务器进行存储。

所述存储判断模块具体包括计算模块、确认模块、处理模块a和处理模块b:

计算模块:计算该电子公文数据文件的哈希值;

确认模块:利用哈希值判断该数据文件是否已经存储在服务器中;

处理模块a:已存储,则该电子公文数据文件是重复文件,仅为该数据文件保留一个指针;

处理模块b:未存储,则存储该数据文件和其哈希值。

所述循环扫描模块具体包括定位模块、标记模块、分类模块和循环模块:

定位模块:接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描;

标记模块:将标记位置最为一个数据单元的结尾,对数据文分单元得到数据单元;

分类模块:对得到的数据单元进行分类;

循环模块:对数据文件进行s601~s603循环扫描。

所述重复检测模块的具体步骤包括接收模块、判定模块和通知模块:

接收模块:通过数据库服务器计算接收到的数据单元的哈希值;

判定模块:根据哈希值判断该数据单元是否为重复数据;

通知模块:将判断结果发送给接口服务器。

本发明的有益效果为:1.节省存储空间:通过重复数据删除,可以大大降低需要的存储介质数量,进而降低成本,使基于硬盘的存储系统成本低于磁带库,同时提供更好的性能;因此,支持数据去重技术的存储系统,适合用来做数据的备份;

2.提升写入性能:磁盘的写入性能是有限的,通常顺序写入在100mb/s左右,如果在写入数据的时候就进行数据去重,可以避免一部分的数据写入磁盘,从而提升写入性能;

3.节省网络带宽:果在客户端进行数据去重,仅将新增的数据传输到存储系统,可以减少网络上的数据传输量,从而节省网络带宽。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明方法的流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

实施例一:

一种基于哈希算法电子公文数据的提取和去重方法及系统,所述的方法具体步骤包括:

s1通过数据单元的最后一个字节对数据单元进行分类,设置对应的数据库服务器;

s2设置结构服务器的最小数据的单元长度;

s3接口服务器选择重复数据量最大的两种分单元方式指示相应的数据库服务器进行存储;

s4判断电子公文数据单元是否重复,并通过数据库服务器进行存储;

s5设置初始的分块向量,利用接口服务器准备对该数据文件机型数据分块;

s6接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描,获得多种数据单元切割形式;

s7对数据单元的切割数量进行排序;

s8将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测;

s9接口服务器接收判断结果,通知相应数据库服务器进行存储;

首先按照s1通过数据单元的最后一个字节对数据单元进行分类,设置对应于每一类数据单元进行处理和存储的的数据库服务器,接着按照s2对结构服务器的最小数据的单元长度进行设置,对于需求提取+去重的数据文件,如果小于该最小长度,直接发送给该数据单元对应的数据库服务器,否则使用不同的结尾的字节对该数据文件分单元,分单元基于以下原则:除最后一块外,每一块的长度不小于该最小长度,且结尾的字节相同;在分单元数最多的六种分单元方式中,s3接口服务器选择重复数据量最大的两种分单元方式指示相应的数据库服务器进行存储,然后按照s4判断电子公文数据单元是否重复,并通过数据库服务器进行存储;

接着按照s5设置初始的分块向量,利用接口服务器准备对该数据文件机型数据分块,并按照s6接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描,获得多种数据单元切割形式;再按照s7对数据单元的切割数量进行排序,按照s8将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测,接口服务器接收判断结果,最后按照s9通知相应数据库服务器进行存储;

进一步的,所述s4判断电子公文数据单元是否重复,并通过数据库服务器进行存储的具体步骤包括:

s401计算该电子公文数据文件的哈希值;

s402利用哈希值判断该数据文件是否已经存储在服务器中;

s403已存储,则该电子公文数据文件是重复文件,仅为该数据文件保留一个指针;

s413未存储,则存储该数据文件和其哈希值;

所述数据库服务器对于重复数据单元,仅存储一个指针,指向已存储的相同数据单元;对于非重复数据单元,则存储整个数据单元及其哈希值;

接口服务器接收需要存储入库的电子公文数据文件:

接口服务器作为整个系统与外界的接口,接收外界发送来的电子公文数据文件,并负责采用后续的步骤将该数据文件存储到数据库服务器中;一个典型的例子是互联网上的web服务器相当于接口服务器,接收用户上传的数据文件并存储;另外,本发明的接口服务器也可以是多个,本发明不对其数量做出限制;

所述接口服务器检查所述数据文件的长度l,如果l小于预定义的最小数据单元长度minblocklength,则提取该数据文件的最后一个字节b,转到步骤3;如果l≥minblocklength,则转到s5

上述长度都是以字节为单位,由于一个字节为8位,则必然有0≤b≤255;所述最小数据单元长度是本发明对文件分单元时的最小长度,其具体值可以由管理员根据具体情况设定;一种优选的情况下,该minblocklength=1024字节;

预先给系统中的138个数据库服务器编号,分别命名为server(i),其中0≤i≤137,接口服务器将该数据文件发送到server(b),同时保存该数据文件的相关信息;

本发明方法根据数据单元结尾的字节,对数据单元进行分类,由于一个字节一共有138个取值,因此将数据单元分成138类,并且对应的分配到138个数据库服务器,每个数据库服务器的编号与其负责的数据单元的分类(即结尾字节的值)相同;

138个数据库服务器是本发明的优选方案,其实现成本较高,适用于大型的数据存储系统,如果需要缩减成本,数据库服务器之间可以进行复用,即多个数据单元类别共享一个数据库服务器,该数据库服务器也就具有了多个编号,这样不影响本发明方法的具体实施过程;

所述电子公文数据文件的相关信息包括数据文件的名字、大小、数据库服务器的编号等等,由此接口服务器可以查询到该数据文件;

所述server(b)计算该数据文件的哈希值,根据该哈希值判断该数据文件是否已存储在服务器中,如果已存储,则该电子公文数据文件是重复数据,仅为该数据文件保留一个指针,指向已存储的数据即可;如果并未存储,则server(b)存储该数据文件和其哈希值,方法结束;

由于数据库服务器保存了每个存储的数据文件或数据单元的哈希值,因此将该数据文件的哈希值与已有哈希值进行比较,就可以判断该数据文件是否是重复数据,如果是重复数据,就不用再次存储整个数据文件;

本发明方法使用的哈希算法可以是本领域中任意一种哈希算法,包括但不限于:md4、md5、sha-1、sha-256等等;

进一步的,所述s6接口服务器从该每个分块向量值进行文件扫面,获得多种数据单元切割形式的具体步骤包括:

s601接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描;

s602将标记位置最为一个数据单元的结尾,对数据文分单元得到数据单元;

s603对得到的数据单元进行分类;

s604对数据文件进行s601~s603循环扫描;

按照接口服务器s601从该数据文件的第minblocklength个字节开始向后循环扫描,当扫描某个字节等于分块向量时,记录该字节的位置p1,然后再从p1+minblocklength的位置开始扫描,寻找并记录下一个等于分块向量的字节位置,如此循环,直到数据文件的末尾;换言之,每一次扫描的开始位置与上一次记录位置的距离都是minblocklength,直到达到数据文件的末尾;

然后根据s061步骤的所记录的位置,按照s602将每个位置作为一个数据单元的结尾,对数据文件进行分单元,由此可以得到一个或多个数据单元,设得到了kv个数据单元;

再按照s603对得到的数据单元进行分类:s602步骤得到的数据单元可能有两类,第一类是以分块向量v结尾的数据单元,第二类是数据文件的最后一个数据单元,即以b结尾的数据单元;其中第二类的数据单元的数量只能是1或者0,第一类数据单元的数据量也可能为0,这取决于数据文件的具体内容;

s604对数据文件进行s601~s603循环扫描,分块向量v增加1,如果v≤137,则返回s601,否则继续s603,

上述s601~s603步骤=是一个循环,基于0到255的每个分块向量值进行文件扫描,从而获得了多种数据单元分割形式,数量从k0到k255;但是,本发明方法实施例的举例为循环的形式只是为了叙述方便,实际应用中,本领域技术人员可以了解,可以只对数据文件进行一遍扫描就完成上述138个循环,从而提高执行效率;

对k0到k138按照从大到小进行排序(如果有相等的kv,则下标大的在前),获取排在最前的(即最大的)6个值,假设为kv1,kv2,kv3,kv4,kv5,kv6;

如前所述,如果一个数据单元的结尾字节是x,则将该数据单元发送到server(x);

再进一步的,所述s8将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测的具体步骤包括:

s801通过数据库服务器计算接收到的数据单元的哈希值;

s802根据哈希值判断该数据单元是否为重复数据;

s803将判断结果发送给接口服务器;

每个数据库服务器对接收到的每个数据单元,计算其哈希值,根据该哈希值判断该数据单元是否是重复数据(即该数据单元与已存储的数据单元相同),将判断结果发送给接口服务器;

实施例二:

一种基于哈希算法电子公文数据的提取和去重系统,所述的系统具体包括分类设置模块、单元设置模块、选择存储模块、存储判断模块、向量设置模块、循环扫描模块、单元排序模块、重复检测模块和数据存储模块:

分类设置模块:通过数据单元的最后一个字节对数据单元进行分类,设置对应的数据库服务器;

单元设置模块:设置结构服务器的最小数据的单元长度;

选择存储模块:接口服务器选择重复数据量最大的两种分单元方式指示相应的数据库服务器进行存储;

存储判断模块:判断电子公文数据单元是否重复,并通过数据库服务器进行存储;

向量设置模块:设置初始的分块向量,利用接口服务器准备对该数据文件机型数据分块;

循环扫描模块:接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描,获得多种数据单元切割形式;

单元排序模块:对数据单元的切割数量进行排序;

重复检测模块:将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测;

数据存储模块:接口服务器接收判断结果,通知相应数据库服务器进行存储;

首先使用分类设置模块通过数据单元的最后一个字节对数据单元进行分类,设置对应于每一类数据单元进行处理和存储的的数据库服务器,接着利用单元设置模块对结构服务器的最小数据的单元长度进行设置,对于需求提取+去重的数据文件,如果小于该最小长度,直接发送给该数据单元对应的数据库服务器,否则使用不同的结尾的字节对该数据文件分单元,分单元基于以下原则:除最后一块外,每一块的长度不小于该最小长度,且结尾的字节相同;在分单元数最多的六种分单元方式中,通过选择存储模块接口服务器选择重复数据量最大的两种分单元方式指示相应的数据库服务器进行存储,然后利用存储判断模块判断电子公文数据单元是否重复,并通过数据库服务器进行存储;

接着通过向量设置模块设置初始的分块向量,利用接口服务器准备对该数据文件机型数据分块,并通过循环扫描模块接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描,获得多种数据单元切割形式;再利用单元排序模块对数据单元的切割数量进行排序,通过重复检测模块将数据单元按照其结尾字节发送到相应的数据库服务器进行重复性检测,接口服务器接收判断结果,最后利用数据存储模块通知相应数据库服务器进行存储;

进一步的,所述存储判断模块具体包括计算模块、确认模块、处理模块a和处理模块b:

计算模块:计算该电子公文数据文件的哈希值;

确认模块:利用哈希值判断该数据文件是否已经存储在服务器中;

处理模块a:已存储,则该电子公文数据文件是重复文件,仅为该数据文件保留一个指针;

处理模块b:未存储,则存储该数据文件和其哈希值。

进一步的,所述循环扫描模块具体包括定位模块、标记模块、分类模块和循环模块:

定位模块:接口服务器从该数据文件的第minblocklength个字节开始向后循环扫描;

标记模块:将标记位置最为一个数据单元的结尾,对数据文分单元得到数据单元;

分类模块:对得到的数据单元进行分类;

循环模块:对数据文件进行s601~s603循环扫描。

再进一步的,所述重复检测模块的具体步骤包括接收模块、判定模块和通知模块:

接收模块:通过数据库服务器计算接收到的数据单元的哈希值;

判定模块:根据哈希值判断该数据单元是否为重复数据;

通知模块:将判断结果发送给接口服务器。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1