一种外部数据集合运算方法及集合运算设备技术

技术编号:38558323 阅读:12 留言:0更新日期:2023-08-22 21:00
一种外部数据集合运算方法及集合运算设备,本发明专利技术涉及在银行系统在对账、数据处理过程中,存在大量的对两个文件进行并集、交集操作。使用数据库技术,耗时较多。本发明专利技术是在集合运算设备的内存中设置有三个哈希映射区,每个哈希映射区包括多个链表:并逐行读取第一文件和对比的第二文件,并将各行数据的哈希值、主键和主键值信息存储于哈希映射区中。再对各第一链表和各第二链表,进行左右关联算法,进行交并集运算,将内容不匹配的位置信息存储于第三哈希映射区,实现外部数据的集合运算。不占用数据库资源、不采用其他商用软件,无需再进行外部数据入库、结果导出等环节,比现有方式快50倍以上,对银行系统工作效率的提升意义重大。大。大。

【技术实现步骤摘要】
一种外部数据集合运算方法及集合运算设备
一、

[0001]本专利技术涉及在银行系统的对账的数据处理过程中,对结构化存储的文件中的数据进行信息处理领域,特别涉及一种基于HASH算法的内存和文件系统的集合运算集合运算方法及其集合运算设备。
二、
技术介绍

[0002]随着银行行业业务量的急剧增加,在对账、数据处理过程中经常需要对一般结构化存储的文件,两个文件中的数据进行并集、交集操作,其运算性能的高低势必会影响整个银行系统的性能。如何才能最大限度的提高外部数据集合的性能,已经是迫不及待要解决的问题。
[0003]提高外部数据集合的效率目的,是在对账、数据处理过程中,对一般结构化存储的文件,两个文件中的数据进行并集、交集操作,并提高其效率。在以前的系统中,是将两个文件入库后,进行集合运算,主要是通过SQL处理数据。处理完毕后再导出文件。若入库计算,需要频繁装载文件,对数据库频繁的操作,效率上必然会受到数据库性能的影响。
[0004]在当下,银行在集中对账过程中,需要每天对自有账务文件和对方账务信息进行勾对。每天可以高达百万组,找出各方不一致或遗漏、多记的记录。如此大量的数据需要对比,如果使用数据库技术,需要占用大量的计算机资源,耗时较多。且SQL处理操作效率低,消耗大量数据库计算资源。
三、
技术实现思路

