文件比对方法及装置制造方法

文档序号:6489780阅读:135来源:国知局
文件比对方法及装置制造方法
【专利摘要】本发明提出了一种文件比对方法,包括:比较待比对的文件的大小,如果所述待比对的文件的大小不一致则确定所述待比对的文件是不同的;否则,对于所述待比对的文件,使用哈希函数进行编码得到相应的变换数据集;比较各个变换数据集;以及如果变换数据集相同则比较待比对的文件。通过使用本发明,可以快速地实现大信息量文件的比对。
【专利说明】文件比对方法及装置
【技术领域】
[0001]本发明总体上涉及计算机信息处理领域,尤其涉及大信息量文件的快速处理技术。
【背景技术】
[0002]信息时代的一个重要特征是信息量的高速膨胀。例如在金融领域,随着金融行业的飞速发展,金融交易文件的数量和文件大小均快速增长,金融流水文件的文件信息量巨大,行数在十万以上。此外其还具有以下特点:1)以行为单位;2)行与行之间没有约束关系,以随机形式插入到文件中。在金融交易系统的并行测试工作中,需要比对两批近似流水文件之间的所有不同处,以确认系统的测试结果。面对动辄30G以上的海量流水文件,如何以较小的代价快速比较这些文件,成为当前测试工作中一个难题。
[0003]现有金融流水文件的比对方法是:依次把待比较的两批近似文件解压、排序、文件可视化比对工具比对(例如Beyond Compare>Diff命令),其中使用Beyond Compare还必须拷贝海量金融流水文件到Windows平台;同时为了提升速度,采用空间换取时间的方法,即使用多机服务器集群架构,利用物理机器的并行计算去解决单机计算瓶颈。现有方法对IG以内的文件比对是简洁快速的,但处理海量流水文件的比对非常慢,总共时间达到了 7小时以上。现有方法还存在以下的缺点:从经济角度来看,使用服务器集群缩短近似比对的时间,但是服务器集群的运行维护成本较高,需要消耗的大量能源,所花费的代价较大;从技术角度来看,需要不必要的文件排序步骤,耗费系统内存、CPU、1/0资源,步骤太多,需要过多人工干预。因此,到现在为止还没有切实可行的实用技术解决金融行业所要求的基于关键域的海量文件近似比对技术。因而,研究快速的近似比对算法和近似比对策略显得尤为重要。

【发明内容】

