本发明涉及数据校验技术领域,特别涉及一种跨数据库海量数据对比方法。
背景技术:
当前的数据对比方法,一般采用两种方式:
1直接通过数据库表关联,全表数据匹配进行数据对比;
2将不同表中数据查询出明细记录,通过程序代码循环对比。
这两种方式适用于数据量不大的情况,能够100%准确的校验数据是否一致。但是当数据量巨大时,无论是采用数据库直接比较还是程序代码比较都会消耗大量资源甚至导致数据库或应用服务器宕机。
在烟草行业营销系统中,存在如下业务场景,存在两个独立的应用组件sgp和eco,两个应用组件分别对应数据库s和数据库e。应用组件eco是外网应用,为烟草零售户提供订单录入功能;应用组件sgp是内网应用,通过一系列参考数据生成零售户的可订货数据,数据确认无误后通过dblink和服务的方式将数据库s的数据同步至数据库e。
由于零售户可订货数据是关键的业务数据,需要保证同步结果的100%准确。烟草公司在销商品一般有200左右,零售户数量级为万,这样每次同步的数据是百万级的数据,简单的采用全表数据比较,虽然能保证比较结果的完全真实,但是对于跨应用,跨数据库的业务场景会存在很大的性能问题。
针对烟草行业营销系统中跨应用组件sgp和eco,跨数据库s和数据库e的业务场景,本发明设计了一种跨数据库海量数据对比方法。
技术实现要素:
本发明为了弥补现有技术的缺陷,提供了一种简单高效的跨数据库海量数据对比方法。
本发明是通过如下技术方案实现的:
一种跨数据库海量数据对比方法,其特征在于:首先,分别将数据库s和数据库e的数据根据商品分组,并提取每个商品的关键数据;其次,将对比需要的数据库e的数据同步至应用组件sgp;最后,在应用组件sgp对数据库s和数据库e的数据按商品分组进行逐项对比,若商品分组的每个商品的关键数据都一致,即认为商品分组的数据一致。
所述商品的关键数据包括记录数,客户可订购量合计值,客户可订购量最大值,客户可订购量最小值和随机抽取n个客户的明细数据。
所述应用组件sgp通过调用应用组件eco提供的烟草零售户提供订单录入功能,将对比需要的数据库e的数据同步至应用组件sgp。
本发明的有益效果是:该跨数据库海量数据对比方法,将原来全数据对比大量数据传输的模式优化为关键数据的对比,减少了大量数据的传输,实现了跨应用、跨数据库的数据高效对比,能够将烟草公司一周的订货策略的对比时间缩短到10秒以内。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
该跨数据库海量数据对比方法,首先,分别将数据库s和数据库e的数据根据商品分组,并提取每个商品的关键数据;其次,将对比需要的数据库e的数据同步至应用组件sgp;最后,在应用组件sgp对数据库s和数据库e的数据按商品分组进行逐项对比,若商品分组的每个商品的关键数据都一致,即认为商品分组的数据一致。
所述商品的关键数据包括记录数,客户可订购量合计值,客户可订购量最大值,客户可订购量最小值和随机抽取n个客户的明细数据。
n为随机的自然数。
所述应用组件sgp通过调用应用组件eco提供的烟草零售户提供订单录入功能,将对比需要的数据库e的数据同步至应用组件sgp。