业务数据处理方法及装置、电子设备、计算机可读介质与流程

文档序号:18747405发布日期:2019-09-24 20:20阅读:194来源:国知局
业务数据处理方法及装置、电子设备、计算机可读介质与流程

本公开涉及数据处理技术领域,具体而言,涉及一种业务数据处理方法、一种业务数据处理装置、电子设备、计算机可读介质。



背景技术:

随着互联网技术的快速发展,线上及线下的业务数量也急剧增长。由于数据业务频率的大幅度提高,对业务数据处理的准确性和实时性要求也越来越高。而现有的线上对账平台所采用的对账方法一般包括:合并文件;文件排序;以及逐行取出核对。由于这种对账方式工作效率较低,现有技术对其进行了一定的改进,包括:首先对文件进行切割,并组装为map(映射),然后按key取值核对。

虽然这样的对账方式对工作效率有一定的提高,但仍然存在一定的缺陷和问题,例如:组装为map(映射)的过程耗时过长,从而使该对账方法的整体时间变长,不能满足交易平台对于对账实时性的需求。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开提供一种业务数据处理方法、一种业务数据处理装置、电子设备以及计算机可读介质,能够至少部分地或者全部地解决上述现有技术中存在的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的一个方面,提供一种业务数据处理方法,包括:获取第一有序字典树和第二有序字典树,其中所述第一有序字典树和所述第二有序字典树分别根据第一对象和第二对象的业务数据的层级关系创建;分别将所述第一有序字典树和所述第二有序字典树的各叶子节点的数据转换成二进制数据存储;对所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行比较操作,获得所述第一对象和所述第二对象的业务数据之间的差异。

在本公开的一种示例性实施例中,所述对所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行比较操作,获得所述第一对象和所述第二对象的业务数据之间的差异,包括:将所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行异或操作,获得比较结果;当所述比较结果不为零时,判定相应位置的所述第一对象和所述第二对象的业务数据之间存在差异。

在本公开的一种示例性实施例中,所述当所述比较结果不为零时,判定相应位置的所述第一对象和所述第二对象的业务数据之间存在差异,包括:将所述第一有序字典树和所述第二有序字典树的各叶子节点的二进制数据划分为第一部分和第二部分;当所述第一有序字典树的叶子节点的第一部分与相应的所述第二有序字典树的叶子节点的第一部分的比较结果不为零时,判定相应位置的所述第一有序字典树或者所述第二有序字典树缺少业务数据;当所述第一有序字典树的叶子节点的第二部分与相应的所述第二有序字典树的叶子节点的第二部分的比较结果不为零时,判定相应位置的所述第一有序字典树或者所述第二有序字典树的业务数据出错。

在本公开的一种示例性实施例中,所述第一有序字典树和所述第二有序字典树的各叶子节点包括合作方标识、门店标识、设备标识、记录标识、金额、日切时间和交易状态的二进制数据。

在本公开的一种示例性实施例中,所述叶子节点的第一部分包括合作方标识、门店标识、设备标识和记录标识的二进制数据,所述叶子节点的第二部分包括金额、日切时间和交易状态的二进制数据。

在本公开的一种示例性实施例中,所述第一有序字典树和所述第二有序字典树的各层数据按照从左至右从小到大的顺序排列。

在本公开的一种示例性实施例中,所述第一有序字典树和所述第二有序字典树的各叶子节点包括相应中间层级节点的数据。

在本公开的一种示例性实施例中,所述比较操作是将所述第一字典树和所述第二字典树的各叶子节点的二进制数据进行分段分布式执行。

在本公开的一种示例性实施例中,所述方法还包括:统计所述第一对象和所述第二对象的业务数据之间的差异;根据统计结果对所述第一对象和所述第二对象的业务数据之间的差异进行分类,生成鱼骨图。

根据本公开的一个方面,提供一种业务数据处理装置,包括:字典树获取模块,用于获取第一有序字典树和第二有序字典树,其中所述第一有序字典树和所述第二有序字典树分别根据第一对象和第二对象的业务数据的层级关系创建;数据格式转换模块,用于分别将所述第一有序字典树和所述第二有序字典树的各叶子节点的数据转换成二进制数据存储;数据比较模块,用于对所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行比较操作,获得所述第一对象和所述第二对象的业务数据之间的差异。

根据本公开的一个方面,提供一种电子设备,包括存储器、处理器及存储在该存储器上并可在该处理器上运行的计算机程序,该程序被该处理器执行时实现上述任一实施例中的方法步骤。

根据本公开的一个方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例中的方法步骤。

根据本公开某些实施例中的业务数据处理方法及装置、电子设备、计算机可读介质,通过分别对不同对象的业务数据创建有序字典树,并将有序字典树的各叶子节点的数据转换成二进制数据存储,然后利用该二进制数据进行比较操作,从而获取不同对象的业务数据之间的差异。通过利用将业务数据转化为有序字典树的形式,并将有序字典树的叶子节点转换为二进制数进行比较,可以有效的提高业务数据差异对比的执行速度,进而满足业务数据处理实时性和准确性的要求。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。

图1是根据一示例性实施方式示出的一种业务数据处理方法的流程图。

图2是根据一示例性实施方式示出的一种业务数据差异判断方法的流程图。

图3是根据一示例性实施方式示出的一种有序字典树的结构示意图。

图4是根据一示例性实施方式示出的一种业务数据处理装置的示意图。

图5是根据一示例性实施方式示出的一种电子设备的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。

图1是根据一示例性实施方式示出的一种业务数据处理方法的流程图。

如图1所示,该业务数据处理方法可以包括以下步骤。

在步骤s101中,获取第一有序字典树和第二有序字典树,其中所述第一有序字典树和所述第二有序字典树分别根据第一对象和第二对象的业务数据的层级关系创建。

在示例性实施例中,所述的第一对象和第二对象可以是需要进行业务数据比对的不同用户,例如,第一对象和第二对象可以分别是需要进行对账操作的银行与商户,或者是需要进行对账操作的客户与客户,其业务数据为对账数据;或者是需要进行数据一致性校验的不同部门或用户。本公开对业务数据的具体类型不做特殊限定。

在本实施例中,参考图3所示,在根据业务数据的层级关系创建有序字典树时,可以使第一有序字典树和第二有序字典树的各层数据按照一定规则有序排列,例如采用从左至右从小到大的顺序排列。当然,在本公开的其他示例性实施例中,上述有序字典树的各层数据也可以按照从左至右、由大到小的顺序进行排列。

上述的有序字典树还可以被称为前缀树、字典树或单词搜索树。作为一种有序树,有序字典树的键并不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。

举例来说,参考图3所示,上述的第一对象为需要进行对账操作的商户,其业务数据的层级关系包括:多个合作方,一合作方可以包含有多个门店,一个门店可以设置有多个设备用于收款,并且每一个设备可以有对应的多条支付记录。可以根据图中的合作方、门店、设备以及支付记录之间的层级关系建立有序字典树,并且将支付记录作为叶子节点。

其中,支付记录可以包括支付记录标识、交易金额、交易状态以及日切时间等信息。其中,交易状态可以包括:交易成功、交易退款等等,并可以分别利用不同的状态码进行表示,如交易成功状态码为8,交易退款状态码为10等。日切时间是指更换系统记账的时间;系统从当前工作日切换到下一工作日,日切过程中交易可以照常提交并正确处理返回。例如,某交易实际成交时间是2018年1月18日12点20分40秒,则日切时间就是2018/1/18。

此外,在叶子节点中还可以还包含相应中间层级节点的数据,例如:合作方标识、门店标识以及设备标识,即各叶子节点可以包含数据一致性校验所需要的完整信息。

如图3中所示,上述的各标示可以采用身份编码(id)的形式。图3中所示合作方id、门店id、设备id以及支付记录id的对应编号仅为示意性的举例,并不是对合作方、门店、设备以及支付记录具体数量的限定。

在步骤s102中,分别将所述第一有序字典树和所述第二有序字典树的各叶子节点的数据转换成二进制数据存储。

在示例性实施例中,在数据库中,有序字典树中各项数据均可以以十进制的形式存储。在根据对象的业务数据生成有序字典树后,可以将有序字典树的各叶子节点所包含的信息利用bitmap算法转换为二进制数据。例如,可以将各叶子节点中所包含的:合作方id、门店id、设备id、支付记录id、交易金额、日切时间以及交易状态等信息均通过bitmap算法转换为二进制的形式来进行存储。bitmap算法采用一个bit位来标记某个元素对应的value,而key即是这个元素。通过采用bit为单位来存储数据,因此可以极大的节省存储空间。

举例来说,参见下表1所示,为有序字典树中一叶子节点中各信息的二进制表示,其中,合作方id、门店id、设备id及支付记录id采用16位二进制数表示,交易金额采用24位二进制数表示,日切时间采用32位二进制数表示,交易状态采用4位二进制数表示。则作为该叶子节点的实际存储值应当为:

1010101010010001101010101001000110101010100100011010101010010001101010101001000110101010101010101001000110101010100100011010。

表1

在步骤s103中,对所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行比较操作,获得所述第一对象和所述第二对象的业务数据之间的差异。

在示例性实施例中,上述的步骤s103具体可以包括:

步骤s1031,将所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行异或操作,获得比较结果;

步骤s1032,当所述比较结果不为零时,判定相应位置的所述第一对象和所述第二对象的业务数据之间存在差异。

举例来说,在将第一对象和第二对象的业务数据的有序字典树的各叶子节点均转换为二进制数后,便可以对相应位置的叶子节点进行比对,判断两组业务数据之间是否存在差异。举例来说,比对方式可以采用异或操作,异或逻辑可以表示为:当a、b不同时,输出p=1;当a、b相同时,输出p=0。因此,若两组数据异或操作后的结果为零,则说明两组数据完全相同;若两组数据异或操作的结果不为零,则说明两组数据存在差异。

基于上述内容,在示例性实施例中,参考图2所示,在异或操作结果不为零,即判断两组数据存在差异时,上述方法还可以包括:

步骤s1041,将所述第一有序字典树和所述第二有序字典树的各叶子节点的二进制数据划分为第一部分和第二部分;

步骤s1042,当所述第一有序字典树的叶子节点的第一部分与相应的所述第二有序字典树的叶子节点的第一部分的比较结果不为零时,判定相应位置的所述第一有序字典树或者所述第二有序字典树缺少业务数据;

步骤s1043,当所述第一有序字典树的叶子节点的第二部分与相应的所述第二有序字典树的叶子节点的第二部分的比较结果不为零时,判定相应位置的所述第一有序字典树或者所述第二有序字典树的业务数据出错。

通过将各叶子节点的数据进行划分,可以对产生数据差异的原因进行分析,例如,缺少数据,或数据错误。举例来说,可以将上述的叶子节点中上所包含的合作方id、门店id、设备id以及交易记录id中的一项或多项作为第一部分,并可以根据该第一部分确定唯一的一条记录。再将交易金额、交易状态以及日切时间作为第二部分,可以利用该第二部分判断该唯一的一条记录的具体数据是否存在差异。

例如,在对账操作时,可以先对各叶子节点的第一部分进行比对。由于有序字典树中的叶子节点从左至右高度有序,当存在缺少业务数据的情况时,若第一有序字典树对应的数值小于第二有序字典树对应的数值,则说明第二有序字典树中缺少相应的业务数据,即第一有序字典树为单边。若第一有序字典树对应的数值大于第二有序字典树对应的数值,则说明第一有序字典树缺少相应的业务数据,即第二有序字典树为单边。例如,可能为第一有序字典树或第二有序字典树缺少设备id或交易记录id等。

在叶子节点第一部分比对完成后,可以对第二部分的具体数据进行比对。若第二部分的数据比对存在差异,则说明该叶子节点对应业务数据中存在数据错误。例如,可能为交易金额、交易状态或日切时间中的一项或多项不一致。

举例来说,在电商平台与银行分别生成对账单进行对账操作时,假设银行一侧存在1万条支付记录,而电商平台一侧缺少第4988条支付记录,则电商平台取1万条支付记录与银行进行对账时,实际应当对应银行一侧的10001条记录。当银行的第4988条支付记录第一次对比时,比较的实际上是电商平台的第4989条支付记录。由于字典树是严格排序的,所以在第一部分比较时,电商平台支付记录数据的第一部分会大于银行支付记录数据的第一部分,此时说明电商平台一侧缺少了一条支付记录。此时会相应的用银行的第4989条支付记录与电商平台的第4989条支付记录进行对比。最终,银行一侧的业务数据会比电商平台少一条,即银行一侧缺少第10001条支付记录,此时银行一侧可以向后取一段业务数据继续与电商平台的业务数据进行比对即可。

在本公开的其他示例性实施例中,在进行比较操作时,为了提高执行速度,上述的方法还可以包括:可以将所述第一有序字典树和所述第二有序字典树的各叶子节点的二进制数据进行分段分布式执行。

举例来说,可以对需要进行数据一致性校验的第一对象和第二对象分别截取相同大小的数据,并开始校验操作。若出现数据条数不一致的情况,由于有序字典树具有有序性,可以在少数据的一侧按顺序获取相应数量的数据并开始对账即可。取数据的时间复杂度可以为o(1)。

此外,在进行对账操作时,还可以分别对第一对象和第二对象的数据进行分段,并将各段数据在不同的设备上同时进行比较操作,从而可以有效的提高数据比较的效率,极大的缩短数据比对所消耗的时间。