[0004]为了至少解决上述问题的一个方面,本发明提出了一种文件比对方法,包括:对于待比对的文件,使用哈希函数进行编码得到相应的变换数据集;以及比较各个变换数据集。
[0005]上述文件比对方法中所述使用哈希函数进行编码的步骤包括将所述待比对的文件的每一个中的数据对一个预定数值取余数得到取余结果数据,并在所述变换数据集中记录冲突的数目和位置。
[0006]上述文件比对方法中所述待比对的文件包括文件一和文件二,所述方法还包括:扫描文件一的变换数据集,如果其中存在和文件二的变换数据集中相同的取余结果数据,那么将所述文件一和所述文件二中的冲突的数目分别减一,否则,继续扫描文件一的变换数据集,直到文件一的变换数据集被扫描和处理完毕为止;如果最后的文件一的变换数据集的冲突数不为0,则说明文件一不是文件二的子集,文件一变换数据集中冲突数为非O所对应的行数列记录了文件一比较文件二过程中的差异行;输出文件一比较文件二的差异行;以及扫描文件二的变换数据集,如果其中存在和文件一的变换数据集中相同的取余结果数据,那么将所述文件二和所述文件一中的冲突的数目分别减一,否则,继续扫描文件二的变换数据集,直到文件二的变换数据集被扫描和处理完毕为止;如果最后的文件二的变换数据集的冲突数不为O,则说明文件二不是文件一的子集,且文件二变换数据集中冲突数为非O所对应的行数列记录了文件二比较文件一过程中的差异行,输出文件二比较文件一的差异行。
[0007]上述文件比对方法中所述使用哈希函数进行编码的步骤包括将待比对的文件中的每一行数据建立哈希散列,让哈希值均匀分布。
[0008]本发明还提出了一种文件比对方法,包括:比较待比对的文件的大小,如果所述待比对的文件的大小不一致则立即确定所述待比对的文件是不同的;否则,对于所述待比对的文件,使用哈希函数进行编码得到相应的变换数据集;比较各个变换数据集;以及如果变换数据集相同则比较待比对的文件,否则结束本轮比较。
[0009]上述文件比对方法中所述使用哈希函数进行编码的步骤包括将所述待比对的文件中的每一个的数据对一个预定数值取余数得到取余结果数据,并在所述变换数据集中记录冲突的数目和位置。
[0010]上述文件比对方法中所述待比对的文件包括文件一和文件二,所述方法还包括:扫描文件一的变换数据集,如果其中存在和文件二的变换数据集中相同的取余结果数据,那么将所述文件一和所述文件二中的冲突的数目分别减一,否则,继续扫描文件一的变换数据集,直到文件一的变换数据集被扫描和处理完毕为止;如果最后的文件一的变换数据集的冲突数不为0,则说明文件一不是文件二的子集,文件一变换数据集中冲突数为非O所对应的行数列记录了文件一比较文件二过程中的差异行;输出文件一比较文件二的差异行;以及扫描文件二的变换数据集,如果其中存在和文件一的变换数据集中相同的取余结果数据,那么将所述文件二和所述文件一中的冲突的数目分别减一,否则,继续扫描文件二的变换数据集,直到文件二的变换数据集被扫描和处理完毕为止;如果最后的文件二的变换数据集的冲突数不为0,则说明文件二不是文件一的子集,且文件二变换数据集中冲突数为非O所对应的行数列记录了文件二比较文件一过程中的差异行,输出文件二比较文件一的差异行。
[0011]上述文件比对方法中中所述使用哈希函数进行编码的步骤包括将待比对的文件中的每一行数据建立哈希散列,让哈希值均匀分布。
[0012]本发明还提出了一种文件比对装置,包括:文件大小比较设备,用于比较待比对的文件的大小,如果所述待比对的文件的大小不一致则确定所述待比对的文件是不同的;哈希函数编码设备,对于大小一致的待比对的文件,使用哈希函数进行编码得到相应的变换数据集;变换数据集比较设备,用于比较各个变换数据集;以及文件比较设备,用于在变换数据集相同时比较待比对的文件。
[0013]上述文件比对装置中所述哈希函数编码设备包括:取余数装置,用于将所述待比对的文件中的每一个的数据对一个预定数值取余数得到取余结果数据,以及记录装置,用于在所述变换数据集中记录冲突的数目和位置。
[0014]通过使用本发明,可以快速地实现大信息量文件的比对。
【专利附图】