[0005]本专利技术目的:为了解决上述问题,以不占用数据资源、不采用其他商用软件的前提下,提供了一种普遍而高效的外部数据集合算法。解决以前两个文件中的数据进行并集、交集操作效率较低的问题。实现了不依赖数据库的外部数据关联运算操作的问题;解决不占用数据库资源、不采用其他商用软件的前提下,提供了一种普遍而高效的外部数据集合算法和技术,且无需再进行外部数据入库、结果导出等环节。比现有先入库再关联方式快50倍以上。且时间复杂度可随数据量线性相关。
[0006]本专利技术的技术方案是:一种外部数据集合运算方法。其在于是,应用于集合运算设备,所述集合运算设备的内存中设置有三个哈希映射区,每个哈希映射区包括多个链表,所述集合运算方法包括:
[0007]逐行读取待运算的第一文件,并将各行数据的哈希值、主键和主键值信息存储于第一哈希映射区中与各行数据的哈希值对应的第一链表;
[0008]逐行读取待运算的第二文件,并将各行数据的哈希值、主键和主键值信息存储于第二哈希映射区中与各行数据的哈希值对应的第二链表;
[0009]基于各链表中存储的哈希值、主键和主键值信息,对各第一链表和各第二链表,进行交并集运算,并将运算结果存储于第三哈希映射区;
[0010]基于所述第三哈希映射组,生成运算结果文件,实现外部数据的集合运算。
[0011]更进一步,其在于,所述逐行读取待运算的第一文件,并将各行数据的哈希值、主键和主键值信息存储于第一哈希映射区中与各行数据的哈希值对应的第一链表,包括:
[0012]对于第一文件中的任一行数据,读取该行数据,并提取该行数据的主键和主键值信息;
[0013]基于散列算法,计算该行数据的哈希值;
[0014]基于该行数据的哈希值,和第一哈希映射区中第一链表的数量,确定与该行数据的哈希值对应的第一链表;
[0015]将该行数据的哈希值、主键和主键值信息,存储于与该行数据的哈希值对应的第一链表。
[0016]更详细说明是,在存储结构中,设有两个Hash桶列表,用于分别存储两个文件的索引,通过对两个索引的比对实现集合运算。
[0017]包括但不限于是,以下几个步骤:
[0018]步骤1:准备好待进行集合运算的两个需要对比文件存到内存中;
[0019]步骤2:分别设置两个文件的主键;
[0020]步骤3:在内存中构建HashMap结构HashMap1、HashMap2、HashJoinRes,其由链表(Link)组成;HashMap中链表数量为N,建议N的值为待处理数据量的0.01~0.1倍,且为素数。
[0021]步骤4:读取文件一的一行数据,提取主键F1k1、F1k2,将其连接后计算Hash值H。计算H除以链表数量N的余数S;将Hash值H、部分主键值信息Data存储在HashMap1的对应第S号链表中,直到文件一读取完毕。
[0022]步骤5:同样读取需对比文件二的一行数据,提取主键F2k1、F2k2,计算Hash值、余数S后将Hash值H、部分主键值信息Data存储在HashMap2的对应第S号链表中,直到对比文件二读取完毕。
[0023]步骤6:遍历HashMap1、HashMap2,并比较两边节点hash值和主键信息是否一致。若一致则创建HashJoin结构,将void*data1、void*data2分别指向HashMap1、HashMap2中的数据;并将HashJoin结构向HashJoinRes添加节点。
[0024]步骤7:遍历该HashJoinRes结构,输出至文件中即完成了两个文件不依赖数据库的内关联操作;
[0025]步骤8:若在HashMap2中查询不到HashMap1对应的hash值和主键信息时,将void*data1指向HashMap1中的数据,将void*data2指向空;实现了HashMap1左关联HashMap2的功能,即数据库左关联(Left Join)算法。
[0026]步骤9:若要实现右关联(Right Join),在HashMap1中查询不到HashMap2对应的信息时将void*data1赋空值,void*data2指向HashMap2中的信息即可实现。
[0027]其中HashJoin结构是由哈希值、部分原始数据、data1数据指针、data2数据指针、下一节点指针构成的。
[0028]更进一步,其在于是,所述基于该行数据的哈希值,和第一哈希映射区中第一链表的数量,确定与该行数据的哈希值对应的第一链表,包括:
[0029]基于所述第一链表的数量,对该行数据的哈希值,进行取余运算,得到余数S1;
[0030]将第一哈希映射区中第S1个第一链表,确定为该行数据的哈希值对应的第一链
表。
[0031]更进一步,其在于是,所述逐行读取待运算的第二文件,并将各行数据的哈希值、主键和主键值信息存储于第二哈希映射区中与各行数据的哈希值对应的第二链表,包括:
[0032]对于第二文件中的任一行数据,读取该行数据,并提取该行数据的主键和主键值信息;
[0033]基于散列算法,计算该行数据的哈希值;
[0034]基于该行数据的哈希值,和第二哈希映射区中第二链表的数量,确定与该行数据的哈希值对应的第二链表;
[0035]将该行数据的哈希值、主键和主键值信息,存储于与该行数据的哈希值对应的第二链表。
[0036]更进一步,其在于是,所述基于该行数据的哈希值,和第一哈希映射区中第一链表的数量,确定与该行数据的哈希值对应的第一链表,包括:
[0037]基于所述第二链本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种外部数据集合运算方法,其特征在于,应用于集合运算设备,所述集合运算设备的内存中设置有三个哈希映射区,每个哈希映射区包括多个链表,所述集合运算方法包括:逐行读取待运算的第一文件,并将各行数据的哈希值、主键和主键值信息存储于第一哈希映射区中与各行数据的哈希值对应的第一链表;逐行读取待运算的第二文件,并将各行数据的哈希值、主键和主键值信息存储于第二哈希映射区中与各行数据的哈希值对应的第二链表;基于各链表中存储的哈希值、主键和主键值信息,对各第一链表和各第二链表,进行交并集运算,并将运算结果存储于第三哈希映射区;基于所述第三哈希映射组,生成运算结果文件,实现外部数据的集合运算。2.根据权利要求1所述的外部数据集合运算方法,其特征在于,所述逐行读取待运算的第一文件,并将各行数据的哈希值、主键和主键值信息存储于第一哈希映射区中与各行数据的哈希值对应的第一链表,包括:对于第一文件中的任一行数据,读取该行数据,并提取该行数据的主键和主键值信息;基于散列算法,计算该行数据的哈希值;基于该行数据的哈希值,和第一哈希映射区中第一链表的数量,确定与该行数据的哈希值对应的第一链表;将该行数据的哈希值、主键和主键值信息,存储于与该行数据的哈希值对应的第一链表。3.根据权利要求2所述的外部数据集合运算方法,其特征在于,所述基于该行数据的哈希值,和第一哈希映射区中第一链表的数量,确定与该行数据的哈希值对应的第一链表,包括:基于所述第一链表的数量,对该行数据的哈希值,进行取余运算,得到余数S1;将第一哈希映射区中第S1个第一链表,确定为该行数据的哈希值对应的第一链表。4.根据权利要求1所述的外部数据集合运算方法,其特征在于,所述逐行读取待运算的第二文件,并将各行数据的哈希值、主键和主键值信息存储于第二哈希映射区中与各行数据的哈希值对应的第二链表,包括:对于第二文件中的任一行数据,读取该行数据,并提取该行数据的主键和主键值信息;基于散列算法,计算该行数据的哈希值;基于该行数据的哈希值,和第二哈希映射区中第二链表的数量,确定与该行数据的哈希值对应的第二链表;将该行数据的哈希值、主键和主键值信息,存储于与该行数据的哈希值对应的第二链表。5.根据权利要求4所述的外部数据集合运算方法,其特征在于,所述基于该行数据的哈希值,和第一哈希映射区中第一链表的数量,确定与该行数据的哈希值对应的第一链表,包括:基于所述第二链表的数量,对该行数据的哈希值,进行取余运算,得到余数S2;将第二哈希映射区中第S2个第二链表,确定为该行数据的哈希值对应的第二链表。6.根据权利要求1所述的外部数据集合运算方法,其特征在于,每个链表包括多个节点,一个节点存储第一文件或第二文件中一行数据的哈希值、主键和主键值信息;同一哈希
映射区的不同链表的哈希值不同,同一链表中不同节点的主键不同;所述基于各链表中存储的哈希值、主键和主键值信息,对各第一链表和各第二链表,进行交并集运算,并将运算结果存储于第三哈希映射区,包括:...

【专利技术属性】
技术研发人员:柴磊
申请(专利权)人:河北银行股份有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1