一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

保障从源数据库抽取数据至目标库一致性的方法和装置与流程

2022-03-23 02:33:03 来源:中国专利 TAG:
1.本发明涉及数据库
技术领域
:,具体涉及一种保障从源数据库抽取数据至目标库一致性的方法和装置。
背景技术
::2.金融行业或数据分析行业等经常需要将数据从源数据库中抽取到目标数据库中,再基于目标数据库的中数据进行相应的操作,以确保源数据库的安全。然而,由于源数据库中的数据更新时间、频率不固定,在数据转移过程中,经常遇到源数据库中的数据正在更新,从而导致转移到目标数据库中的数据存在问题。为解决该问题,目前通常使用的方法主要有以下几种:3.1、对比转移前后的记录数,如果记录数发生变化,则说明在数据转移过程中源数据库中的数据发生了变化。4.2、对比转移前后数据内容哈希值,如果哈希值发生变化,则说明数据转移过程中源数据库中的数据发生了变化。5.上述两种方式都存在一定的不足,比较记录数的方式,简单、系统资源消耗较少,但是不能检查出记录内容变化的更新,只能检查出记录数发生变化的更新;而比较哈希值的方式,可以解决记录数方式中不能检查出源表发生内容更新操作的缺陷,但是由于这种方式需要多次(最少2次)将数据结果集加载到内存中,然后对结果集计算哈希值,系统资源消耗较大,尤其是当数据结果集很大,并且源表更新较为频繁时,抽取数据成功率很低,造成资源浪费。6.有鉴于此,急需对现有的保障从源数据库抽取数据至目标库一致性的方法进行改进,以保证抽取数据成功率,降低系统资源消耗。技术实现要素:7.针对上述缺陷,本发明所要解决的技术问题在于提供一种保障从源数据库抽取数据至目标库一致性的方法和装置,以解决现有方法抽取数据成功率低,资源浪费的问题。8.为此,本发明提供的一种保障从源数据库抽取数据至目标库一致性的方法,包括以下步骤:9.从源数据库抽取数据之前,第一次从源数据库获取所有源表的更新标识,分别记为第一标识;10.与获取所述第一标识时的时间,间隔预设时间,第二次从源数据库获取所有源表的更新标识,分别记为第二标识;11.比较各源表的所述第一标识与所述第二标识,当二者相同时,根据抽取数据逻辑,将源数据库上的数据抽取至内存中;否则,退出;12.第三次从源数据库获取所有源表的更新标识,记为第三标识;13.比较对应的所述第二标识与所述第三标识,当二者相同时,将内存中的数据写入目标数据库;否则,退出。14.在上述方法中,优选地,所述源数据库为oracle数据库,所述第一标识、第二标识和第三标识分别为系统改变号scn。15.在上述方法中,优选地,在源数据库新建触发器,源数据库的每次源表更新时,触发所述触发器记录所述源表的更新记录,所述更新记录形成所述第一标识、第二标识或第三标识。16.在上述方法中,优选地,所述预设时间为5-10秒。17.本发明还提供了一种保障从源数据库抽取数据至目标库一致性的装置,包括:18.标识获取模块,用于获取源数据库上所有源表的第一标识、第二标识和第三标识;其中,所述第一标识为从源数据库抽取数据之前,第一次从源数据库获取到的所有源表的更新标识,所述第二标识为与获取所述第一标识后,间隔预设时间后,第二次从源数据库获取到的所有源表的更新标识,所述第三标识为将数据库上的数据抽取至内存中之后,第三次从源数据库获取到的所有源表的更新标识;19.比较模块,用于比较各源表的所述第一标识与所述第二标识,获得第一结果;比较各源表的所述第二标识与所述第三标识,获得第二结果;20.抽取模块,用于根据所述第一结果为相同,根据抽取数据逻辑将源数据库上的数据抽取至内存中;21.更新模块,用于根据所述第二结果为相同,将内存中的数据写入目标数据库。22.在上述装置中,优选地,所述源数据库为oracle数据库,所述第一标识、第二标识和第三标识分别为系统改变号scn。23.在上述装置中,优选地,所述源数据库设有触发器,源数据库的每次源表更新时,触发所述触发器记录所述源表的更新记录,所述更新记录形成所述第一标识、第二标识或第三标识。24.在上述装置中,优选地,所述预设时间为5-10秒。25.由上述技术方案可知,本发明提供的一种保障从源数据库抽取数据至目标库一致性的方法和装置,解决了现有方法抽取数据成功率很低,资源浪费的问题。与现有技术相比,本发明具有以下有益效果:26.采用检查三次源表更新标识的方式,判断抽取数据过程中源表是否发生更新。通过第一次比较,检查源表当前是否正在更新,通过第二次比较,检查源表在抽取数据的过程中是否发生更新,能够避免源表正在更新,仍然将其数据抽取到内存或目标库之中,极大的提高了抽取数据的成功率,降低了系统资源消耗。附图说明27.为了更清楚地说明本发明的实施例或现有技术中的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图做出简单地介绍和说明。显而易见地,下面描述中的附图仅仅是本发明的部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。28.图1为本发明提供的一种保障从源数据库抽取数据至目标库一致性的方法流程图。具体实施方式29.下面将结合本发明实施例附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,以下所描述的实施例,仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下,所获得的所有其他实施例,都属于本发明保护的范围。30.本发明的实现原理是:采用检查三次源表更新标识的方式,判断抽取数据过程中源表是否发生更新,能够避免源表正在更新,仍然将其数据抽取到内存或目标库之中,极大的提高了抽取数据的成功率,降低了系统资源消耗。31.为了对本发明的技术方案和实现方式做出更清楚地解释和说明,以下介绍实现本发明技术方案的几个优选的具体实施例。32.需要说明的是,本文中“内、外”、“前、后”及“左、右”等方位词是以产品使用状态为基准对象进行的表述,显然,相应方位词的使用对本方案的保护范围并非构成限制。33.请参见图1,图1为本发明提供的一种保障从源数据库抽取数据至目标库一致性的方法流程图。34.如图1所示,本发明提供的一种保障从源数据库抽取数据至目标库一致性的方法,包括以下步骤:35.步骤110,从源数据库抽取数据之前,第一次从源数据库获取所有源表的更新标识,分别记为第一标识。36.步骤120,获取第一标识后,间隔预设时间,第二次从源数据库获取所有源表的更新标识,分别记为第二标识。37.隔预设时间设置为5-10秒。38.步骤130,比较各源表的第一标识与第二标识,当二者相同时,执行步骤140,根据抽取数据逻辑,将源数据库的数据抽取至内存中;否则,退出,不从源数据库抽取数据。39.步骤150,将源数据库上的数据抽取至内存中之后,第三次从数据库获取所有源表的更新标识,记为第三标识。40.步骤160,比较对应的第二标识与第三标识,当二者相同时,执行步骤170,将内存中的源表数据写入目标数据库;否则,退出,放弃内存中的源表数据,不将内存中的数据写入到目标数据库中。41.通过这种方式,只需要获取三次源数据库的更新标识,对比两次更新标识值,就能检查在抽取数据过程中源数据库中源表是否发生更新。其中第一次比较主要用于检查在抽取数据之前,源表是否已经处于更新状态,如果处于更新状态,则不需要执行后续流程,避免将无用数据抽取到内存中,浪费系统资源。第二次比较主要用于判断在根据抽取数据逻辑抽取数据的过程中源表是否发生更新,避免将无用数据抽取到目标库中。42.本发明方法,只需要将数据抽取一次至内存中,同时能够有效检查出内容发生变化的更新操作。43.本技术提供的方案,可应用于oracle数据库以及其他数据库,对于oracle数据库,采用scn作为第一标识、第二标识和第三标识。44.scn即系统改变号(systemchangenumber),是在某个时间点定义数据库已提交版本的时间戳标记。oracle为每个已提交的事务分配一个唯一的scn。scn的值是对数据库进行更改的逻辑时间点,oracle使用此编号记录对数据库所做的更改。45.从oracle10g开始提供的一个伪列ora_rowscn,它又分为两种模式:一种是基于block,这是默认的模式;还有一种是基于row,这种模式只能在建里表时指定rowdependencies,不可以通过后期的altertable,同时会给数据库带来性能负载。46.oracle在每个block(row)的头部记录了该block(row)最近事务的scn,当系统在向表中插入记录时,会将当前数据库的scn值插入该block(row)的头部。因此,可以通过查询表的最大scn值是否发生变化,来知晓该表是否发生更新。同时由于scn值是记录于block的头部,所以当该表为空表时,获取scn值会报错,通过此方法也能判断源表是否为空。47.对于其他数据库,由于没有提供scn功能。因此可以采用在源表新建触发器的方式,记录每次源表的更新记录,即:在源数据库新建触发器,源数据库的每次源表更新时,系统触发相应的触发器,记录源表的更新记录,该更新记录形成第一标识、第二标识或第三标识。48.基于上述方法,本技术还提供了一种保障从源数据库抽取数据至目标库一致性的装置,包括:49.标识获取模块,用于获取源数据库上所有源表的第一标识、第二标识和第三标识;其中,所述第一标识为从源数据库抽取数据之前,第一次从源数据库获取到的所有源表的更新标识,所述第二标识为获取所述第一标识后,间隔预设时间,第二次从源数据库获取到的所有源表的更新标识,所述第三标识为将数据库上的数据抽取至内存中之后,第三次从源数据库获取到的所有源表的更新标识;50.比较模块,用于比较各源表的所述第一标识与所述第二标识,获得第一结果;比较各源表的所述第二标识与所述第三标识,获得第二结果;51.抽取模块,用于根据所述第一结果为相同,根据抽取数据逻辑将源数据库上的数据抽取至内存中;52.更新模块,用于根据所述第二结果为相同,将内存中的数据写入目标数据库。53.综合以上具体实施例的描述,本发明提供的一种保障从源数据库抽取数据至目标库一致性的方法和装置,与现有技术相比,具有如下优点:54.第一,只需要获取三次源数据库的更新标识,对比两次更新标识值,就能检查在抽取数据过程中源表是否发生更新,方便快捷。55.第二,如果第一次比较说明源表处于更新状态,则不需要执行后续流程,避免将无用数据抽取出来,浪费系统资源。56.最后,还需要说明的是,在本文中使用的术语"包括"、"包含"或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句"包括一个…"限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。57.本发明并不局限于上述最佳实施方式,任何人应该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献