【附图说明】[0015]为便于理解,下面参照附图通过非限定性例子来描述本发明的实施例,其中:
图1示出了一种文件比对的主要流程;
图2是一种文件比对方案的模块结构图;
图3示出了一种文件比对的流程;
图4示出了一种快速文件比对方法。
【具体实施方式】
[0016]除非另加具体说明,正如从以下论述中也可以认识到的那样,在本说明书的通篇中,利用诸如“处理”、“计算”、“确定”之类术语的论述表示使用诸如计算机或类似电子计算装置之类的特定设备的动作或过程。在本说明书的上下文中,计算机或者类似电子计算装置能够操纵或变换信号。这些信号在计算机或类似电子计算装置的存储器、寄存器或者其它信息存储装置、传输装置或者显示装置中通常表示为物理电子或磁量。例如,电子计算装置可以包括执行一个或更多的特定功能的一个或更多的处理器。
[0017]根据本发明的一个方面,使用哈希函数来进行文件的比对。这里的文件是金融流水文件,但也可能是其它类型的文件。对于待比对的文件,使用哈希函数进行编码得到相应的变换数据集,然后比较各个变换数据集。哈希就是把任意长度的输入通过散列算法变换成固定长度的输出。如果在结构中存在和一关键字K相等的记录,则必定在f (K)的存储位置上。由此,不需比较便可直接取得所查记录。这个对应关系就是哈希函数。
[0018]假设有待比对的两个文件,分别为文件A和文件B。根据本发明,使用哈希函数对A和B分别进行编码,得到变换数据集Al和BI。通过比较Al和BI来近似得出A和B的关系O
[0019]根据本发明的一个方面,使用哈希函数进行编码的步骤包括将待比对的文件的每一个中的数据对一个预定数值取余数,并记录冲突的数目和位置在变换数据集中。这里所称的冲突,正如本领域的技术人员所理解的那样,指的是对不同的关键字得到同一散列地址的现象。
[0020]假设待比对的文件包括文件一和文件二,要获取二者之间的关系,可以先扫描文件一的变换数据集,如果其中存在和文件二的变换数据集中相同的取余结果数据,那么将所述文件一和所述文件二中的冲突的数目分别减一。
[0021]如果没有发现相同的取余结果数据,则继续扫描文件一的变换数据集,直到文件一的变换数据集被扫描和处理完毕为止。如果最后的文件一的变换数据集的冲突数不为0,则说明文件一不是文件二的子集。文件一变换数据集中冲突数为非O的数所对应的行数列记录了文件一比较文件二过程中的差异行,可以将文件一比较文件二的差异行作为结果的一部分输出。
[0022]接着同样扫描文件二的变换数据集。如果其中存在和文件一的变换数据集中相同的取余结果数据,那么将所述文件二和所述文件一中的冲突的数目分别减一。如果没有发现相同的取余结果数据,继续扫描文件二的变换数据集,直到文件二的变换数据集被扫描和处理完毕为止。如果最后的文件二的变换数据集的冲突数不为0,则说明文件二不是文件一的子集。文件二变换数据集中冲突数为非O所对应的行数列记录了文件二比较文件一过程中的差异行,可以将文件二比较文件一的差异行作为结果的一部分输出。[0023]其中,如果文件一的变换数据集中存在和文件二的变换数据集中相同的取余结果数据,那么将文件一和文件二中的冲突的数目分别减一,如果最终文件二的变换数据集中的冲突的数目不为零,则文件二不是文件一的子集。如果最终文件一的变换数据集中的冲突的数目不为零,则文件一不是文件二的子集。
[0024]上述方法是文件的近似比对方法,根据本发明的又一个方面,这里还提出了一种快速比对的方法。该方法如图1所示。首先进行文件大小一致性检查,大小不一致就直接返回结果,即待比对的文件是不同的。否则,如果大小一致,使用哈希函数进行编码得到相应的变换数据集并比较各个变换数据集,如果变换数据集不一致也说明待比对的文件是不同的。如果变换数据集也是一致的,则再比较待比对的文件。
[0025]根据本发明的又一个方面,这里提出了一种文件比对装置。该装置包括文件大小比较设备、哈希函数编码设备、变换数据集比较设备以及文件比较设备。其中,文件大小比较设备用于比较待比对的文件的大小,如果待比对的文件的大小不一致则确定待比对的文件是不同的。哈希函数编码设备用于对大小不一致的待比对的文件使用哈希函数进行编码得到相应的变换数据集。变换数据集比较设备用于比较各个变换数据集。文件比较设备用于在变换数据集相同时比较待比对的文件。
[0026]哈希函数编码设备可包括取余数装置和记录装置。前者用于将待比对的文件中的每一个的数据对一个预定数值取余数得到取余结果数据。后者用于在变换数据集中记录冲突的数目和位置。
[0027]图2示出了根据本发明的又一个方面,使用包括五个模块的装置来进行文件的比对的示意图。第一个模块是调度控制模块,调度控制接口。该模块支持多进程调度,文件比对任务的实时发起、暂停、终止。采用快速制胜的策略,查找目录下面文件,如果是文件首先比较两个文件的文件名和大小是否匹配,如果一致再进一步调用文件比对模块进行行数据计算哈希值建立索引比较;如果不是文件而是目录就递归调用自己。
[0028]第二个模块是文件比对模块。该模块首先遍历文件A的所有行,对文件A的行数据关键域建立索引数组,采用高效率的行压缩技术以及低耦合的散列技术在内存中建立文件A索引表;然后遍历文件B的各行,比较B中的各行数据的哈希值是否在A的索引表中存在,如果不存在,则表示该行是两个文件的不同处,输出这行的信息。如果文件A与文件B相比是一致的,则反过来用相同的方法把文件B与文件A相比。
[0029]第三个模块是任务配置模块。该模块用于设置文件白名单、文件黑名单、文件行的待比较关键域和比对策略;确定哪些文件比对,哪些文件不比对;配置文件的关键域实现了文件的近似比对功能;以及确定是否选择快速制胜的比对策略。
[0030]第四个模块是结果加工模块。该模块把文件比对模块输出的结果根据个性化设置展示给测试人员,增强结果的易读性。具体地,可以按照文件标准规范,拆分文件比对模块输出的所有不同处记录到特定文件,例如Excel文件中,并且可以将不一致的文件部分使用醒目的颜色标记。
[0031]第五个模块是日志输出模块。该模块把上述方法中所有操作的过程信息输出到日志中,方便测试人员分析查找比对过程中的详细操作记录。
[0032]图2同时示出了文件的比对方法的主要流程,包括以下几个步骤:
(I)比对任务的配置步骤:比对人员根据比对任务要求规划好程序的输入目录、输出目录;配置需要比对文件的白名单、黑名单、对文件的关键域进行匹配等设置;在控制主机上面配置比对任务不影响正在进行的比对任务,具有高度的灵活性。
[0033](2)比对任务的执行步骤:比对人员执行配置好的比对任务,任务调度模块负责调度评估系统当前的负载情况,按照任务的大小、时间敏感度来分配进程数量,并调度多个进程并发工作,记录每个进程的任务执行情况,对任务具有实时发起、暂停、终止的权力。
[0034](3)子模块的调用步骤:调度控制接口按照各个接口参数调用其他子模块,对比对任务的过程进行监控,对其比对的结果进行确认并与其他机器的结果进行整合,反馈给进程下一项任务。
[0035]文件比对模块可以参考图3所示的技术实现方法。例如,I)以文件A比较文件B,则进行以下步骤:
取文件A,使用hash函数对A的每一行内容进行编码,hash到N行的二维数组,数组A[i] = {索引值i,冲突标识cfi,行号ai}。
[0036]取文件B的每一行进行hash,同样hash到N的二维数组里面,数组B [ j] = {索引值」,冲突标识0幻,行号1^_}。 [0037]对B[j]数来说,取索引为j到数组A里面进行查找,A[j] = {索引值j,冲突标识cfj,行号aj},于是使用B文件的第bj行比较A文件的ai行,进行的是行与行的比较。完全一致的时候,继续下一次比较,这个时候删除A和B中对应的索引记录,冲突数减去1,减到O为止。读取文件B索引的最终状态,获取不一致行号并输出到B的日志文件。
[0038]查看文件B的索引表中的冲突记录数目,当Cfj=O时,说明文件B中每一行内容均和文件A完全一致;当cfj !=0时,说明文件B中存在和文件A不一致的行号,并输出文件B对应的行的内容到日志文件中。
[0039]这里可以考虑四种情形: a) B没有冲突,A没有冲突。
[0040]假设Hash函数采用f (x)=A[i]%4,那么可以得到以下比对过程:
输入数据:
A={1,2, 3};
B={1};
比对过程的文件A、B的索引情况:
'I I 111 I — I K'
A = 2 I 2A = 2 i 2
τ I I^ -j
'I O χ.A= 2 I 2.3 I 3.B ~: I I 11B = i — IB = ι O \1
比对结果:
文件B中的内容是文件A的子集。
[0041]b) B没有冲突,A有冲突。
[0042]假设Hash函数采用f (X) =A[i]%4,那么可以得到以下比对过程:
输入数据:A={1,2, 3, 5};
B={1};
比对过程的文件A、B的索引情况:
【权利要求】
1.一种文件比对方法,包括: 对于待比对的文件,使用哈希函数进行编码得到相应的变换数据集;以及 比较各个变换数据集。
2.如权利要求1所述的文件比对方法,其中所述使用哈希函数进行编码的步骤包括将所述待比对的文件的每一个中的数据对一个预定数值取余数得到取余结果数据,并在所述变换数据集中记录冲突的数目和位置。
3.如权利要求2所述的文件比对方法,其中所述待比对的文件包括文件一和文件二,所述方法还包括: 扫描文件一的变换数据集,如果其中存在和文件二的变换数据集中相同的取余结果数据,那么将所述文件一和所述文件二中的冲突的数目分别减一,否则,继续扫描文件一的变换数据集,直到文件一的变换数据集被扫描和处理完毕为止;如果最后的文件一的变换数据集的冲突数不为O,则说明文件一不是文件二的子集,文件一变换数据集中冲突数为非O所对应的行数列记录了文件一比较文件二过程中的差异行;输出文件一比较文件二的差异行;以及 扫描文件二的变换数据集,如果其中存在和文件一的变换数据集中相同的取余结果数据,那么将所述文件二和所述文件一中的冲突的数目分别减一,否则,继续扫描文件二的变换数据集,直到文件二的变换数据集被扫描和处理完毕为止;如果最后的文件二的变换数据集的冲突数不为O,则说明文件二不是文件一的子集,且文件二变换数据集中冲突数为非O所对应的行数列记录了文件二比较文件一过程中的差异行,输出文件二比较文件一的差异行。
4.如权利要求1所述的文件比对方法,其中所述使用哈希函数进行编码的步骤包括将待比对的文件中的每一行数据建立哈希散列,让哈希值均匀分布。
5.一种文件比对方法,包括:` 比较待比对的文件的大小,如果所述待比对的文件的大小不一致则立即确定所述待比对的文件是不同的; 否则,对于所述待比对的文件,使用哈希函数进行编码得到相应的变换数据集; 比较各个变换数据集;以及 如果变换数据集相同则比较待比对的文件,否则结束本轮比较。
6.如权利要求5所述的文件比对方法,其中所述使用哈希函数进行编码的步骤包括将所述待比对的文件中的每一个的数据对一个预定数值取余数得到取余结果数据,并在所述变换数据集中记录冲突的数目和位置。
7.如权利要求6所述的文件比对方法,其中所述待比对的文件包括文件一和文件二,所述方法还包括: 扫描文件一的变换数据集,如果其中存在和文件二的变换数据集中相同的取余结果数据,那么将所述文件一和所述文件二中的冲突的数目分别减一,否则,继续扫描文件一的变换数据集,直到文件一的变换数据集被扫描和处理完毕为止;如果最后的文件一的变换数据集的冲突数不为O,则说明文件一不是文件二的子集,文件一变换数据集中冲突数为非O所对应的行数列记录了文件一比较文件二过程中的差异行;输出文件一比较文件二的差异行;以及扫描文件二的变换数据集,如果其中存在和文件一的变换数据集中相同的取余结果数据,那么将所述文件二和所述文件一中的冲突的数目分别减一,否则,继续扫描文件二的变换数据集,直到文件二的变换数据集被扫描和处理完毕为止;如果最后的文件二的变换数据集的冲突数不为O,则说明文件二不是文件一的子集,且文件二变换数据集中冲突数为非O所对应的行数列记录了文件二比较文件一过程中的差异行,输出文件二比较文件一的差异行。
8.如权利要求5所述的文件比对方法,其中所述使用哈希函数进行编码的步骤包括将待比对的文件中的每一行数据建立哈希散列,让哈希值均匀分布。
9.一种文件比对装置,包括: 文件大小比较设备,用于比较待比对的文件的大小,如果所述待比对的文件的大小不一致则确定所述待比对的文件是不同的; 哈希函数编码设备,对于大小一致的待比对的文件,使用哈希函数进行编码得到相应的变换数据集; 变换数据集比较设备,用于比较各个变换数据集;以及 文件比较设备,用于在变换数据集相同时比较待比对的文件。
10.如权利要求9所述的文件比对装置,其中所述哈希函数编码设备包括: 取余数装置,用于将所述待比对的文件中的每一个的数据对一个预定数值取余数得到取余结果数据,以及 记录装置,用于在所述变换数据集中记录冲突的数目和位置。
【文档编号】G06F17/27GK103729342SQ201210385557
【公开日】2014年4月16日 申请日期:2012年10月12日 优先权日:2012年10月12日
【发明者】尹祥龙, 万鑫明, 吴金坛, 吕苏, 马军, 杨惠娟, 高伟东, 周涛 申请人:中国银联股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1