CN116964573A - 使用多个存储设备复制数据改变并跟踪存储在存储设备上的未决数据改变的记录 - Google Patents
使用多个存储设备复制数据改变并跟踪存储在存储设备上的未决数据改变的记录 Download PDFInfo
- Publication number
- CN116964573A CN116964573A CN202280018759.5A CN202280018759A CN116964573A CN 116964573 A CN116964573 A CN 116964573A CN 202280018759 A CN202280018759 A CN 202280018759A CN 116964573 A CN116964573 A CN 116964573A
- Authority
- CN
- China
- Prior art keywords
- data
- memory device
- data changes
- database system
- log file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010076 replication Effects 0.000 claims abstract description 134
- 230000008859 change Effects 0.000 claims abstract description 96
- 238000000034 method Methods 0.000 claims abstract description 82
- 238000004590 computer program Methods 0.000 claims abstract description 9
- 230000003362 replicative effect Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910001092 metal group alloy Inorganic materials 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了执行以下操作的方法、计算机程序产品和/或系统:在执行源数据库系统表的数据改变的同时生成日志文件;将日志文件存储在具有第一存取时间的第一存储器设备上;将来自第一存储器设备的日志文件的一部分存档在具有第二存取时间的第二存储器设备上,所述第二存取时间高于所述第一存取时间;跟踪第二数量的未决数据改变,所述未决数据改变是存档在第二存储器设备上的、尚未被复制到目标数据库系统表中的日志文件的数据改变的记录中的数据改变;基于第二数量从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型;以及将数据改变复制到目标数据库系统表中。
Description
背景技术
本发明涉及数据库技术领域,并且更具体地涉及将源数据库系统的表的数据改变复制到目标数据库系统的表中。
可以执行在源数据库系统的表中完成的数据改变在目标数据库系统的表中的复制以创建源数据库的表的备份。这样的数据改变的复制的另一应用可以是使目标数据库系统的表与源数据库系统的表同步,例如,在目标数据库系统的表包括与源数据库系统的表不同的排序方案的情况下。通常,数据改变的复制应该尽可能快地执行,以尽可能同步地维护目标数据库系统的表的数据和源数据库系统的表的数据。可以根据不同类型的复制策略来复制数据改变。第一类型可以包括单独地复制源数据库系统的表的单个行。另一类型的复制策略可以包括立即复制源数据库的表的若干行,甚至大部分行。
发明内容
各个实施例提供了如独立权利要求中所述的用于复制数据改变的方法、计算机系统和计算机程序产品。在从属权利要求中描述了有利的实施例。如果本发明的实施例不相互排斥,则它们可以彼此自由组合。
根据本发明的各方面,提供了一种用于将源数据库系统的表的数据改变复制到目标数据库系统的表中的方法。该方法包括在执行源数据库系统的表的数据改变的同时重复地生成日志文件,每个日志文件包括所述源数据库系统的表的数据改变的至少一个记录。该方法还包括将所述日志文件存储在第一存储器设备上,所述第一存储器设备具有第一存取时间。该方法还包括将存储在所述第一存储器设备上的所述日志文件的一部分存档在第二存储器设备上,所述第二存储器设备具有第二存取时间,其中所述第二存取时间高于所述第一存取时间。该方法还包括跟踪第二数量的第二未决数据改变,所述第二未决数据改变是存档在所述第二存储器设备上的、尚未被复制到目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变。该方法还包括基于所述第二数量从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型。该方法还包括使用所述日志文件的数据改变的记录,根据所选择的数据复制的类型,将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中。
在一些实施例中,第一类型的数据复制包括单独加载所述数据改变的记录中的每一个,并且根据对应的单独加载的数据改变的记录将所述源数据库系统的表的单个行的相应数据改变复制到所述目标数据库系统的表中。在一些实施例中,第二类型的数据复制包括一起加载用于更新所述目标数据库系统的表的若干行的信息并基于所述信息更新所述目标数据库系统的表的所述若干行。
在一些实施例中,该方法可以可选地还包括跟踪第一数量的第一未决数据改变,所述第一未决数据改变是存储在所述第一存储器设备上的、尚未被复制到所述目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变,其中,选择数据复制的类型基于第一数量和第二数量。
可选地,在一些实施例中,数据复制的类型的选择可以包括第一数量的加权和第二数量的加权,其中第一数量的加权基于第一存取时间,第二数量的加权基于第二存取时间。
在一些实施例中,该方法可以可选地还包括如果第一数量和第二数量之间的比率大于或等于第三阈值,则选择第一类型的数据复制;以及如果第一数量和第二数量之间的比率小于第三阈值,则选择第二类型的数据复制。该比率可以是加权比率,其中,第一数量取决于第一存取时间而被加权并且第二数量取决于第二存取时间而被加权。
在一些实施例中,该方法可以可选地还包括计算第一数量和第二数量的加权和,其中,第一数量基于第一存取时间而被加权,并且第二数量基于第二存取时间而被加权。在这样的实施例中,如果加权和小于第四阈值,则选择第一类型的数据复制,如果加权和大于或等于第四阈值,则选择第二类型的数据复制。
在一些实施例中,该方法可以可选地还包括获得相应日志号,其中每个相应日志号被分配给所述日志文件中的相应一个日志文件,并且每个相应日志号指示直到相应日志文件的生成开始的相应时刻为止已经被写入的所述源数据库系统的表的数据改变的记录的总数。在这样的实施例中,该方法还可以包括使用分配给所述日志文件的相应日志号来跟踪所述第一数量和第二数量。
可选地,在一些实施例中,第一数量的跟踪包括计算分配给存储在所述第一存储器设备上最短时间的日志文件的相应日志号和分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号之间的差。
可选地,在一些实施例中,第一数量的跟踪包括计算在实际时刻所述源数据库系统的表的数据改变的实际总数与分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号之间的差。
在一些实施例中,该方法可以可选地还包括跟踪从所述第一存储器设备或所述第二存储器设备中读出的并且用于根据数据改变的最后记录将数据改变复制到所述目标数据库系统的表中的数据改变的最后记录的记录号;以及使用所述数据改变的最后记录的记录号来跟踪所述第一数量或所述第二数量。
在一些实施例中,该方法可以可选地还包括将所述第二数量计算为分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号与分配给所述数据改变的最后记录的记录号之间的差,其中,所述数据改变的最后记录被包括在存档在所述第二存储器设备上的日志文件中的一个日志文件中。
在一些实施例中,该方法可以可选地还包括将所述第一数量计算为分配给存储在所述第一存储器设备上最短时间的日志文件的相应日志号与分配给所述数据改变的最后记录的记录号之间的差,其中,所述数据改变的最后记录被包括在存储在所述第一存储器设备上的日志文件中的一个日志文件中。
在一些实施例中,该方法可以任选地还包括使用计数器对所述源数据库系统的表的数据改变的记录的总数进行计数。在这样的实施例中,该方法还可以包括确定所述计数器是否处于接近所述计数器的溢出的状态。在这样的实施例中,该方法可以还包括如果所述计数器处于接近所述计数器的溢出的状态,则选择所述第二类型的数据复制。在这样的实施例中,该方法还可包括在使用所述日志文件的数据改变的记录,根据所述第二类型的数据复制,在将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中之后,重置所述计数器。在一些实施例中,第二类型的数据复制包括一起加载存储在所述第一存储器设备和所述第二存储器设备上的数据改变的所有记录,以及根据所有加载的数据改变的记录来将所述源数据库系统的表的多于一行的数据改变复制到所述目标数据库系统的表中。
根据本发明的另一方面,提供了一种包括具有随其体现的计算机可读程序指令的计算机可读存储介质的计算机程序产品,该计算机可读程序指令能够由一个或多个处理器执行以执行根据前述实施例中任一项所述的方法。
根据本发明的另一方面,提供了一种用于将源数据库系统的表的数据改变复制到目标数据库系统的表中的计算机系统。该计算机系统可以被配置为执行根据前述实施例中的任何一个的方法。
附图说明
在下文中,参照附图,仅通过示例的方式更详细地解释了本发明的实施例,其中:
图1示出了根据本发明的实施例的计算机系统;
图2示出了根据本发明的实施例的图1中所示的计算机系统的第二计算机系统/服务器;
图3描绘了根据本发明的实施例的连接到图1的计算机系统的网络;
图4描绘了根据本发明的实施例的用于执行源数据库系统在目标数据库系统中的数据复制的源数据库系统、目标数据库系统、第一存储器设备和第二存储器设备;
图5描绘了根据本发明的实施例的源数据库系统的表;
图6描绘了根据本发明的实施例的目标数据库系统的表;
图7描绘了根据本发明的实施例的在执行源数据库系统的表的数据改变时生成的日志文件;
图8描绘了根据本发明的实施例的在执行源数据库系统的表的数据改变时生成的数据改变的记录;
图9描绘了根据本发明的实施例的数据改变的第一记录和数据改变的第二记录;
图10描绘了根据本发明的实施例的如图4所示的源数据库系统、目标数据库系统、第一存储器设备和第二存储器设备,该第一存储器设备和第二存储器设备存储如图7所示的日志文件;
图11描绘了根据本发明的实施例的如图4所示的源数据库系统、目标数据库系统、第一存储器设备和第二存储器设备,该第一存储器设备和第二存储器设备存储如图7所示的日志文件,该日志文件各自包括日志号;以及
图12描绘了根据本发明的实施例的用于将如图5所示的源数据库系统的表的数据改变复制到如图6所示的目标数据库系统的表中的计算机实现的方法。
具体实施方式
本发明的各个实施例的描述将出于说明的目的而呈现,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。本文使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术性改进,或者使本领域普通技术人员能够理解本文公开的实施例。
以下,将源数据库系统的表称为源表,将目标数据库系统的表称为目标表。在执行源表的数据改变时生成的每个日志文件的记录可各自包括复制源表的单个数据改变的所有必要信息。源表的单个数据改变可以包括源表的单个数据字段的值的改变或源表的单个行的若干数据字段的值的改变。单个数据字段可以由源表的行的编号和列的编号指定。单个数据字段的值可以是数字和/或字符串。复制单个数据改变的必要信息可以包括,例如,在执行数据改变之后的源表的单个数据字段的新数据值以及指定单个数据字段的源表的行的编号和列的编号。在单个数据改变可以包括源表的单个行的若干数据字段的值的改变的情况下,复制单个数据改变的必要信息可以包括在执行单个数据改变时被修改的每个数据字段的相应新数据值、包括这些修改后的数据字段的行的编号以及指示每个修改后的数据字段的相应列。
在执行源表的每个新数据改变的情况下,可以生成数据改变的新记录,该新记录包括将该数据改变复制到目标表中的必要信息。可以将数据改变的新记录写入实际日志文件中。可以在实际日志文件中的数据改变的最后写入记录之后的位置处将新记录写入实际日志文件中,最后写入记录指示源表的最后执行的数据改变。因此,源表的数据改变的顺序可由日志文件中的数据改变的记录的顺序表示。
如果实际日志文件的大小达到给定阈值,则可以生成新的日志文件。这样,可以重复生成日志文件。由于源表可以维持较长的时间段,例如维持数年或数十年,因此源表的数据改变的总数可以大于例如一千、一百万、十亿等。数据改变的总数可以高于源表的数据字段或行的数量,因为数据字段在源表的寿命中可以改变若干次。
如本文所使用的术语“跟踪第二数量”是指第二数量的确定的任何类型,例如,计数、计算和/或更新表示第二数量的第二计数器。第二数量的跟踪可涉及更新其值可表示第二数量的第二计数器。如果第二未决数据改变之一最近已经被复制到目标表中,则第二计数器可被更新。在这种情况下,第二计数器可以减少一。此外,第二数量的跟踪可涉及如果新的日志文件可被存储在第二存储器设备上,则更新第二计数器。在这种情况下,第二计数器可增加存储在第二存储器设备上的新日志文件中包括的记录的数量。
如本文所使用的术语“将日志文件的一部分存档在第二存储器设备上”是指将日志文件的一部分存储在第二存储器设备上。术语“存档”用于表示第二存取时间高于第一存取时间。第一存取时间和第二存取时间可以分别由在第一存储器设备或第二存储器设备已经接收到写入或读取命令之后执行写入或读取命令所花费的第一时间和第二时间来定义。第二存储器设备可以是硬盘驱动器、磁带等。第二存储器设备可以包括用于存取存储在第二存储器设备上的数据的移动元素,例如旋转盘或磁带。第二存取时间可以包括例如用于根据读取命令来定位第二存储器的读写头的时间间隔,也称为寻道时间。第一存储器设备可以是固态驱动器(SSD)、闪存等。第一存储器设备可以不包括用于读出存储在第一存储器设备上的数据的移动元素。
通常,为了达到复制数据改变的高性能,将所有日志文件存储在第一存储器设备上是有利的(例如,更低的存取时间等)。然而,第一存储器设备可以比第二存储器设备更昂贵。出于该原因,如果第一存储器上的可用空间接近于零,则可限制第一存储器的大小,并且可将存储在第一存储器设备上的日志文件的一部分存档在第二存储器设备上。
当第二存取时间(例如,第二存储器设备等)高于第一存取时间时,如果第二数量的第二未决数据改变超过某一第一级别并且在源表中执行的数据改变的频率超过某一第二级别,则数据改变的复制可能在较长时间段内减慢。在这样的情况下,执行第一类型的数据复制(例如,增量数据复制等)可导致死锁情形,其中在给定时间间隔内,相比于可以被复制的日志文件,更多的日志文件被存档在第二存储器设备上。在这样的情况下,执行第二类型的数据复制(例如,批量数据复制等)可以解决或避免死锁情况。根据本发明的方面,通过跟踪第二数量和至少部分地基于第二数量来选择数据复制的类型,可以检测和防止死锁情形或接近死锁情形的情形。在一些实施例中,可以通过检查第二数量的实际值和/或通过检查第二数量的实际值的时间变化来自动地执行第二数量的跟踪。
第一级别和第二级别可以取决于用于执行数据改变的复制的计算机系统的设计,尤其是取决于第二存取时间。在源表中执行的数据改变的频率可以取决于源数据库系统的使用行为。
在一些实施例中,如果第二数量大于第二阈值,则可以选择第二类型的数据复制。第二阈值可以取决于第二存取时间和/或复制数据改变的带宽。这样的实施例可以提供快速方式来执行对数据复制的类型的选择,因为仅需要比较一个值。此外,基于仅一个值来选择数据复制的类型可以减轻校准用于执行数据复制的计算机系统的需要,因为仅一个阈值(这里是第二阈值)需要被适配于源数据库系统的使用。
在一些实施例中,确定对数据复制的类型的选择可以包括跟踪第一数量的第一未决数据改变,所述第一未决数据改变是存储在第一存储器设备上的、尚未被复制到目标数据库系统的表中的日志文件的数据改变的记录中的数据改变。因此,在一些实施例中,选择可以取决于第一数量和第二数量。这样,还可以考虑第一未决数据改变,并且可以更准确地预期死锁情形。
如本文所使用的术语“跟踪第一数量”是指第一数量的确定的任何类型,例如计数、计算或更新表示第一数量的第一计数器。第一数量的跟踪可以涉及更新其值可表示第一数量的第一计数器。如果第一未决数据改变之一最近已被复制到目标表中,则可更新第一计数器。在这种情况下,第一计数器可以减少一。此外,第一数量的跟踪可涉及如果新的日志文件被存储在第一存储器设备上,则更新第一计数器。在这种情况下,第一计数器可增加包括在新的日志文件中的记录的数量。
在一些实施例中,加载用于更新目标数据库系统的表的若干行的信息可以包括一起加载数据改变的记录中的若干记录。在一些实施例中,更新目标数据库系统的表的若干行可以包括根据所加载的数据改变的记录将源数据库系统的表的若干行的数据改变复制到目标数据库系统的表中。源数据库系统的表的若干行中的每一个可对应于目标数据库系统的表的若干行中的一个。可以从第一存储器设备或第二存储器设备加载数据改变的记录中的若干记录。通过一起加载数据改变的记录中的若干记录,可以加速数据复制。因此,可以防止死锁情形。
在一些实施例中,加载用于更新目标数据库系统的表的若干行的信息可以包括加载源数据库系统的表的若干行的数据值,这在本文中还可以被称为第二类型的数据复制的第二种情况。因此,在一些实施例中,可能不需要数据改变的记录来执行第二类型的数据复制。目标表的若干行和源表的若干行可以分别是目标表和源表的分区。作为示例,目标表和源表的若干行可以分别构成整个目标表和整个源表。源表的若干行的数据值可各自提供源表的若干行的单个数据字段的实际数据值。一旦源表的若干行的数据值被加载,这些值可被复制到目标表的对应数据字段以更新目标表。可以直接从源数据库系统加载数据值。通过加载源表的若干行的数据值,可以跳过源表的单个数据字段中的一个的若干数据改变的复制,以更新目标表中的对应的数据字段。这样,可以加速数据复制并且可以防止死锁情况。
在一些实施例中,数据复制的类型的选择可以包括将使用第一类型的数据复制来执行所有未决数据改变(例如,第一未决数据改变和第二未决数据改变)所需的第一计算成本与根据第二类型的数据复制的第二种情况来执行目标表的所有行的更新所需的第二计算成本进行比较。如果第一计算成本大于第二计算成本,则可以选择第二类型的数据复制,否则可以选择第一类型的数据复制。
在一些实施例中,确定对数据复制的类型的选择可以包括如果第一数量大于第一阈值并且第二数量大于第二阈值,则选择第二类型的数据复制。这样的实施例可呈现简单实现方式来考虑第一未决数据改变和第二未决数据改变。如果第一数量大于第一阈值且第二数量大于第二阈值,那么可假设可很快到达死锁情形。类似于第二阈值,第一阈值可适于源数据库系统的使用和复制数据改变的可实现带宽。
在一些实施例中,数据复制的类型的选择可以包括第一数量和第二数量的加权。作为示例,第一数量的加权可以取决于第一存取时间,并且第二数量的加权可以取决于第二存取时间。通过相对于相应存取时间来执行第一数量和第二数量的加权,可以考虑第一存取时间和第二存取时间之间的差。这可以减轻对将复制数据改变的方法适配到计算机系统的设计的需要。例如,第二存取时间越高,第二数量可根据第二存取时间加权得越多,以产生关键值,基于该关键值可执行数据复制的类型的选择。加权可以用于确定以上提到的第一计算成本。
在一些实施例中,数据复制的类型的选择可以包括如果第一数量与第二数量之间的比率大于或等于第三阈值,则选择第一类型的数据复制。因此,在一些实施例中,该选择可以包括如果第一数量与第二数量之间的比率小于第三阈值,则选择第二类型的数据复制。该比率可以是商数的形式,其中第一数量是商数的分子,第二数量是商数的除数。第三阈值可以适于第一存取时间和第二存取时间之间的另一比率。通过将第一数量和第二数量之间的比率与第三阈值进行比较,可以以简单的方式考虑第一存取时间与第二存取时间之差。该比率可以用作关键值,例如作为单个关键值,基于该关键值可以执行数据复制的类型的选择。计算机系统可以通过调整第三阈值来适应源数据库系统的使用。
在一些实施例中,所述比率可以是加权比率,所述加权比率包括取决于所述第一存取时间而被加权的所述第一数量和取决于所述第二存取时间而被加权的所述第二数量。作为加权比率的比率可以更精确地用作可以执行数据复制的类型的选择的关键值,因为它可以考虑第一存取时间和第二存取时间。
在一些实施例中,数据复制的类型的选择可以包括计算第一数量和第二数量的加权和,第一数量基于第一存取时间而被加权并且第二数量基于第二存取时间而被加权。因此,在一些实施例中,该选择可以包括如果加权和小于第四阈值则选择第一类型的数据复制,并且如果加权和大于或等于第四阈值则选择第二类型的数据复制。加权和可以表示用于存取第一存储器设备和第二存储器设备的所有记录以执行所有第一未决数据改变和第二未决数据改变的总存取时间的量。为此,加权和可以充当用于估计死锁情况是否可能很快发生的关键值。因此,加权和可以充当关键值,基于该关键值可以执行数据复制的类型的选择。加权和可以用于确定上述第一计算成本。
在一些实施例中,第二类型的数据复制可以包括一起加载用于更新目标数据库系统的表的所有行的信息以及基于用于更新目标数据库系统的表的所有行的信息来更新目标数据库系统的表的所有行。用于更新目标表的所有行的信息在第一种情况下可以是第一未决数据改变和第二未决数据改变的所有记录的形式,或者在第二种情况下可以是源表的所有数据值的形式。所以,在第一种情况下,对目标表的所有行的更新可以包括根据第一未决数据改变和第二未决数据改变来执行所有数据改变的复制。在第二种情况下,目标表的所有行的更新可以包括将目标表的每个数据值设置为等于源表的数据值中的对应一个。
在一些实施例中,在所有行已经被更新之后,可以从第一存储器设备和第二存储器设备删除所有日志文件。可以假设,例如,在第一存储器设备和第二存储器设备的这样的清理之后,可能花费一些时间直到存储在第一存储器设备上的数据改变的另外的记录可以被存档在第二存储器设备上。这样,一些实施例可提供将计算机系统从数据改变的记录从第二存储器设备被连续加载以执行数据改变的复制的状态转换到数据改变的记录从第一存储器设备被连续加载以执行复制的状态。结果,可以改善复制的性能。
在一些实施例中,数据复制的类型的选择可以包括使用相应日志号。例如,每个相应日志号可被分配给日志文件中的相应一个。所述相应日志号可以指示在相应日志文件的生成开始的相应时刻已经写入的所述源数据库系统的表的数据改变的记录的总数。在一些实施例中,在执行对第一数量和第二数量的跟踪时,可以使用分配给日志文件的日志号。这可以降低用于确定第一数量和/或第二数量的计算成本。例如,可能不需要读取存储在第二存储器设备上的日志文件的所有记录以对这些记录进行计数。这同样适用于确定第二数量。
在一些实施例中,日志文件各自包括分配给它们的相应日志号。例如,分配给每个相应日志文件的日志号可嵌入在该相应日志文件中。这可以提供以下优点:日志号及其到相应日志文件的分配不需要存储在除了第一存储器设备和第二存储器设备之外的另外的存储器设备上。
在一些实施例中,第一数量的跟踪可以包括计算分配给存储在第一存储器设备上最短时间的日志文件的日志号与分配给存储在第一存储器设备上最长时间的日志文件的日志号之间的差。第一数量可以被设置为日志号之间的差。在一些实施例中,此计算可提供简单且快速的方式来确定第一数量。存储在第一存储器设备上最长时间的日志文件在本文中也可被称为最旧的日志文件。存储在第一存储器设备上最短时间的日志文件在本文中也可被称为最年轻的日志文件。
在一些实施例中,第一数量的跟踪可以包括计算在实际时刻源数据库系统的表的数据改变的实际总数和分配给存储在第一存储器设备上最长时间的日志文件的日志号之间的差。可以从源数据库检索数据改变的实际总数。源数据库系统可包括记录计数器,用于对数据改变的实际总数进行计数。使用数据改变的实际总数而不是最年轻的日志文件的日志号可以允许第一数量的更精确确定。通常,可以将通过源数据库系统生成的最后记录(例如,在本文中称为最后生成的记录)直接写入最年轻的日志文件中。
在一些实施例中,数据复制的类型的选择可以包括跟踪从第一存储器设备或第二存储器设备读出的并且用于根据数据改变的最后记录(例如,也称为最后处理的记录或数据改变的最后记录)将数据改变复制到目标数据库系统的表中的数据改变的最后记录的记录号。在一些实施例中,数据复制的类型的选择可以包括使用数据改变的最后记录的记录号来跟踪第一数量或第二数量。最后处理的记录的记录号可表示在写入最后处理的记录的时刻被写入的源数据库系统的表的数据改变的记录的总数,包括最后处理的记录。每个数据改变的记录可包括等于在写入该记录的时刻(包括该记录)被写入的源数据库系统的表的数据改变记录的总数的记录号。跟踪最后处理的记录的记录号可以促进跟踪第一数量和/或第二数量。例如,在这样的情况下可以不需要和更新上述第一计数器和第二计数器。最后处理的记录的记录号的跟踪可以包括读取最后处理的记录的记录号。
在一些实施例中,数据复制的类型的选择可以包括将第二数量计算为被分配给存储在第一存储器设备上最长时间的日志文件的日志号与被分配给数据改变的最后记录的记录号之间的差。在一些实施例中,数据改变的最后记录可由被存档在第二存储器设备上的日志文件之一包括或提供。这样的实施例可以提供不使用第一计数器或第二计数器而是仅使用最后处理的记录的记录号和分配给最旧的日志文件的日志号来确定第二数量的简单方式。
在一些实施例中,数据复制的类型的选择可以包括将第一数量计算为被分配给存储在第一存储器设备上最短时间的日志文件的日志号与被分配给数据改变的最后记录的记录号之间的差。在一些实施例中,数据改变的最后记录可以包括在存储在第一存储器设备上的日志文件中的一个日志文件中或由存储在第一存储器设备上的日志文件中的一个日志文件提供。这样的实施例可以提供确定第一数量的简单方式,而不使用第一计数器或第二计数器,而是仅使用最后处理的记录的记录号和分配给最年轻的日志文件的日志号。
在一些实施例中,数据复制的类型的选择可以包括恢复日志文件。所述恢复可以包括将被存档在所述第二存储器设备上的所述日志文件存储在所述第一存储器设备上。可以从第一存储器设备而不是从第二存储器设备读取和处理恢复的日志文件以执行数据改变的复制。因此,数据改变的复制可以被加速。可基于日志文件的恢复的计算成本的估计来执行恢复。
在一些实施例中,数据复制的类型的选择可包括基于存档在第二存储器设备上的日志文件的数据改变的记录的相应大小来执行日志文件的恢复。可基于存档在第二存储器设备上的日志文件的数据改变的记录的相应大小来执行日志文件的恢复的计算成本的估计。这样,可基于关于日志文件的恢复的计算成本的更详细的信息来做出是否应当执行日志文件的恢复的决定。
在一些实施例中,数据复制的类型的选择可以包括使用计数器来对源数据库系统的表的数据改变的记录的总数进行计数。计数器可以是上述记录计数器。在一些实施例中,该选择可以包括确定该计数器是否处于接近该计数器的溢出的状态。在一些实施例中,如果计数器处于接近计数器溢出的状态,则可以选择第二类型的数据复制。使用日志文件的数据改变的记录,根据第二类型的数据复制,在将源数据库系统的表的数据改变复制到目标数据库系统的表中之后,可以重置计数器。在一些情况下,确定计数器何时可处于接近计数器的溢出的状态可以允许防止计数器的溢出。
在一些实施例中,第二类型的数据复制可以包括一起加载存储在第一存储器设备和第二存储器设备上的数据改变的所有记录,并且根据所有加载的数据改变的记录来将源数据库系统的表的多于一行的数据改变复制到目标数据库系统的表中。将存储在第一存储器设备和第二存储器设备上的数据改变的所有记录一起加载可防止必须执行存储在第一存储器设备和第二存储器设备上的日志文件的日志号的重新计算。在加载存储在第一存储器设备和第二存储器设备上的数据改变的所有记录之后,可以从第一存储器设备和第二存储器设备删除这些记录。
本发明的实施例可以使用计算设备来实现,该计算设备还可以被称为计算机系统、客户端、服务器等。现在参见图1,示出了计算机系统10的示例的示意图。计算机系统10仅提供合适的计算机系统的一个示例,并且不旨在对本文所描述的本发明的实施例的使用和/或功能的范围提出任何限制。无论如何,计算机系统10能够实现和/或执行本文所阐述的任何功能。
计算机系统10可包括第一计算机系统/服务器12,其可与许多其他通用或专用计算系统环境和/或配置一起操作。可适用于与第一计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于计算机系统10的第一存储器411(例如,图4中所示)、个人计算机系统、服务器计算机系统、薄客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型计算机系统、大型计算机系统、包括任何上述系统或设备的分布式计算环境等。
可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述第一计算机系统/服务器12。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。作为示例,第一计算机系统/服务器12可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图1所示,计算机系统10中的第一计算机系统/服务器12以通用计算设备的形式示出。第一计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28和将包括系统存储器28的各个系统组件耦合到处理器16的总线18。总线18表示若干类型的总线结构中的任何一种中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线。
第一计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是可由第一计算机系统/服务器12访问的任何可用介质,并且其包括易失性介质和非易失性介质、可移动介质和不可移动介质。
系统存储器28可包括易失性存储器形式的计算机系统可读媒体,诸如随机存取存储器(RAM)30和/或高速缓冲存储器32。第一计算机系统/服务器12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统34可以被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)中读取和向其写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移动非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一个可以通过一个或多个数据介质接口连接到总线18。如以下将进一步描绘和描述的,存储器28可以包括具有被配置为执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
具有一组(至少一个)程序模块50的程序/实用程序40,以及操作系统、一个或多个应用程序、其他程序模块和程序数据,可以通过示例而非限制的方式存储在存储器28中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块50一般可被配置成执行如本文所描述的本发明的实施例的功能和/或方法。
如本文所使用的术语“程序”或“程序模块”是指一组指令,该组指令可包含在处理器16可读取命令时引起处理器16执行的动作的命令。该组指令可以是计算机可读程序、例程、子例程或库的一部分的形式,其可以由处理器16执行和/或可以被处理器16执行的另外的程序调用。优选地,程序模块50可以是根据第一计算机系统/服务器12的硬件平台的类型编译的可执行程序。
第一计算机系统/服务器12也可以与一个或多个外部设备14(诸如键盘、定点设备、显示器24等);使用户能够与第一计算机系统/服务器12交互的一个或多个设备;和/或使第一计算机系统/服务器12能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)通信。这样的通信可经由输入/输出(I/O)接口22发生。另外,第一计算机系统/服务器12可以经由网络适配器20与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)之类的一个或多个网络通信。如所描绘的,网络适配器20可以经由总线18与第一计算机系统/服务器12的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与第一计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器和数据存档存储系统等。
作为示例,第一计算机系统/服务器12可以以源数据库系统的形式来设计,诸如图4所示的源数据库系统401。源数据库系统401可以包括源表410,如图4和图5中所示。源表410可以包括数据字段,例如,如图5中的方框所示。数据字段可以各自包括条目,例如数字和/或字符串。源表410的每个数据字段可以被分配源表410的具体行数和源表410的具体列数。源表410的具体行数可以在图5中示出的第一箭头501的方向上增加。源表410的具体列数可以在图5中示出的第二箭头502的方向上增加。每个数据字段的行数和列数可以用于执行相应数据字段的数据改变。此外,源表410的所选行数和源表410的若干不同的所选列数可以用于执行由所选行数指定的单个行的不同数据字段的若干数据改变。作为示例,源表410可以被存储在第一计算机系统/服务器12的存储系统34中。
计算机系统10可以包括第二计算机系统/服务器,例如,如图2所示的计算机系统/服务器212,其可以与许多其他通用或专用计算系统环境和/或配置一起操作。可适用于与第二计算机系统/服务器212一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于第一存储器411、个人计算机系统、服务器计算机系统、薄客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型计算机系统、大型计算机系统、包括上述系统或设备中的任一个的分布式计算环境等。
可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述第二计算机系统/服务器212。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。第二计算机系统/服务器212可以在由通过通信网络链接的远程处理设备执行任务的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图2所示,计算机系统10中的第二计算机系统/服务器212以通用计算设备的形式示出。第二计算机系统/服务器212的组件可以包括但不限于一个或多个处理器或处理单元216、系统存储器228以及将包括系统存储器228的各个系统组件耦合至处理器216的总线218。总线218表示若干类型的总线结构中的任何一种中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线。
第二计算机系统/服务器212通常包括各种计算机系统可读介质。这样的介质可以是可由第二计算机系统/服务器212访问的任何可用介质,并且其包括易失性介质和非易失性介质、可移动介质和不可移动介质。
系统存储器228可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)230和/或高速缓冲存储器232。第二计算机系统/服务器212还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统234可以被提供用于从不可移除的非易失性磁性介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,可以提供用于从可移除非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移除非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一个可以通过一个或多个数据介质接口连接到总线218。如以下将进一步描绘和描述的,存储器228可以包括具有被配置成执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
具有一组(至少一个)程序模块250的程序/实用程序240,以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以存储在存储器228中,作为示例而非限制。操作系统、一个或多个应用程序、其他程序模块、程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块250一般可被配置成执行如本文所描述的本发明的实施例的功能和/或方法。
如本文所使用的术语“程序”或“程序模块”是指一组指令,该组指令可包含在处理器216可读取命令时引起由处理器216执行的动作的命令。该组指令可以是计算机可读程序、例程、子例程或库的一部分的形式,其可以由处理器216执行和/或可以由处理器216执行的另外的程序调用。优选地,程序模块250可以是根据第二计算机系统/服务器212的硬件平台的类型编译的可执行程序。
第二计算机系统/服务器212还可以与诸如键盘、定点设备、显示器224等的一个或多个外部设备214;使用户能够与第二计算机系统/服务器212交互的一个或多个设备;和/或使第二计算机系统/服务器212能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)通信。这样的通信可经由输入/输出(I/O)接口222发生。此外,第二计算机系统/服务器212可以经由网络适配器220与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)的一个或多个网络通信。如所描绘的,网络适配器220可以经由总线218与第二计算机系统/服务器212的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与第二计算机系统/服务器212结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器和数据存档存储系统等。
作为示例,第二计算机系统/服务器212可以以目标数据库系统的形式来设计,诸如图4所示的目标数据库系统402。目标数据库系统402可以包括如图4和图6所示的目标表420。目标表420可以包括数据字段。目标表420的数据字段可以各自包括条目,例如数字和/或字符串。目标表420的每个数据字段可以被分配目标表420的具体行数和目标表420的具体列数。如图6所示,目标表420的具体行数可以在第一箭头601的方向上增加。目标表420的具体列数可以在第二箭头602的方向上增加,如图6所示。每个数据字段的行数和列数可以用于执行相应数据字段的数据改变。此外,目标表420的所选行数和目标表420的若干不同的所选列数可以用于执行由所选行数指定的单个行的不同数据字段的若干数据改变。作为示例,目标表420可以被存储在第二计算机系统/服务器212的存储系统234中。
在一些实施例中,计算机系统(诸如图1和/或图2中所示的计算机系统10)可用于执行本文公开的操作,至少诸如第一操作、第二操作、第三操作、第四操作、第五操作、第六操作、第七操作和第八操作。
在一些实施例中,计算机系统10可以被配置用于将源表410的数据改变复制到目标表420中。
在一些实施例中,第一操作可包括在执行源表410的数据改变的同时重复地生成日志文件。作为示例,图7中示出了生成的日志文件的集合430。处理器16可通过发起对可存储源表410的存储系统34的写入来执行源表410的每个数据改变。每个日志文件430i可包括源表410的数据改变的至少一个记录。该第一操作可以借助于源数据库系统401、例如借助于处理器16来执行。
在一些实施例中,处理器16可执行源表410的新数据改变并且可生成包括必要信息(诸如上文描述的)的数据改变的新记录440n,以将源表410的新数据改变复制到目标表420中。因此,对于每个新数据改变,可以生成数据改变的新记录440n。此外,可在执行数据改变的同时重复地生成日志文件。在一些实施例中,处理器16还可以执行未在图中示出的另外的源表的另外的数据改变。此外,处理器16可以生成包括复制另外的源表的另外的数据改变所必要的信息的数据改变的另外的记录。另外的记录可被写入图中未示出的另外的日志文件和/或日志文件430中。因此,在一些实施例中,日志文件430可包括未在图中示出的数据改变的另外的记录中的一个或多个。在一些实施例中,一个或多个另外的日志文件可被存储在日志文件430之间。
在一些实施例中,可以通过在实际日志文件430m中写入复制新数据改变所必要的信息来生成新记录440n。对于每个另外的新数据改变,可以以与新记录440n相同的方式生成数据改变的另外的新记录。这样,对于若干另外的新数据改变,可以生成数据改变的若干另外的新记录。图8示出了源数据库系统401可能已经生成的生成的数据改变的记录的集合440。数据改变的每个记录440i可以包括诸如上述的必要信息,以复制与数据改变的相应记录440i相对应的源表410的数据改变。例如,源数据库系统401可能已经生成数据改变的第一记录4401,在这之后生成数据改变的第二记录4402,等等。所生成的最后记录可以是新记录440n。
在一些实施例中,第二操作可包括将日志文件430存储在第一存储器设备411上。在一些实施例中,日志文件430的存储可例如由另外的处理器450执行。源数据库401可以经由(I/O)接口22或经由网络适配器20连接至第一存储器设备411和/或另外的处理器450。第一存储器设备411可以包括或提供第一存取时间。例如,第一存取时间可以在35至100微秒的范围内。图4示出了包括实际日志文件430m的每个日志文件430i可直接在第一存储器设备411上生成的示例。在一些实施例中,例如,这可以通过从源数据库系统401向计算机系统10的另外的处理器450发送写入命令来执行。
然而,在一些实施例中,日志文件430i可内部地写入源数据库系统401中且可从源数据库系统401发送到第一存储器设备411。将新记录440n直接写在第一存储器设备411上而不将其存储在源数据库系统401内部可以提供目标数据库系统402能够尽快读取新记录440n的优点。在写入日志文件430i之后和/或期间,可将日志文件430i存储在第一存储器设备411上。在一些情况下,如果实际日志文件430m的大小超过给定的日志文件大小阈值,则另外的处理器450可以锁定实际日志文件430m并且生成新的实际日志文件(图4中未示出)。如果实际日志文件430m被锁定,则处理器16可能不再能够将数据改变的另外的新记录中的一个写入实际日志文件430m中。相反,处理器16可将另外的新记录中的一个写入新的实际日志文件中。
在一些实施例中,第三操作可以包括将存储在第一存储器设备411上的日志文件430的一部分存档在第二存储器设备412上。第二存储器设备412可以包括或提供第二存取时间。第二存取时间可以高于第一存取时间,例如,第二存取时间可以高于第一存取时间约100倍至200倍。在一些实施例中,另外的处理器450可以执行第三操作。另外的处理器450可以从第一存储器设备411加载日志文件的一部分并且将其存档在第二存储器设备412上。此外,另外的处理器450可删除第一存储器设备411上的日志文件430的存档部分。这样,可以创建第一存储器设备411上的空间以允许将另外的新记录写入实际日志文件430m中和/或生成新的实际日志文件。
在一些实施例中,另外的处理器450、第一存储器设备411和第二存储器设备412可以被认为是复制引擎。
在一些实施例中,在第四操作中,计算机系统10可以例如通过经由处理器216执行第四操作来提供第一类型的数据复制的执行,第一类型的数据复制可以被执行。第一类型的数据复制可以包括单独地重复地加载数据改变的记录440i中的每一个记录,并且根据对应的单独地加载的数据改变的记录440i将源表410的单行的相应数据改变复制到目标表420中(例如,增量复制等)。例如,图9中所示的数据改变的第一记录4401可以包括由这些值指定的修改后的数据字段的源表410的行数的第一值(在此示例中为“2”)和列数的第一值(在此示例中为“1”)以及该数据字段的新值(在此示例中为“4812”)。数据改变的第二记录4402可以包括由这些值指定的修改后的数据字段的源表410的行数的第二值(在此示例中为“1”)和列数的第二值(在此示例中为“2”)以及该数据字段的新值(在此示例中为“9001”)。
每个记录440i可以包括记录号字段441i,该记录号字段441i包含相应记录440i的记录号,其可以指示在生成相应记录440i的相应时刻被写入的源表410的数据改变的记录的总数。
根据第一类型的数据复制,目标数据库系统402可以从第一存储器设备411或第二存储器设备412加载第一记录4401并根据第一记录4401将源表410的第二行的数据改变复制到目标表420中。作为示例,处理器216可以提供将由行数“2”和列数“1”指定的目标表420的数据字段的值设置为等于4812。此外,根据第一类型的数据复制,在已经根据第一记录4401执行了数据改变在目标表420中的复制之后,目标数据库系统402可以从第一存储器设备411或第二存储器设备412加载第二记录4402并根据第二记录4402将源表410的第一行的数据改变复制到目标表420中。例如,处理器216可以提供将由行数“1”和列数“2”指定的目标表420的数据字段的值设置为等于9001。因此,在一些实施例中,另外的处理器450可以在每次从第一存储器设备411或第二存储器设备412加载第一记录4401和第二记录4402之一时对第一存储器设备411或第二存储器设备412进行存取。例如,在这种情况下,为了加载第一记录4401和第二记录4402,第一存储器设备411或第二存储器设备412可以被存取两次或者第一存储器设备411和第二存储器设备412可以各自被存取一次。
在一些实施例中,在第五操作中,计算机系统10可以提供用于执行第二类型的数据复制,例如,通过经由处理器216执行第五操作,第二类型的数据复制可以被执行。第二类型的数据复制可以包括加载用于一起更新目标表420的若干行的信息(例如,批量复制等)。在一些实施例中,该信息可由数据改变的记录440i中的若干记录呈现,例如,记录440i中的两个、记录440i中的一百个、记录440i的全部等。这样,可以从第一存储器设备411或第二存储器设备412一起加载数据改变的记录440i中的若干记录。此外,可根据加载的数据改变的记录440i将源表410的多于一行的数据改变复制到目标表420中。作为示例,处理器216可以从第一存储器设备411或第二存储器设备412一起加载第一记录4401和第二记录4402并根据第一记录4401在目标表420中执行第一数据改变并根据第二记录4402在目标表420中执行第二数据改变。一起加载若干记录可涉及仅存取第一存储器设备411或第二存储器设备412一次,且从可由第一存储器设备411或第二存储器设备412的单次存取实现的读取位置开始连续地读取若干记录。
在一些实施例中,对于第二类型的数据复制,用于更新目标表420的若干行的信息可以是源表410的数据值的形式,例如,源表中的数据值的分区或源表中的所有数据值。作为示例,在源表410被相对于日期排序的情况下,源表410的数据值的分区可表示某个月。可以直接从源数据库系统401(例如从存储系统34等)加载数据值。源表410的数据值可以例如借助于另外的处理器450等以矩阵的形式一起从源数据库系统401加载到目标数据库系统402,所述矩阵可以具有多个维度。在一些实施例中,数据改变的记录440可以不用于第二类型的数据复制。
图10示出了其中第一记录4401和第二记录4402被存储在第二存储器设备412上的示例实施例。存储在第一存储器设备411和第二存储器设备412上的日志文件430的总数可以等于m。存储在第一存储器设备411上的日志文件430的数量可等于l。
日志文件430中的第m个日志文件430m可以是第一存储器设备411的最年轻的日志文件,日志文件430中的第(m-l+1)个日志文件430m-l+1可以是第一存储器设备411的最旧的日志文件。存储在第二存储器设备412上的日志文件430的数量可以等于m-l。日志文件430中的第(m-l)个日志文件430m-l可以是第二存储器设备412的最年轻的日志文件。第一日志文件430l可以是第二存储器设备412的最旧的日志文件。日志文件430的记录在图10中被示为方框。
在一些实施例中,第六操作可以包括跟踪第二数量的第二未决数据改变。第六操作可以借助于另外的处理器450等执行。第二未决数据改变可以是存档在第二存储器设备412上的、尚未被复制到目标表420中的日志文件430的数据改变440i的记录的数据改变,这些记录可以被称为第二未决记录。可以通过计算第二未决记录的数量来执行第二数量的跟踪。在一些实施例中,可以跟踪从第一存储器设备411或第二存储器设备412读出的并且用于数据改变在目标表420中的复制的数据改变的最后记录(例如,称为数据改变的最后记录)的记录号。例如,如果数据改变的最后记录是第二记录4402,则数据改变的最后记录的记录号可以等于“2”。可以通过读取第二记录4402的第二记录号字段4412的值来跟踪数据改变的最后记录的记录号。在一些实施例中,可以通过从第二存储器设备412的最年轻的日志文件430m-l的最年轻的记录的记录号中减去数据改变的最后记录的记录号来计算第二数量。在一些实施例中,可以通过从数据改变的最后记录对存储在第二存储器设备412的日志文件上的记录进行计数来确定第二数量。
在一些实施例中,第七操作可以包括基于第二数量从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型。例如,如果第二数量大于第二阈值,则可以例如通过处理器216等来选择第二类型的数据复制。否则,可以选择第一类型的数据复制(例如,第二数量不大于第二阈值)。第七操作可以通过另外的处理器450、处理器216等执行。
在一些实施例中,可跟踪第一数量的第一未决数据改变。第一未决数据改变可以是存储在第一存储器设备411上的、尚未被复制到目标表420中的日志文件430的数据改变的记录440i的数据改变。在一些实施例中,如果跟踪第一数量和第二数量,那么选择可以基于第一数量和第二数量。在一些实施例中,第一数量可通过从数据改变的最后记录的记录号向前到第一存储器设备411的最新日志文件430m的最年轻的记录计数存储在第一存储器设备411上的记录来确定。这可以是当从第一存储器设备411中读取数据改变的最后记录时的情况。
在一些实施例中,数据复制的类型的选择可以涉及执行第一数量和第二数量的加权。例如,第一数量的加权可以基于第一存取时间(例如,access_time1),第二数量的加权可以基于第二存取时间(例如,access_time2)。
作为示例,第一数量n1和第二数量n2的加权和S可以根据以下等式计算:
S=access_time1*n1+access_time2*n2。
在一些实施例中,可以执行数据复制的类型的选择,使得如果加权和S小于第四阈值,那么选择第一类型的数据复制,如果加权和S大于或等于第四阈值,那么选择第二类型的数据复制。在一些实施例中,作为示例,第四阈值可以表示用于根据第二类型的数据复制来执行目标表420的所有行的更新的近似时间。在另一示例中,在一些实施例中,可基于过去经历来确定第四阈值,诸如当达到死锁情形或达到接近死锁情形的情形时。例如,可通过计算另一加权和(诸如根据以上给出的公式)来确定第四阈值,但在达到死锁情形或接近死锁情形的时刻使用另一数量的第一未决数据改变和第二未决数据改变,而不是使用第一数量n1和第二数量n2。在一些实施例中,然后可通过将所述另一加权和与介于0.1与0.9之间的值相乘来确定第四阈值以防止死锁情形。
在一些实施例中,第八操作可包括使用日志文件430的数据改变的记录440i,根据所选的数据复制的类型,将源表410的数据改变复制到目标表420中。第八操作可以通过处理器216等来执行。
在一些实施例中,计算机系统10可以是不具有网络连接性的独立计算机,该独立计算机可以通过本地接口接收要被处理的数据。然而,这样的操作同样可以使用连接到网络(诸如通信网络和/或计算网络)的计算机系统来执行。
图3示出了示例性计算环境,其中计算机系统(诸如计算机系统10)例如使用网络适配器20连接到网络200。在没有限制的情况下,网络200可以是通信网络(诸如因特网或其他公共网络)、广域网(WAN)、局域网(LAN)、无线网络(诸如移动通信网络)等。网络200可以包括计算网络,诸如云计算网络。计算机系统10可以从网络200接收要处理的数据和/或可以将计算结果提供给经由网络200连接到计算机系统10的另一个计算设备。
在一些实施例中,计算机系统10可以响应于经由网络200接收的请求完全或部分地执行在本文中描述的操作,诸如第一操作、第二操作、第三操作、第四操作、第五操作、第六操作、第七操作和第八操作。具体地,计算机系统10可以与一个或多个另外的计算机系统一起在分布式计算中执行这样的操作,该一个或多个另外的计算机系统可以经由网络200连接到计算机系统10。为此目的,计算系统10和/或任何另外涉及的计算机系统可以使用网络200访问另外的计算资源,诸如专用存储器或共享存储器等。
图11示出了计算机系统10的示例,其中,每个日志文件430i可以包括相应日志号431i,如图11中以圆圈的形式所示。在一些实施例中,相应日志号431i可以指示直到相应日志文件430i的生成开始的相应时刻,已经被生成的源表410的数据改变的记录的总数。相应日志号431i可以以相应首部行的形式包括在相应日志文件430i中。在下面的示例中,可以假设有两个日志文件存储在第一存储器设备411上,即第一日志文件4301和第二日志文件4302,并且有两个日志文件存储在第二存储器设备412上,即第三日志文件4303和第四日志文件430m。因此,按照这个示例,m等于“4”并且l等于“2”。第一日志文件4301的日志号4311可等于“10”,第二日志文件4302的日志号4312可以等于“32”,第三日志文件4303的日志号4313(例如,431m-l+1)可以等于“42”,第四日志文件4304的日志号4314(例如,431m)可以等于“112”。在这个示例中,第四日志文件4304可以是实际日志文件430m。
可以通过计算分配给第一存储器设备411的最年轻的日志文件430m的日志号(这里为日志号431m)与分配给第一存储器设备411的最旧的日志文件430m-1+1的日志号431m-1+1之间的差来确定第一数量。如果数据改变的最后记录被存储在第二存储器设备412上,则可以以这样的方式确定第一数量。
在一些实施例中,可以通过计算实际时刻处源表410的数据改变的实际总数与第一存储器设备411的最旧的日志文件430m-1+1的日志号431m-1+1之间的差来确定第一数量。在一些实施例中,源数据库系统401可以包括用于对源表410的数据改变的实际总数进行计数的计数器并且可以将数据改变的实际总数发送给另外的处理器450、目标数据库系统402等。
此外,在一些实施例中,使用日志号431i,第二数量可以被确定为第一存储器设备411的最旧的日志文件430m-1+1的日志号431m-1+1与数据改变的最后记录的记录号之间的差。在这种情况下,数据改变的最后记录可以存储在存档于第二存储器设备412上的日志文件430之一中。
此外,在一些实施例中,使用日志号431i,第一数量可以被计算为第一存储器设备411的最年轻的日志文件430m的日志号431m与数据改变的最后记录的记录号之间的差。在这种情况下,数据改变的最后记录可以是存储在第一存储器设备411上的日志文件430的记录440i中的一个。
图12示出了根据本发明的实施例的用于将源表410的数据改变复制到目标表420中的计算机实现的方法。
在步骤1201中,在执行源数据库系统401的表410的数据改变的同时重复地生成日志文件430i,每个日志文件430i包括源数据库系统401的表410的数据改变的至少一个记录。
在步骤1202中,将日志文件430i存储在第一存储器设备411上,第一存储器设备411具有第一存取时间。
在步骤1203中,将存储在第一存储器设备411上的日志文件430i的一部分存档在第二存储器设备412上,第二存储器设备412具有第二存取时间。第二存取时间可以高于第一存取时间。
在步骤1204中,可以提供第一类型的数据复制。
在步骤1205中,可以提供第二类型的数据复制。
在步骤1206中,可以跟踪指示第二未决数据改变的数量的第二数量。
在步骤1207中,可以根据第二数量和/或第一数量从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型。
在步骤1208中,可以使用日志文件430i的数据改变440i的记录根据所选择的数据复制的类型将源数据库系统401的源表410的数据改变复制到目标数据库系统402的目标表420中。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以是可保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储器设备、磁存储器设备、光存储器设备、电磁存储器设备、半导体存储器设备,或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构,以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发送的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,因特网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程式程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户的计算机,或者可连接至外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各个框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的部件。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的各个实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
在下文中,将通过强调本文公开的特征的若干可能的非排他的组合的条款的列表再次描述本发明。
条款1:一种用于将源数据库系统的表的数据改变复制到目标数据库系统的表中的计算机实现的方法,所述方法包括:在执行源数据库系统的表的数据改变的同时重复地生成日志文件,每个日志文件包括所述源数据库系统的表的数据改变的至少一个记录;将所述日志文件存储在第一存储器设备上,所述第一存储器设备具有第一存取时间;将存储在所述第一存储器设备上的所述日志文件的一部分存档在第二存储器设备上,所述第二存储器设备具有第二存取时间,其中所述第二存取时间高于所述第一存取时间;提供第一类型的数据复制,所述第一类型的数据复制包括重复地单独地加载所述数据改变的记录中的一个,并且根据对应的单独加载的数据改变的记录将所述源数据库系统的表的单个行的相应数据改变复制到所述目标数据库系统的表中;提供第二类型的数据复制,所述第二类型的数据复制包括一起加载用于更新所述目标数据库系统的表的若干行的信息并基于所述信息更新所述目标数据库系统的表的所述若干行;跟踪第二数量的第二未决数据改变,所述第二未决数据改变是存档在所述第二存储器设备上的、尚未被复制到目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变;根据所述第二数量从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型;以及使用所述日志文件的数据改变的记录,根据所选择的数据复制的类型,将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中。
条款2:根据条款1所述的方法,该方法还包括跟踪第一数量的第一未决数据改变,所述第一未决数据改变是存储在所述第一存储器设备上的、尚未被复制到所述目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变,所述选择取决于第一数量和第二数量。
条款3:根据条款1或2所述的方法,其中,加载用于更新目标数据库系统的表的若干行的信息包括一起加载数据改变的记录中的若干记录,其中,更新所述目标数据库系统的表的若干行包括根据所加载的数据改变的记录将所述源数据库系统的表的若干行的数据改变复制到所述目标数据库系统的表中,所述源数据库系统的表的若干行中的每一个与所述目标数据库系统的表的若干行之一相对应。
条款4:根据条款1或2所述的方法,其中,加载用于更新目标数据库系统的表的若干行的信息包括加载源数据库系统的表的若干行的数据值。
条款5:根据先前条款之一所述的方法,其中,数据复制的类型的选择包括第一数量和第二数量的加权,第一数量的加权基于第一存取时间,并且第二数量的加权基于第二存取时间。
条款6:根据先前条款之一所述的方法,该方法还包括如果第一数量和第二数量之间的比率大于或等于第三阈值,则选择第一类型的数据复制,并且如果第一数量和第二数量之间的比率小于第三阈值,则选择第二类型的数据复制,该比率是加权比率,所述加权比率包括基于第一存取时间而被加权的第一数量和基于第二存取时间而被加权的第二数量。
条款7:根据先前条款之一所述的方法,其中选择数据复制的类型包括计算第一数量和第二数量的加权和,第一数量基于第一存取时间而被加权并且第二数量基于第二存取时间而被加权;如果所述加权和小于第四阈值,则选择所述第一类型的数据复制;并且如果所述加权和大于或等于所述第四阈值,则选择所述第二类型的数据复制。
条款8:根据先前条款之一所述的方法,其中,第二类型的数据复制包括一起加载用于更新目标数据库系统的表的所有行的信息,并且基于该信息更新目标数据库系统的表的所有行。
条款9:根据先前条款之一所述的方法,该方法还包括使用相应日志号,每个相应日志号被分配给日志文件中的相应一个日志文件,其中每个相应日志号指示直到相应日志文件的生成开始的相应时刻为止已经被写入的所述源数据库系统的表的数据改变的记录的总数,并且其中第一数量和第二数量的跟踪基于分配给日志文件的相应日志号。
条款10:根据前述条款中任一项所述的方法,其中,日志文件各自包括相应日志号,每个相应日志号被分配给日志文件中的相应的一个日志文件,其中,每个相应日志号指示直到所述相应日志文件的生成开始的相应时刻为止已经被写入的所述源数据库系统的表的数据改变的记录的总数,并且其中第一数量和第二数量的跟踪基于日志文件的相应日志号。
条款11:根据条款9或10所述的方法,其中,第一数量的跟踪包括计算分配给存储在所述第一存储器设备上最短时间的日志文件的相应日志号和分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号之间的差。
条款12:根据条款9或10所述的方法,其中,第一数量的跟踪包括计算在实际时刻所述源数据库系统的表的数据改变的实际总数与分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号之间的差。
条款13:根据先前条款之一所述的方法,该方法还包括跟踪从所述第一存储器设备或所述第二存储器设备中读出的并且用于根据数据改变的最后记录将数据改变复制到所述目标数据库系统的表中的数据改变的最后记录的记录号,以及使用所述数据改变的最后记录的记录号来跟踪所述第一数量或所述第二数量。
条款14:根据条款9或10和13所述的方法,该方法还包括将所述第二数量计算为分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号与分配给所述数据改变的最后记录的记录号之间的差,其中,所述数据改变的最后记录被包括在存档在所述第二存储器设备上的日志文件中的一个日志文件中。
条款15:根据条款9或10和13所述的方法,该方法还包括将所述第一数量计算为分配给存储在所述第一存储器设备上最短时间的日志文件的相应日志号与分配给所述数据改变的最后记录的记录号之间的差,其中,所述数据改变的最后记录被包括在存储在所述第一存储器设备上的日志文件中的一个日志文件中。
条款16:根据先前条款之一所述的方法,该方法还包括恢复所述日志文件,所述恢复包括将存档在所述第二存储器设备上的所述日志文件存储在所述第一存储器设备上。
条款17:根据条款16所述的方法,该方法还包括基于存档在所述第二存储器设备上的所述日志文件的数据改变的记录的相应大小来执行所述恢复。
条款18:根据条款9或10所述的方法,该方法还包括使用计数器对所述源数据库系统的表的数据改变的记录的总数进行计数;确定所述计数器是否处于接近所述计数器的溢出的状态;如果所述计数器处于接近所述计数器的溢出的状态,则选择所述第二类型的数据复制;使用所述日志文件的数据改变的记录,根据所述第二类型的数据复制,在将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中之后,重置所述计数器;其中,所述第二类型的数据复制包括一起加载存储在所述第一存储器设备和所述第二存储器设备上的数据改变的所有记录,以及根据所有加载的数据改变的记录来将所述源数据库系统的表的多于一行的数据改变复制到所述目标数据库系统的表中。
条款19:一种计算机程序产品,包括具有随其体现的计算机可读程序指令的计算机可读存储介质,所述计算机可读程序指令被配置为实现根据前述方法条款1至18中任一项所述的方法的步骤。
条款20:一种用于将源数据库系统的表的数据改变复制到目标数据库系统的表中的计算机系统,所述计算机系统包括源数据库系统和目标数据库系统,所述计算机系统被配置用于:在执行源数据库系统的表的数据改变的同时重复地生成日志文件,每个日志文件包括所述源数据库系统的表的数据改变的至少一个记录;将所述日志文件存储在第一存储器设备上,所述第一存储器设备具有第一存取时间;将存储在所述第一存储器设备上的所述日志文件的一部分存档在第二存储器设备上,所述第二存储器设备具有第二存取时间,其中所述第二存取时间高于所述第一存取时间;跟踪第二数量的第二未决数据改变,所述第二未决数据改变是存档在所述第二存储器设备上的、尚未被复制到目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变;根据所述第二数量,从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型;以及使用所述日志文件的数据改变的记录,根据所选择的数据复制的类型,将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中。
条款21:根据条款20所述的计算机系统,其中,第一类型的数据复制包括重复地单独地加载所述数据改变的记录中的一个,并且根据对应的单独加载的数据改变的记录将所述源数据库系统的表的单个行的相应数据改变复制到所述目标数据库系统的表中。
条款22:根据条款20所述的计算机系统,其中,第二类型的数据复制包括一起加载用于更新目标数据库系统的表的若干行的信息并基于该信息更新目标数据库系统的表的若干行。
条款23:一种用于将源数据库系统的表的数据改变复制到目标数据库系统的表中的计算系统,所述计算机系统包括源数据库系统和目标数据库系统,所述计算机系统被配置为实现根据前述方法条款1至18中任一项所述的方法的步骤。
Claims (20)
1.一种计算机实现的方法,包括:
在执行源数据库系统的表的数据改变的同时重复地生成日志文件,每个日志文件包括所述源数据库系统的表的数据改变的至少一个记录;
将所述日志文件存储在第一存储器设备上,所述第一存储器设备具有第一存取时间;
将存储在所述第一存储器设备上的所述日志文件的一部分存档在第二存储器设备上,所述第二存储器设备具有第二存取时间,其中所述第二存取时间高于所述第一存取时间;
跟踪第二数量的第二未决数据改变,所述第二未决数据改变是存档在所述第二存储器设备上的、尚未被复制到目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变;
基于所述第二数量,从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型;以及
使用所述日志文件的数据改变的记录,根据所选择的数据复制的类型,将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中。
2.根据权利要求1所述的计算机实现的方法,其中,所述第一类型的数据复制包括单独加载所述数据改变的记录中的每一个,并且根据对应的单独加载的数据改变的记录将所述源数据库系统的表的单个行的相应数据改变复制到所述目标数据库系统的表中。
3.根据权利要求1所述的计算机实现的方法,其中,所述第二类型的数据复制包括一起加载用于更新所述目标数据库系统的表的若干行的信息并基于所述信息更新所述目标数据库系统的表的所述若干行。
4.根据权利要求1所述的计算机实现的方法,所述方法还包括:
跟踪第一数量的第一未决数据改变,所述第一未决数据改变是存储在所述第一存储器设备上的、尚未被复制到所述目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变;以及
基于所述第一数量和所述第二数量来选择所述数据复制的类型。
5.根据权利要求4所述的计算机实现的方法,其中,所述数据复制的类型的选择包括所述第一数量的加权和所述第二数量的加权,其中,所述第一数量的加权基于所述第一存取时间,并且所述第二数量的加权基于所述第二存取时间。
6.根据权利要求4所述的计算机实现的方法,所述方法还包括:
响应于所述第一数量和所述第二数量之间的比率大于或等于第三阈值,选择所述第一类型的数据复制;
其中,所述比率是加权比率,所述加权比率包括取决于所述第一存取时间而被加权的所述第一数量和取决于所述第二存取时间而被加权的所述第二数量。
7.根据权利要求4所述的计算机实现的方法,所述方法还包括:
响应于所述第一数量和所述第二数量之间的比率小于第三阈值,选择所述第二类型的数据复制;
其中,所述比率是加权比率,所述加权比率包括取决于所述第一存取时间而被加权的所述第一数量和取决于所述第二存取时间而被加权的所述第二数量。
8.根据权利要求4所述的计算机实现的方法,其中,所述数据复制的类型的选择包括:
计算所述第一数量和所述第二数量的加权和,所述第一数量基于所述第一存取时间而被加权并且所述第二数量基于所述第二存取时间而被加权;以及
如果所述加权和小于第四阈值,则选择所述第一类型的数据复制,如果所述加权和大于或等于所述第四阈值,则选择所述第二类型的数据复制。
9.根据权利要求4所述的计算机实现的方法,所述方法还包括:
获得相应日志号,其中每个相应日志号被分配给所述日志文件中的相应一个日志文件,其中每个相应日志号指示直到相应日志文件的生成开始的相应时刻为止已经被写入的所述源数据库系统的表的数据改变的记录的总数;以及
使用分配给所述日志文件的相应日志号来跟踪所述第一数量和第二数量。
10.根据权利要求4所述的计算机实现的方法,其中,所述日志文件各自包括相应日志号,每个相应日志号被分配给所述日志文件中的相应一个日志文件,所述相应日志号指示直到所述相应日志文件的生成开始的相应时刻为止已经被写入的所述源数据库系统的表的数据改变的记录的总数;并且其中所述第一数量和所述第二数量的跟踪使用所述日志文件的相应日志号。
11.根据权利要求9所述的计算机实现的方法,其中,所述第一数量的跟踪包括计算分配给存储在所述第一存储器设备上最短时间的日志文件的相应日志号和分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号之间的差。
12.根据权利要求9所述的计算机实现的方法,其中,所述第一数量的跟踪包括计算在实际时刻所述源数据库系统的表的数据改变的实际总数与分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号之间的差。
13.根据权利要求9所述的计算机实现的方法,所述方法还包括:
跟踪从所述第一存储器设备或所述第二存储器设备中读出的并且用于根据数据改变的最后记录将数据改变复制到所述目标数据库系统的表中的数据改变的最后记录的记录号;以及
使用所述数据改变的最后记录的记录号来跟踪所述第一数量或所述第二数量。
14.根据权利要求13所述的计算机实现的方法,所述方法还包括将所述第二数量计算为分配给存储在所述第一存储器设备上最长时间的日志文件的相应日志号与分配给所述数据改变的最后记录的记录号之间的差,其中,所述数据改变的最后记录被包括在存档在所述第二存储器设备上的日志文件中的一个日志文件中。
15.根据权利要求13所述的计算机实现的方法,所述方法还包括将所述第一数量计算为分配给存储在所述第一存储器设备上最短时间的日志文件的相应日志号与分配给所述数据改变的最后记录的记录号之间的差,其中,所述数据改变的最后记录被包括在存储在所述第一存储器设备上的日志文件中的一个日志文件中。
16.根据权利要求1所述的计算机实现的方法,所述方法还包括恢复所述日志文件,所述恢复包括将存档在所述第二存储器设备上的所述日志文件存储在所述第一存储器设备上。
17.根据权利要求16所述的计算机实现的方法,所述方法还包括基于存档在所述第二存储器设备上的所述日志文件的数据改变的记录的相应大小来执行所述恢复。
18.根据权利要求1所述的计算机实现的方法,所述方法还包括:
使用计数器对所述源数据库系统的表的数据改变的记录的总数进行计数;
确定所述计数器是否处于接近所述计数器的溢出的状态;
如果所述计数器处于接近所述计数器的溢出的状态,则选择所述第二类型的数据复制;以及
使用所述日志文件的数据改变的记录,根据所述第二类型的数据复制,在将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中之后,重置所述计数器;
其中,所述第二类型的数据复制包括一起加载存储在所述第一存储器设备和所述第二存储器设备上的数据改变的所有记录,以及根据所有加载的数据改变的记录来将所述源数据库系统的表的多于一行的数据改变复制到所述目标数据库系统的表中。
19.一种计算机程序产品,包括具有随其体现的计算机可读程序指令的计算机可读存储介质,所述计算机可读程序指令能够由一个或多个处理器执行以执行一种方法,所述方法包括:
在执行源数据库系统的表的数据改变的同时重复地生成日志文件,每个日志文件包括所述源数据库系统的表的数据改变的至少一个记录;
将所述日志文件存储在第一存储器设备上,所述第一存储器设备具有第一存取时间;
将存储在所述第一存储器设备上的所述日志文件的一部分存档在第二存储器设备上,所述第二存储器设备具有第二存取时间,其中所述第二存取时间高于所述第一存取时间;
跟踪第二数量的第二未决数据改变,所述第二未决数据改变是存档在所述第二存储器设备上的、尚未被复制到目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变;
基于所述第二数量,从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型;以及
使用所述日志文件的数据改变的记录,根据所选择的数据复制的类型,将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中。
20.一种计算机系统,包括:
至少一个处理器;
至少一个计算机可读存储介质;
源数据库系统;以及
目标数据库系统;
其中:
所述至少一个处理器被结构化、定位、连接以及编程为运行存储在所述至少一个计算机可读存储介质上的程序指令;并且
所存储的程序指令包括:
被编程为在执行源数据库系统的表的数据改变的同时重复地生成日志文件的程序指令,每个日志文件包括所述源数据库系统的表的数据改变的至少一个记录;
被编程为将所述日志文件存储在第一存储器设备上的程序指令,所述第一存储器设备具有第一存取时间;
被编程为将存储在所述第一存储器设备上的所述日志文件的一部分存档在第二存储器设备上的程序指令,所述第二存储器设备具有第二存取时间,其中所述第二存取时间高于所述第一存取时间;
被编程为跟踪第二数量的第二未决数据改变的程序指令,所述第二未决数据改变是存档在所述第二存储器设备上的、尚未被复制到目标数据库系统的表中的所述日志文件的数据改变的记录中的数据改变;
被编程为基于所述第二数量从第一类型的数据复制和第二类型的数据复制中选择数据复制的类型的程序指令;以及
被编程为使用所述日志文件的数据改变的记录根据所选择的数据复制的类型将所述源数据库系统的表的数据改变复制到所述目标数据库系统的表中的程序指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/189,648 | 2021-03-02 | ||
US17/189,648 US11675809B2 (en) | 2021-03-02 | 2021-03-02 | Replicating data changes using multiple storage devices and tracking records of pending data changes stored on the storage devices |
PCT/CN2022/076307 WO2022183904A1 (en) | 2021-03-02 | 2022-02-15 | Replicating data changes using multiple storage devices and tracking records of pending data changes stored on storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116964573A true CN116964573A (zh) | 2023-10-27 |
Family
ID=83117149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280018759.5A Pending CN116964573A (zh) | 2021-03-02 | 2022-02-15 | 使用多个存储设备复制数据改变并跟踪存储在存储设备上的未决数据改变的记录 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11675809B2 (zh) |
JP (1) | JP2024507708A (zh) |
CN (1) | CN116964573A (zh) |
DE (1) | DE112022001311T5 (zh) |
GB (1) | GB2619469A (zh) |
WO (1) | WO2022183904A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648202A (zh) * | 2024-01-30 | 2024-03-05 | 深圳市纷享互联科技有限责任公司 | 一种异构系统数据同步过程死循环检测方法、系统及介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116703651B (zh) * | 2023-08-08 | 2023-11-14 | 成都秦川物联网科技股份有限公司 | 一种智慧燃气数据中心运行管理方法、物联网系统和介质 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4090225A (en) | 1977-01-21 | 1978-05-16 | Mcgraw-Edison Company | Fail-safe circuit for tap-changing transformer regulating system |
US6029178A (en) | 1998-03-18 | 2000-02-22 | Bmc Software | Enterprise data movement system and method which maintains and compares edition levels for consistency of replicated data |
DE29907707U1 (de) | 1999-02-12 | 1999-08-05 | Yu, Tsung-Mou, Pan-Chiao, Taipeh | Kleiner und einfacher Schalter mit einem Schaltungsschutz |
US6745209B2 (en) | 2001-08-15 | 2004-06-01 | Iti, Inc. | Synchronization of plural databases in a database replication system |
AUPR739401A0 (en) | 2001-08-31 | 2001-09-20 | Safe Effect Pty Ltd | Hydraulic brake circuit |
US8121978B2 (en) | 2002-11-15 | 2012-02-21 | Sybase, Inc. | Database system providing improved methods for data replication |
US8688634B2 (en) | 2004-02-27 | 2014-04-01 | International Business Machines Corporation | Asynchronous peer-to-peer data replication |
US7651593B2 (en) * | 2005-12-19 | 2010-01-26 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8799213B2 (en) | 2007-07-31 | 2014-08-05 | Oracle International Corporation | Combining capture and apply in a distributed information sharing system |
US8996458B2 (en) | 2009-12-23 | 2015-03-31 | Sybase, Inc. | High volume, high speed adaptive data replication |
US8510270B2 (en) | 2010-07-27 | 2013-08-13 | Oracle International Corporation | MYSQL database heterogeneous log based replication |
US8862542B2 (en) | 2010-08-31 | 2014-10-14 | Red Hat, Inc. | Replicating data objects within a storage network |
US9824091B2 (en) | 2010-12-03 | 2017-11-21 | Microsoft Technology Licensing, Llc | File system backup using change journal |
US9672126B2 (en) | 2011-12-15 | 2017-06-06 | Sybase, Inc. | Hybrid data replication |
AU2013277351A1 (en) | 2012-06-18 | 2015-01-22 | Actifio, Inc. | Enhanced data management virtualization system |
US9411866B2 (en) * | 2012-12-19 | 2016-08-09 | Sap Global Ip Group, Sap Ag | Replication mechanisms for database environments |
US9607065B2 (en) * | 2013-04-26 | 2017-03-28 | Netapp, Inc. | Hierarchical coherency log for managing a distributed data storage system |
GB2524540A (en) | 2014-03-26 | 2015-09-30 | Ibm | Replication of a relational database |
US10706024B2 (en) | 2014-04-28 | 2020-07-07 | International Business Machines Corporation | Techniques for managing a data replication mode |
US11144397B2 (en) | 2014-09-12 | 2021-10-12 | Microsoft Technology Licensing, Llc | Data recovery using bitmap data structure |
GB2533086A (en) | 2014-12-08 | 2016-06-15 | Ibm | Controlling a multi-database system |
US10078556B2 (en) | 2015-08-31 | 2018-09-18 | Paypal, Inc. | Data replication between databases with heterogenious data platforms |
US10552453B2 (en) | 2015-11-25 | 2020-02-04 | International Business Machines Corporation | Determining data replication cost for cloud based application |
US11281691B2 (en) * | 2015-12-07 | 2022-03-22 | International Business Machines Corporation | Data replication based on compression ratio history |
US10452491B2 (en) | 2016-04-14 | 2019-10-22 | Sap Se | Scalable log partitioning system |
CN106294713A (zh) | 2016-08-09 | 2017-01-04 | 深圳中兴网信科技有限公司 | 基于增量日志解析的数据同步方法和数据同步装置 |
US10255341B2 (en) | 2016-09-19 | 2019-04-09 | Sap Se | Mode switching in high availability disaster recovery (HADR) systems |
US10671642B2 (en) | 2016-11-11 | 2020-06-02 | International Business Machines Corporation | Copying data changes to a target database |
CN108319602B (zh) | 2017-01-17 | 2020-10-16 | 阿里巴巴(中国)有限公司 | 数据库管理方法及数据库系统 |
KR101904786B1 (ko) | 2017-03-06 | 2018-10-08 | 주식회사 데이터스트림즈 | 소스 데이터베이스 관리시스템에서 변경되는 데이터를 실시간으로 목표 데이터베이스 관리시스템에 복제하는 장치 및 그 방법 |
US10540346B2 (en) | 2017-08-31 | 2020-01-21 | International Business Machines Corporation | Offloading constraint enforcement in a hybrid DBMS |
US10698883B2 (en) | 2017-10-25 | 2020-06-30 | International Business Machines Corporation | Data coherency between trusted DBMS and untrusted DBMS |
US10540356B2 (en) | 2017-10-25 | 2020-01-21 | International Business Machines Corporation | Transparent analytical query accelerator over encrypted data |
US20190163370A1 (en) | 2017-11-28 | 2019-05-30 | International Business Machines Corporation | Data replication based on data-driven recovery objectives |
GB201812375D0 (en) | 2018-07-30 | 2018-09-12 | Ibm | Updating a table using incremental and batch updates |
US11397749B2 (en) | 2019-05-14 | 2022-07-26 | International Business Machines Corporation | Asynchronous replication of in-scope table data |
US11487714B2 (en) | 2019-05-15 | 2022-11-01 | International Business Machines Corporation | Data replication in a data analysis system |
CN110795508B (zh) | 2019-11-04 | 2023-04-07 | 中国建设银行股份有限公司 | 数据的复制方法、装置、设备和存储介质 |
CN110819602B (zh) * | 2019-11-12 | 2021-07-20 | 武汉大学 | 水稻tRNA异戊烯基转移酶基因OsIPT9在水稻抗褐飞虱中的应用 |
US11704335B2 (en) * | 2020-11-13 | 2023-07-18 | International Business Machines Corporation | Data synchronization in a data analysis system |
US11954119B2 (en) | 2021-01-14 | 2024-04-09 | International Business Machines Corporation | Applying changes in a target database system |
US11475043B2 (en) | 2021-03-05 | 2022-10-18 | International Business Machines Corporation | Machine learning based application of changes in a target database system |
-
2021
- 2021-03-02 US US17/189,648 patent/US11675809B2/en active Active
-
2022
- 2022-02-15 CN CN202280018759.5A patent/CN116964573A/zh active Pending
- 2022-02-15 WO PCT/CN2022/076307 patent/WO2022183904A1/en active Application Filing
- 2022-02-15 GB GB2314486.8A patent/GB2619469A/en active Pending
- 2022-02-15 JP JP2023546395A patent/JP2024507708A/ja active Pending
- 2022-02-15 DE DE112022001311.7T patent/DE112022001311T5/de active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648202A (zh) * | 2024-01-30 | 2024-03-05 | 深圳市纷享互联科技有限责任公司 | 一种异构系统数据同步过程死循环检测方法、系统及介质 |
CN117648202B (zh) * | 2024-01-30 | 2024-05-14 | 深圳市纷享互联科技有限责任公司 | 一种异构系统数据同步过程死循环检测方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022183904A1 (en) | 2022-09-09 |
US20220284033A1 (en) | 2022-09-08 |
GB2619469A (en) | 2023-12-06 |
JP2024507708A (ja) | 2024-02-21 |
GB202314486D0 (en) | 2023-11-08 |
US11675809B2 (en) | 2023-06-13 |
DE112022001311T5 (de) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9767035B2 (en) | Pass-through tape access in a disk storage environment | |
US20220004504A1 (en) | Integration of application indicated maximum time to cache to least recently used track demoting schemes in a cache management system of a storage controller | |
CN116964573A (zh) | 使用多个存储设备复制数据改变并跟踪存储在存储设备上的未决数据改变的记录 | |
US10169358B2 (en) | Data deduplication using a small hash table | |
US20170060886A1 (en) | File deletion in storage devices based on the deletion priority rules | |
US10366052B2 (en) | Identifying partial update for tape file system | |
US10223038B2 (en) | File management in a file system | |
US10838944B2 (en) | System and method for maintaining a multi-level data structure | |
US10656860B2 (en) | Tape drive library integrated memory deduplication | |
US11289115B1 (en) | Copying a storage tape | |
US9996459B2 (en) | Reclaiming of sequential storage medium | |
KR20220125198A (ko) | 데이터의 추가 기록 방법, 장치, 전자 기기, 저장 매체 및 컴퓨터 프로그램매체 | |
US10620865B2 (en) | Writing files to multiple tapes | |
US10691349B2 (en) | Mitigating data loss | |
AU2021238984B2 (en) | Predictive provisioning of remotely-stored files | |
US20160070487A1 (en) | Tape backup and restore in a disk storage environment with intelligent data placement | |
US20220284034A1 (en) | Replicating data changes of a source database in a target database using data change records and runtime statistics of the source database | |
US10726870B2 (en) | Timing index writes to a tape medium | |
US20170153840A1 (en) | Data Updating in a File System | |
US11625184B1 (en) | Recalling files from tape | |
US11768604B2 (en) | Reducing time to locate and read files within a tape medium | |
US11681588B2 (en) | Performing conditional snapshot creation during continuous data protection age-out | |
US20230161731A1 (en) | Re-ordering files by keyword for migration | |
US11487457B2 (en) | Reclassification of files in a hierarchical storage management system | |
CN114816839A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |