发明内容
本发明所要解决的技术问题是提供一种监控多数据库之间的数据一致性的方法,以在无需耗费人力的基础上实现多数据库数据一致性的监控,并达到有效节约成本及提高监控效率的目的。
本发明的另一个目的是将上述方法应用于实际中,提供一种监控多数据库之间的数据一致性的系统,以保证上述方法的实现和应用。
为解决上述技术问题,本发明提供了一种监控多数据库之间的数据一致性的方法,包括;
接收针对一业务数据在多数据库之间的数据一致性提交的验证请求信息,所述请求信息包括:所述业务数据的业务类型标识,以及,所述业务数据在所述多数据库之间进行关联的关键字段信息;
依据所述请求信息读取所述业务类型标识对应的配置信息,所述配置信息包括该类业务的数据处理规则及所访问的数据库信息;
根据所述关键字段信息在当前业务所访问的数据库中获取相应的业务数据;
依据当前业务的数据处理规则,校验所述业务数据是否满足一致性要求,并获得校验结果。
优选的,所述的方法,还包括:
通过日志、邮件或短信形式返回所述校验结果。
优选的,所述请求信息为由网上交易系统以异步消息形式发送的请求信息。
优选的,所述业务类型标识为业务代码;所述关键字段信息为交易流水号。
本发明实施例还提供了一种监控多数据库之间的数据一致性的系统,包括:
请求接收模块,用于接收针对一业务数据在多数据库之间的数据一致性提交的验证请求信息,所述请求信息包括:所述业务数据的业务类型标识,以及,所述业务数据在所述多数据库之间进行关联的关键字段信息;
预处理模块,用于依据所述请求信息读取所述业务类型标识对应的配置信息,所述配置信息包括该类业务的数据处理规则及所访问的数据库信息;
以及,监控处理模块,包括:
数据获取子模块,用于根据所述关键字段信息在当前业务所访问的数据库中获取相应的业务数据;和,
校验子模块,用于依据当前业务的数据处理规则,校验所述业务数据是否满足一致性要求,并获得校验结果。
优选的,所述的系统,还包括:
结果返回模块,用于通过日志、邮件或短信形式返回所述校验结果。
优选的,所述监控处理模块对应不同的业务类型进行设置,所述配置信息还包括:当前业务对应的监控处理模块信息。
优选的,所述请求信息为由网上交易系统以异步消息形式发送的请求信息。
优选的,所述业务类型标识为业务代码;所述关键字段信息为交易流水号。
优选的,所述系统相对于网上交易系统独立部署,用于监控所述网上交易系统已发生的业务数据。
与现有技术相比,本发明具有以下优点:
本发明针对基于包含多个数据库的应用系统,如包含账务数据库、订单数据库、充值数据库的网上交易系统,当某笔业务数据涉及其多个数据库的操作时,由于异常情况在其中一个数据库中的处理出错,从而在其他数据库中该笔业务仍在进行,则必须导致最终获得的业务数据不正确的情况,通过事后监控的机制来监控。本发明可以在应用系统需要进行验证时发送验证请求触发,根据验证请求所涉及的业务逻辑、数据库地址以及关联多数据库的关键字段,到相应的数据库将具体的数据取回来,并匹配相应的业务逻辑校验是否满足一致性要求,以获得校验结果。本发明的一个目的在于,以通知的方式对不满足一致性要求的业务数据进行预警,并不会干预其它系统业务的继续执行。本发明有效节约了人力成本,并提高了监控效率。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明实施例的核心构思之一在于,针对基于包含多个数据库的应用系统,如包含账务数据库、订单数据库、充值数据库的网上交易系统,当某笔业务数据涉及其多个数据库的操作时,由于异常情况在其中一个数据库中的处理出错,从而在其他数据库中该笔业务仍在进行,则必须导致最终获得的业务数据不正确的情况,通过事后监控的机制来监控。本发明可以在应用系统需要进行验证时发送验证请求触发,根据验证请求所涉及的业务逻辑、数据库地址以及关联多数据库的关键字段,到相应的数据库将具体的数据取回来,并匹配相应的业务逻辑校验是否满足一致性要求,以获得校验结果。本发明的一个目的在于,以通知的方式对不满足一致性要求的业务数据进行预警,并不会干预业务的继续执行。
参考图1,示出了本发明的一种监控多数据库之间的数据一致性的方法实施例的流程图,可以包括以下步骤:
步骤101、接收针对一业务数据在多数据库之间的数据一致性提交的验证请求信息,所述请求信息包括:所述业务数据的业务类型标识,以及,所述业务数据在所述多数据库之间进行关联的关键字段信息;
步骤102、依据所述请求信息读取所述业务类型标识对应的配置信息,所述配置信息包括该类业务的数据处理规则及所访问的数据库信息;
步骤103、根据所述关键字段信息在当前业务所访问的数据库中获取相应的业务数据;
步骤104、依据当前业务的数据处理规则,校验所述业务数据是否满足一致性要求,并获得校验结果。
近年来,电子商务逐渐成为互联网经济发展的主要潮流,依托于互联网等信息技术的电子商务应用,目前在全世界范围内以惊人的速度普及与发展。事实上,电子商务正逐渐成为整个社会经济活动中的一个越来越重要的组成部分。随着电子商务的普及与发展,人们对传统的商业行为是否能够在网络上重现越来越关注,现有的网上交易系统都属于多数据库系统交互的范畴,因而本发明实施例优选应用于网上交易系统,用于监控网上交易系统中涉及到资金风险的关键业务。在这种情况下,触发监控的验证请求信息可以为由网上交易系统以异步消息形式发送的请求信息;所述业务类型标识可以为业务代码;所述关键字段信息可以为交易流水号。
在实际中,交易流水号通常是交易执行过程中,针对每一笔交易同步生成的,也就是说,每执行一笔交易就记录一个交易流水号;对于多笔服务的交易,则记录多个交易流水号。网上交易的每种业务下通常都会有多笔交易,如每天充值有n笔交易,支付有m笔交易,但一个交易流水号会与一种业务代码相对应。
以下通过一个具体的例子进一步说明本发明实施例:
假设监控网上交易系统的一笔即时到账交易,此次监控由该网上交易系统以发送异步消息的方式提交的数据一致性验证请求而触发,针对该笔即时到账交易的数据验证请求信息中包括:该笔交易的流水号,所述交易流水号可以将该笔即时到账交易所涉及的多个数据库的数据关联起来;以及,该笔交易的业务代码,即即时到账交易业务的类型标识;
依据当前的业务代码读取相应业务的配置信息,配置信息中包括业务规则(即执行该业务的数据处理逻辑规则,通常表现为数据间的关系)和所需要访问的数据库信息。也就是说,从配置信息中可以获得需要从哪些数据库中取数据,以及,需要验证哪些业务规则等信息;假设本例中获得的配置信息为,需要从交易数据库、账务数据库和会计数据库取数据,并验证在交易数据库中获取的交易数据是否为一条,从账务数据库取得的账务数据是否为两条,并且交易金额与账务金额的数据是否匹配;以及,从会计数据库取得的会计分录信息是否正确。
需要说明的是,在实际中,由于业务类型的不同,有些业务规则是不能统一处理的,在这种情况下,可以对应不同业务类型设计不同的业务执行组件,将相应类型的业务交由相应的业务执行组件来处理。
根据该笔即时到账交易的交易流水号在所需访问的数据库中获取到具体的业务数据;也就是说,交易流水号(即关键字段)给出了执行业务规则所需的具体数据信息。
假设在本例中的数据获取为,在交易数据库中获取到一条交易数据,在账务数据库中获取到两条账务数据,在会计数据库中获取到一条会计分录信息。
依据当前业务的数据处理规则,校验所述业务数据是否满足一致性要求,并获得校验结果。
在本例中,若依据前述业务规则验证可得,在交易数据库中获取的交易数据为一条,从账务数据库取得的账务数据为两条,并且交易金额与账务金额的数据相匹配;以及,从会计数据库取得的会计分录信息正确;则满足数据一致性的要求,获得此次校验的结果为校验无误。若在交易数据库中获取的交易数据不是为一条,或,从账务数据库取得的账务数据不是为两条,或,交易金额与账务金额的数据不匹配,或,从会计数据库取得的会计分录信息不正确,则不满足数据一致性要求,此次校验的结果为校验出错。
在本发明实施例中,可以将校验结果通过日志、邮件或短信形式返回给用户,以通知的方式对不满足一致性要求的业务数据进行预警。
对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图2,示出了本发明的一种监控多数据库之间的数据一致性的系统实施例的结构框图,可以包括以下模块:
请求接收模块201,用于接收针对一业务数据在多数据库之间的数据一致性提交的验证请求信息,所述请求信息包括:所述业务数据的业务类型标识,以及,所述业务数据在所述多数据库之间进行关联的关键字段信息;
预处理模块202,用于依据所述请求信息读取所述业务类型标识对应的配置信息,所述配置信息包括该类业务的数据处理规则及所访问的数据库信息;
以及,监控处理模块203,可以包括以下子模块:
数据获取子模块2031,用于根据所述关键字段信息在当前业务所访问的数据库中获取相应的业务数据;和,
校验子模块2032,用于依据当前业务的数据处理规则,校验所述业务数据是否满足一致性要求,并获得校验结果。
优选的,本发明实施例还可以包括:
结果返回模块204,用于通过日志、邮件或短信形式返回所述校验结果。
在实际中,所述监控处理模块可以对应不同的业务类型进行设置,即所述监控处理模块可以设置有多个;在这种情况下,所述配置信息还包括:当前业务对应的监控处理模块信息。
参考图3,示出了应用图2所示的优选实施例对多数据库库之间的数据一致性进行监控的处理流程图,可以包括以下步骤:
步骤301、请求接收模块接收针对一业务数据在多数据库之间的数据一致性提交的验证请求信息,所述请求信息包括:所述业务数据的业务类型标识,以及,所述业务数据在所述多数据库之间进行关联的关键字段信息;
以在网上交易系统中应用本发明为例,其中,触发监控的验证请求信息可以为由网上交易系统以异步消息形式发送;所述业务类型标识可以为业务代码;所述关键字段信息可以为交易流水号。也就是说,在这种情况下,所述请求信息中可以包括以下相关的信息。
1)业务代码:表示所处理业务类型。由于针对不同的业务所涉及的数据库可能不一致,相应的数据项也是有区别的。
2)交易流水号:是多个数据库关联的关键字段信息。由于不同的数据库表中都会存储交易流水号,通过这个交易流水号就可以将多个数据库中的相关数据关联在一起,所以从多个数据库中取数据时,就可以通过交易流水号将当前交易的相关信息取出。
需要说明的是,还有部分特殊的交易需要根据交易流水号(关键字段信息)获取其它关键字,再根据这些关键字从其它数据库表中获取数据。例如:使用虚拟账户(如淘宝红包)支付时,虚拟账户的相关信息仅仅通过交易流水号是无法获得的,还需要从交易流水信息中获取虚拟账户的单据关键字,再根据这个关键字来获取虚拟账户信息。
步骤302、预处理模块依据所述请求信息读取所述业务类型标识对应的配置信息,所述配置信息包括该类业务的数据处理规则及所访问的数据库信息;
预处理模块接收到所述请求信息后,可以从请求信息中获得业务代码,然后提取该业务代码对应的配置信息,配置信息中主要有如下信息:需要从哪些数据库中取数据(需要访问哪些数据库)、以及需要验证哪些业务规则(通常表现为数据之间有什么关系)等信息。
需要说明的是,若遇到不能统一处理的业务规则,则需要将取出后的消息分发到对应不同业务类型设置的、相应的监控处理模块进行处理。在这种情况下,所述配置信息中还包括当前业务对应的监控处理模块的信息。
步骤303、监控处理模块的数据获取子模块根据所述关键字段信息在当前业务所访问的数据库中获取相应的业务数据;
当前业务对应的监控处理模块根据交易流水号和当前业务代码的配置信息,即可从相关的数据库中获取到具体的业务数据。当然,本发明还包括需要根据交易流水号(关键字段信息)获取其它关键字,再根据这些关键字从其它数据库表中获取具体的业务数据的情形。这也是不同监控处理模块所具有的业务逻辑。
步骤304、校验子模块依据当前业务的数据处理规则,校验所述业务数据是否满足一致性要求,并获得校验结果。
数据获取之后,由不同的监控处理模块来处理相应的业务逻辑,如充值校验规则可能需要校验网银流水号等相关信息,而即时到账交易是不需要校验网银流水号的。这些逻辑处理可以固化在相应的监控处理模块中。
步骤305、结果返回模块通过日志、邮件或短信形式返回所述校验结果。
以下通过一个具体的例子对本发明实施例更进一步说明。
步骤S1、监控系统接收到验证请求消息,包含以下内容:
数据项 |
说明 |
业务代码 |
用于区别某类业务,根据业务代码获取配置规则 |
交易流水号 |
将多个数据库串联起来的关键字 |
如针对一笔提现业务进行监控,业务代码为500401,交易流水号为该笔提现业务的具体流水号。
步骤S2、获取处理的业务代码500401对应的配置信息。配置信息可以包括以下内容:
A、需要访问的数据库以及表格数据信息如下表所示:
数据库 |
访问的数据表 |
说明 |
主库 |
提现流水表 |
记录提现流水信息 |
账务库 |
账务流水表 |
账务流水信息 |
账务库 |
交易流水表 |
当前提现涉及的附加信息 |
会计库 |
会计分录信息 |
关于会计借贷相关的信息 |
B、业务规则如下表所示:
提现流水表中记录条数为1条,并且状态为已提交银行 |
账务流水记录为1条,金额与提现流水表中的金额相同 |
交易流水表中记录为1条,打款银行与提现流水表中的银行相同 |
会计库中分录信息与账务流水中的信息必须相同 |
C、当前业务对应的监控处理模块信息。
步骤S3、根据交易流水号和和获取的数据库配置信息,以收集相应的业务数据;
步骤S4、根据收集的数据和业务规则对数据进行校验;
步骤S5、将校验结果以各种形式进行展示。
以下以在网上交易中应用本发明的监控系统为例进一步说明,本发明的监控系统与其它系统的连接及交互可参考图4,其中,本发明的监控系统可单独部署,假设一笔交易涉及交易核心数据库和账务核心数据库,根据用户在前台提交的交易请求,交易核心系统依据请求进行交易处理,主要涉及在其交易数据库中记录买卖双方的信息,如金额、时间和状态等;依据这些信息生成账务信息并发送至账务核心系统,账务核心系统在其账务数据库中记录账务信息;此时,账务核心系统可以发出异步消息,以触发本发明的监控系统校验当前多数据库中相应数据是否一致,本发明的监控系统接收到请求处理的消息后,从多个数据库中收集数据,例如,根据交易流水号和数据配置规则,从所述交易数据库和账务数据库中取得相应的数据,然后对这些数据进行分析,判断是否满足数据一致性的要求,如是否满足当前数据的匹配规则等,并将当前校验的结果,如校验准确或错误等信息向用户展现,从而完成一笔交易的数据一致性校验过程。
可以看出,本发明可以用于非实时监控,即在事后监控已经发生的交易。更为优选的,还可以将本发明的监控系统相对于网上交易系统或其它应用系统独立部署,在其他系统需要进行验证时,以异步消息的形式向本发明监控系统发送验证请求,当然其他系统是异步形式发送消息的,因而本发明并不会干预其它系统业务的正常运行,即使发现了数据不一致的情况,应用本发明也不会中断或修正业务的继续,仅仅是通过邮件,日志或短信等方式通知相关人员。总之,本发明的监控系统是以非侵入方式运行,不会影响其所监控的系统的正常运行,不会导致其所监控的系统运行性能降低。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本发明所提供的一种监控多数据库之间的数据一致性的方法和一种监控多数据库之间的数据一致性的系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。