另外,在本公开的其他示例性实施例中,还可以对业务数据加载耗时、业务数据比较操作耗时等时间进行统计,获取业务数据数量对整体耗时的影响,从而获取该业务数据处理方法的合理的数据量区间。

在示例性实施例中,上述的业务数据处理方法还可以包括:

步骤s1051,统计所述第一对象和所述第二对象的业务数据之间的差异;

步骤s1052,根据统计结果对所述第一对象和所述第二对象的业务数据之间的差异进行分类,生成鱼骨图。

在获取第一对象和第二对象之间的数据差异后,可以将数据差异生成鱼骨图。通过鱼骨图对数据差异进行分类,可以分析和判断导致数据差异的原因。例如,根据鱼骨图可以判断导致数据差异的原因产生于门店、设备或网络等等。

举例而言,假设电商平台存在网络故障,若银行已经收到顾客的一支付记录,而电商平台由于网络原因未能将该条支付记录进行同步,则此时电商平台缺少该支付记录。或者,若银行已经收到顾客的一支付记录,但支付平台在第二天将该笔支付进行冲正,而银行只提供前一天的账单信息,电商平台的账单会以最新的交易状态记录,从而导致电商平台的这条支付记录和银行的这条记录的交易状态不一致。此时,通过鱼骨图便可以将缺少支付记录,或交易状态不一致的该条支付记录进行分类,进而分析其原因。另外,若某一设备在银行一侧经常出现支付成功,而在电商平台一侧对应的经常出现冲正状态,则可以将其利用鱼骨图对其原因进行分析,并可以根据冲正率判断是否为设备故障。

本公开实施方式提供的业务数据处理方法,可以应用于线上对账平台、小商户等不同领域需要进行数据一致性校验的用户。一方面,通过将有序字典树的各叶子节点的具体数据利用bitmap算法转换为二进制数,可以极大的节省存储空间,并且便于后续的差异处理。另一方面,通过利用bitmap算法的异或操作来计算两对象之间的业务数据是否有差异,可以准确、快速的对业务数据之间的差异进行判断和定位。通过将业务数据转化为有序字典树,再将有序字典树中各叶子节点的具体数据利用bitmap算法转换为二进制数进行比较操作,能够有效的缩短数据转换所消耗的时间,从而有效的提高数据比较的执行速度,进而满足数据比较的实时性要求。另外,通过将业务数据之间的差异进行分类并生成鱼骨图,可以方便用户快速、准确的对产生数据差异的原因进行分析。图4是根据一示例性实施方式示出的一种业务数据处理装置的框图。

如图4所示,该搜索装置20可以包括字典树获取模块201、数据格式转换模块202以及数据比较模块203。

字典树获取模块201可以用于获取第一有序字典树和第二有序字典树,其中所述第一有序字典树和所述第二有序字典树分别根据第一对象和第二对象的业务数据的层级关系创建。

数据格式转换模块202可以用于分别将所述第一有序字典树和所述第二有序字典树的各叶子节点的数据转换成二进制数据存储。

数据比较模块203可以用于对所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行比较操作,获得所述第一对象和所述第二对象的业务数据之间的差异。

需要说明的是,上述发明实施例中的业务数据处理装置的模块的具体实现可以参照上述图1所示的发明实施例中的业务数据处理方法的内容,在此不再赘述。

根据本公开的另一示例性实施方式,还提供了一种电子设备,其可以包括存储器、处理器及存储在该存储器上并可在该处理器上运行的计算机程序,其中,该程序被该处理器执行时实现上述图1所示的发明实施例中的方法步骤。

下面参考图5,其示出了适于用来实现本申请实施例的电子设备400的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图5所示,电子设备400包括处理器401,其可以根据存储在存储器403中的程序而执行各种适当的动作和处理。特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码,在该计算机程序被处理器401执行时,执行本申请的系统中限定的上述功能。处理器401、存储器403以及通信接口402通过总线彼此相连。

附图中的流程图和框图,图示了按照本申请各种实施例的终端、服务端、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中。

作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取第一有序字典树和第二有序字典树,其中所述第一有序字典树和所述第二有序字典树分别根据第一对象和第二对象的业务数据的层级关系创建;分别将所述第一有序字典树和所述第二有序字典树的各叶子节点的数据转换成二进制数据存储;对所述第一有序字典树和所述第二有序字典树相应位置的叶子节点的二进制数据进行比较操作,获得所述第一对象和所述第二对象的业务数据之间的差异。

以上具体地示出和描述了本公开的示例性实施方式。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

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