CN105786955B - 数据库管理系统中的数据复制 - Google Patents
数据库管理系统中的数据复制 Download PDFInfo
- Publication number
- CN105786955B CN105786955B CN201610009447.4A CN201610009447A CN105786955B CN 105786955 B CN105786955 B CN 105786955B CN 201610009447 A CN201610009447 A CN 201610009447A CN 105786955 B CN105786955 B CN 105786955B
- Authority
- CN
- China
- Prior art keywords
- secondary series
- sentence
- row
- data
- request
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- 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/21—Design, administration or maintenance of databases
-
- 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
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
Abstract
本公开的实施例涉及数据库管理系统中的数据复制。根据一个方面,一种数据库管理系统(DBMS)操作用于执行数据复制。该DBMS包括源数据库和目标数据库。该源数据库包括分别包含一个或多个第一列的多个第一表,并且该目标数据库包括分别包含一个或多个第二列的多个第二表。该第一列中的多个第一列中的每个第一列被映射到第二列中的一个第二列,第二列中的每个第二列适于存储被映射到第二列的第一列的复制的数据变化。第二列中的每个第二列具有分配的更新时间,该更新时间为第二列从其映射的第一列最近接收增量数据变化的时刻,该DBMS操作用于在提供数据复制时处理所请求的数据库语句。
Description
技术领域
本公开内容总体上涉及计算机系统,并且更具体地涉及数据库管理系统中的数据复制。
背景技术
存在各种类型的数据管理系统(DBMS),这些DBMS通常为高效地执行一些特定种类的数据库查询而进行优化。所述专用DBMS可以能够高效地处理第一类型的数据库查询,但是在处理另一类型的数据库查询时可能是缓慢的,这是因为由DBMS管理的数据库的表结构和索引没有针对所述另一类型的查询而进行优化。例如,OLAP数据库可以高效地处理OLAP查询,但是不能高效地处理OLTP查询。OLTP数据库可以高效地处理OLTP查询,但是不能高效地处理OLAP查询。
一些(基于例如混合DBMS的)现有方法试图通过将数据冗余地存储在要被查询的数据的两个不同的副本中来克服所述困难。每个副本被存储在数据库中,该数据库可以为高效地执行特定种类的数据库查询而进行优化。
除了所述OLTP/OLAP情形,存在其他的使用案例,在其他的使用案例中,例如在云环境的背景下,数据被冗余地存储在具有相同或不同的结构的多个数据库中。
与将相同数据的多个副本存储在多个数据库中相关联的问题在于应用在所述副本中的一个副本中的数据变化需要被复制到另一副本。在成功执行所述复制之前,所述两个副本没有同步并且响应于数据库查询而返回不同结果。数据同步协议(诸如“两阶段提交协议”(2PC))协调参与到关于是否将已经在所述两个副本中的一个副本中执行的事务复制到另一副本以及何时将已经在所述两个副本中的一个副本中执行的事务复制到另一副本的决策中的所有过程。该复制应当确保两个副本的数据一致性。然而,因为用于保持两个数据副本同步的同步往返生成重大计算开销,所以所述2PC协议是“重量级”的。
发明内容
实施例包括一种用于操作数据库管理系统(DBMS)的方法、系统和装置。该DBMS包括源数据库和目标数据库。源数据库包括多个第一表,第一表包括第一列。目标数据库包括多个第二表,第二表包括第二列。第一列中的多个第一列中的每个第一列被映射到第二列中的一个,其中所述第二列中的每一个适于存储被映射到所述第二列的第一列的复制的数据变化。第二列中的每个已经被分配更新时间。更新时间是在所述第二列从其映射的第一列最近接收增量数据变化的时刻。该方法包括:DBMS接收用于执行所请求的语句的请求。如本文中使用的‘语句’是数据库语句,例如SQL语句。DBMS预测在处理所请求的语句时将被访问的第二列中的一个或多个第二列。DBMS针对所预测的第二列中的每个第二列确定其分配的更新时间。DBMS标识同步点时间,其中同步点时间为所有确定的所述更新时间中的最近更新时间。DBMS标识开始时间,其中开始时间为所有确定的所述更新时间中的最早更新时间。在所标识的开始时间不同于所标识的同步点时间的情况下,所述DBMS从被映射到所预测的第二列中的一个第二列的所有第一列向所预测的第二列选择性地且增量地复制数据变化,使得在开始时间与同步点时间之间被施加在所述第一列上的所有数据变化选择性地被复制到所预测的第二列。可以根据第一列和第二列的映射来执行对数据从第一列到第二列的复制。在复制之后,所预测的第二列中的每个第二列的更新时间被设置为同步点时间。DBMS延迟执行所请求的语句直到成功终止复制。在终止之后,DBMS在目标数据库中执行所请求的语句。
附加的实施例包括一种用于操作包括源数据库和目标数据库的DBMS的方法、系统和计算机程序产品。源数据库包括分别包含一个或多个第一列的多个第一表。目标数据库包括分别包含一个或多个第二列的多个第二表。第一列中的多个第一列中的每个第一列被映射到所述第二列中的一个。数据库管理系统被配置为以分批的方式将第一列中的任何一个第一列的数据变化复制到其映射的第二列。复制数据变化:自动地且重复地评价第二列中的每个的请求历史,以确定第二列的访问频率,请求历史指示响应于客户端的请求而在预定义时间间隔期间先前已经对所述第二列执行的语句的数目;自动地计算针对所述第二列的批处理大小,批处理大小指示单个批处理内的语句的最大可允许数目或最大批处理大小,其中计算使得最大可允许数目或最大批处理大小与所述第二列的访问频率负相关;并且针对所述第二列中的每个:通过集中还没有被复制到第二列的、被映射到所述第二列的第一列的数据变化来创建批处理;在确定所述批处理的大小已经达到其计算的批处理大小时,自动地执行批处理,从而将在所述批处理中集中的所述数据变化复制到所述第二列。
通过本公开内容的技术实现附加的特征和优点。在本文中详细描述本公开内容的其他实施例和方面。为了更好地理解具有优点和特征的本公开内容,参考说明书并参考附图。
附图说明
被认为是本发明的主题被特别指出并且清楚地被要求保护在本说明书的结论处的权利要求中。本发明的前述特征和其他特征以及优点将从结合附图进行的下面的具体实施方式变得显而易见,在附图中:
图1图示了根据实施例的DBMS的实施例;
图2a和2b示出了根据实施例的多个第一列和第二列;
图3示出了根据实施例的到目标数据库的数据复制;以及
图4是图示了根据实施例的方法的流程图。
具体实施方式
在下文中,附图中的类似编号的元件指代类似的元件或执行等价功能的元件。已经在前面讨论过的元件在功能是等价的情况下将不必在稍后的附图中进行讨论。
如本文中使用的“数据库”是以特定定义的数据结构被组织在存储器中或被存储在非易失性存储卷上的电子信息的集合,该特定定义的数据结构支持通过特定类型的数据库查询的数据检索或针对通过特定类型的数据库查询的数据检索而被优化。
可以以表或列或其他形式的数据结构来组织数据库以提供高效检索。单独的表可以用作数据库。在传统数据库中,数据库的所有表具有关于存储器中或非易失性存储介质上的数据的物理组织的相同的结构。例如,一些面向行的数据库可以包括以面向行的方式来组织它们的数据的多个表。一些面向列的数据库可以仅仅包括以面向列的方式来组织它们的数据的表。在所述情况下,数据库和所有它的表可以在结构上针对特定类型的数据库查询而被优化。
还存在一些DBMS,这些DBMS将数据冗余地存储在支持不同种类的数据库查询的不同数据结构中。例如,一些DBMS在以面向行的方式存储一些数据时,自动地创建数据的副本并以面向列的方式存储副本。DBMS可以隐藏两种不同的数据结构,其包括两个数据副本并且针对来自用户的不同种类的数据库查询而被优化:DBMS可以“呈现”仅单个“虚拟表”,在单个“虚拟表”处,数据库查询可以被指向并且自动地将数据库查询调度到两种数据结构中的一种数据结构,其被优化用于处理所述种类的查询。尽管所述种类的DBMS仅向用户或客户端应用程序呈现仅仅单个“虚拟表”,但是实际上所述DBMS包括两种不同的数据库表,其结构针对不同种类的数据库查询而被优化。尽管由单个“虚拟表”表示,但是所述两种不同种类的数据库表(例如,以行为主次序组织的数据容器和以列为主次序组织的数据容器)在下文中将被认为是针对不同种类的数据库查询的两个数据库而进行的优化,其可以分别用作源数据库和目标数据库。因此,根据上述定义,将数据库查询调度到针对不同种类的数据库查询分别优化的多种不同的数据结构中的一种的“虚拟数据库表”,因此在本发明的实施例的意义上不是“数据库”。相反,所述多种不同的数据结构中的每种数据结构将分别与如本文中使用的“数据库”类似。
“数据库管理系统”(DBMS)是基于软件和/或硬件的系统,其被设计用于允许对一个或多个数据库的定义、创建、查询、更新和管理。通常,DBMS能用于与用户、与其他应用以及由DBMS管理的一个或多个数据库交互,以处理一些请求并分析数据。众所周知的DBMS包括MySQL、MariaDB、PostgreSQL、SQLite、Microsoft SQL Server、Microsoft Access、Oracle、SAP HANA、dBASE、FoxPro、IBM DB2等。
如本文中使用的术语“语句”指代结构化查询语言(SQL)语句,其在数据库中执行写入操作(INSERT、UPDATE或DELETE)或从数据库读取数据的读取操作(SELECT)。读取数据可以具有结果集的形式,即通过执行读取语句返回的数据的列和行的逻辑集。“事务”或“数据库事务”是数据库操作的逻辑单元,其作为整体被执行以处理用于检索数据的用户请求。事务是包括并且构造(frame)一个或多个语句的更大的单元。事务确保所构造的语句的动作相对于恢复是原子性的。
如本文中使用的术语“日志”指代用作关于已经执行在特定数据库上的所有语句和事务的信息的容器的数据结构。取决于实施例,日志可以包括足够用于恢复数据库的内容的信息,并且还可以包括用于统计、追踪或性能评价的信息。‘日志’可以被实施为电子文档,例如文本文件、二进制文件或数据库记录的集合。单个物理数据结构(文件、数据库记录的集合等)可以包括多个数据库的日志。日志包括“日志记录”。“日志记录”是在操作在所录入的数据库上的SQL引擎内的活动的单个原子日志。
如本文中使用的两个数据库的“数据一致性”意指特定请求将返回相同的结果或几乎相同的结果,而不管用于处理请求的数据库。
如本文中使用的对第二列的‘预测’描述了对在DBMS处理特定语句(诸如SQLSELECT语句)时将被访问的一个或多个第二列的自动计算。‘预测’具有不同程度的可靠性:如果预测基于对SQL语句进行解析,则预测可以是100%准确的,这是因为第二列将被指定为SQL语句的部分。如果预测基于对查询历史(诸如目标日志)的统计分析,则预测可能不是100%准确的,这是因为预测仅基于统计评价。然而,用于预测在处理查询时要被访问的第二列(或第二表)的两种实施方式变型在下文中应当由术语‘预测’涵盖。
图1和图4将在下文中一起进行描述以图示操作DBMS的上述方法和对应的DBMS的实施例。
图1示出了包括源数据库122和目标数据库106的DBMS 104的方框图。DBMS可以由数据库服务器102托管。所述源数据库包括如例如在图2中所描绘的多个第一表ST1、ST2、ST3、ST4。每个第一表包括一个或多个第一列SC1-SC13。目标数据库106包括分别包含一个或多个第二列TC1-TC13的多个第二表TT1-TT4。
第一列中的多个第一列中的每个第一列被映射200、202到第二列中的一个第二列(参见图2)。所述多个第二列中的每个第二列适于存储原先已经被引入并被存储在其分别映射的第一列中的复制的数据变化。
第二列中的每个已经被分配如例如在图2中所描绘的更新时间UT1-UT6。更新时间是第二列从其映射的第一列最近接收增量数据变化的时刻。在方框602中,DBMS接收对于执行所请求的语句T4S4的请求308。例如,请求可以包括针对多个语句T4S2、T4S5、T4S4的请求,其可以分别被分析以确定所分析的所请求的语句是归属于第一类型的语句WT、RTI,例如写入语句或简单的读取(‘SELECT’)语句还是归属于第二类型的语句RTII,例如复合读取(‘SELECT’)语句。
在方框604中,DBMS预测在处理所请求的语句T4S4时将被访问的第二列中的一个或多个第2列。在方框606中,DBMS针对所预测的第二列中的每个第二列确定其分配的更新时间。
在方框608中,DBMS标识同步点时间。同步点时间是所有确定的所述更新时间中的最近更新时间。在方框610中,DBMS标识开始时间。开始时间是所有确定的所述更新时间的最早更新时间。在方框612中,DBMS检查所标识的开始时间是否不同于所标识的同步点时间。如果是的话,在方框614中,DBMS从被映射到所预测的第二列中的任何一个第二列的所有第一列向所预测的第二列选择性地且增量地复制数据变化,使得在开始时间与同步点时间之间被施加在所述第一列上的所有数据变化选择性地被复制到所预测的第二列。例如,复制模块316可以响应于接收请求308而执行所述复制,以在目标数据库中执行所请求的语句T4S4。在方框616中,在所述复制之后,所预测的第二列中的每个第二列的更新时间被设置述同步点时间。在方框618中,DBMS延迟执行所请求的语句T4S4直到成功终止所述复制。在方框620中,在所述成功终止之后,DBMS在目标数据库中执行所请求的语句。
所述特征可以是有利的,这是因为用于在目标数据库上执行查询的延迟时间可以被减少:不是将已经提交在源数据库的表中的任何一个中的所有数据变化复制到目标数据库(其可以涉及对巨大数据量的复制和对应高的网络流量和/或延迟时间),而是仅仅所选的数据子集响应于接收到请求而被复制到目标数据库。作为在查询中引用的所有表的最近更新时间的“同步点时间”可以因此不被全局计算,而是在“每查询”的基础上进行计算。这可以帮助减少在所请求的语句能够执行之前必须被复制的变化的数目。
通过预测在处理请求查询时将被访问的目标数据库的那些列来复制选定部分的数据变化的所建议的方式可能破坏所复制的数据的引用完整性。为了将引用完整性保持在关系数据库中,表中的被声明为外键的任何字段能够包含空值、或者仅仅来自父表的主键或候选键的值。换言之,当外键值被使用时,其必须引用父表中的有效的现有主键。例如,删除包含由另一表中的外键指代的值将破坏引用完整性。已经观察到,在许多情况下,不必对目标数据库施加引用完整性。例如,如果分析查询(例如,分析数据以确定模式或趋势的查询)被执行在目标数据库上,则其可以不必将该分析限于符合引用完整性的要求的数据。通过以按列的方式而不是根据已经提交在源数据库中的事务的年代次序选择性地对数据变化进行复制,所复制的数据的总量可以被减少并且因此可以以非常短的延迟在目标数据库上执行所请求的语句。
根据实施例,源数据库的结构中的第一类型WT、RTI的数据库查询(例如OLTP)查询而被优化,并且目标数据库的结构中的第二类型RTII的数据库查询(例如OLAP查询)而被优化。第二类型可不同于与第一类型的查询。因为可以通过提供针对不同种类的查询优化的两个数据库来提高查询处理的性能,所以这可以是有利的。
根据一些实施例,预测一个或多个第二表包括:自动地对所请求的语句进行解析并使用在解析的所请求的语句中引用的所有第二列作为第二列。因为该方法对于当前接收到的请求是高度准确的,所以该方法可以是有利的。因此即使在当前所请求的语句将访问之前从未被访问过的第二列,DBMS将在分析接收到的语句时,例如通过分析SQL查询的参数来识别所述第二列。
根据其他实施例,DBMS自动地评价请求历史。例如,可以以目标日志的形式来存储请求历史,目标日志可以包括在所述目标数据库上先前已经被执行的所有语句。请求历史指示在处理所请求的语句时先前已经访问的目标数据库的所有表和列。评价包括标识或计算访问统计,访问统计指示目标数据库中的第二列中的每个第二列或第二表中的每个第二表的访问频率。因为在接收和处理请求时在运行时消耗较少的CPU容量,所以该特征可以是有利的。例如,可以在仅接收到几个请求时预计算访问统计。例如,计算访问统计可以包括评价第一查询类型和第二查询类型(例如,OLTP类型的和OLAP类型的)的SELECT请求,以标识当在目标数据库上执行所请求的语句时将有可能被访问的那些第二列和第二表。备选地,仅评价第二查询类型的SELECT请求。
根据一些实施例,在每第二表的基础上向第二列分配更新时间。被分配给在第二表中的同一个第二表中所包含的第二列的更新时间是相同的。对预测一个或多个第二列包括:预测在处理所请求的语句时将被访问的一个或多个第二表。在所预测的第二表中所包含的所有第二列被用作所预测的第二列。确定第二列的更新时间包括:确定被分配给被预测为在处理所请求的语句时要被访问的第二表的更新时间;并且使用所确定的更新时间作为被分配给所述第二列的更新时间。对执行复制包括:从被映射到所预测的第二表中的任何第二表中的所有第一列复制数据变化,使得在开始时间与同步点时间之间的被施加在第一列上的所有数据变化被复制到所预测的第二表的所述第二列。在所述复制之后,所述预测的第二表中的每个第二表的更新时间被设置为同步点时间。可以在目标日志相对于提交的事务的粒度在单独的第二表的水平上而不是在单独的第二表的水平上时,使用基于表的更新时间而不是基于列的更新时间是有利的。另外可以促进和加速,对更新时间的更新。
根据实施例,在所标识的开始时间与所标识的同步点时间不同的情况下,跳过方框614、616和618。因此,查询能够在没有延迟的情况下被执行在目标数据库上。因为如果引用的第二表或第二列的所有更新时间是相等的,则可以在目标数据库中立即执行所请求的语句,所以该特征可以是有利的。因为第一表和第二表的结构可以不同,因为第一数据库和第二数据库以及它们的各自的表结构可以针对不同的查询类型而被优化,所以使用在第一列与第二列之间用于复制的映射可以是有利的。
在下文中,如果没有另行明确指出,本文中所描述的基于预测在执行所请求的语句时将被访问的第二列的实施例应当被认为公开了响应于在每第二表的基础上接收请求而执行对数据的预测和随后复制的类似实施例。
通过确定最近被更新的第二列(或者第二表的所有第二列),并且通过更新被预测为在执行所请求的语句时要被访问的所有其他确定的第二列(或表),可以使得DBMS能够将所确定的第二列(或第二表)与特定所确定的第二列(或第二表)“同步”/“使其一致”。因此,当查询在已经使已经被预测为要被访问的第二列(第二表)的内容同步之后被执行在目标数据库上时,确保目标数据库的数据在执行所请求的语句时与源数据库“同步”,即表示在单个时刻处在映射的第一列(第一表)中的源数据库的数据内容。所述时刻可以处于过去的一些秒、分钟或甚至小时。因此,所请求的语句将不必访问(可能还仅被包含在源数据库中的)最近添加的数据,其将访问存储在第二列中的数据,因为它们反应单个时刻,所以其是一致的。因为不同种类的所请求的语句将被预测为访问不同的第二列(以及不同的第二表),所以所确定的同步点时间可以针对每次查询而变化。
根据实施例,所请求的语句是由数据库管理系统在预定义第一时间间隔期间接收的多个所请求的语句中的一个语句。例如,预定义第一时间间隔可以在50-100毫秒之间或甚至在5-10秒之间或甚至几分钟的范围内。DBMS执行对多个所请求的语句中的每个语句的第二列中的一个或多个第二列的预测。DBMS根据针对多个所请求的语句预测的所有第二列来生成预测的第二列的唯一集合(每个预测的第二列仅仅被提到一次;预测的第二列的唯一集合可以在以第二表执行复制时包括第二表的唯一集合的第二表)。DBMS使用所述第二列的唯一集合作为一个或多个预测的第二列,以执行对所述同步点时间的标识。因为在预定的第一时间间隔内集中多个请求可以允许减少计算开销和更高效的复制,所以这可能是有利的。
根据实施例,源数据库已经分配源日志并且目标数据库已经分配目标日志。以源日志的日志序列号的形式或以目标日志的日志序列号的形式向第二列中的每个第二列分配更新时间。目标日志的日志序列号被映射到源日志的日志序列号,其表示相同的时刻。执行第一列到所预测的第二列的选择性且增量的复制包括针对第一列中的每个第一列:
标识指示当前被分配给第二列的更新时间的开始日志序列号;
标识指示所标识的同步点时间的结束日志序列号;
标识被映射到所预测的第二列中的一个第二列的所有第一列;
在所述源日志中标识在开始日志序列号与结束日志序列号之间、已经在第一列中的任何一个第一列上执行的所有写入语句;
标识在所标识的写入语句内的被应用在所标识的第一列上的所有数据变化;以及
选择性地将所标识的第一列中的所标识的变化应用到相应映射的第二列。
未被映射到所预测的第二列中的一个第二列的第一列中的其他变化将不会响应于查询而被复制。它们可以一点也不被复制或者可以通过本文中描述的其他触发机制来复制,例如在未复制的语句的批处理超过最大大小的情况下。
使用所描述的日志序列号用于标识应当被复制用于所预测的第二查询的数据变化可以是有利的,这是因为所述信息可以已经由一些现有技术的DBMS或录入系统来提供。因此,可能不需要用于存储更新时间的附加精力。
根据实施例,源数据库的源日志的日志序列号和目标数据库的目标日志的日志序列号是同步的。源日志和目标日志同步暗指源数据库的源日志的日志序列号和目标数据库的目标日志的日志序列号彼此映射,使得源日志和目标日志中的日志条目的全局年代顺序能够被导出。因此,对日志条目的映射可以表示对于源日志并且对于目标数据库都有效的DBMS的一种“全局”时钟。因此,所标识的当前源提交日志序列号能够被用于确定由最近已经提交在源数据库中的事务施加的数据变化是否已经被复制到目标数据库.
根据实施例,DBMS在第二时间间隔处并且针对源数据库的第一列中的每个第一列将在所述第一列中的尚未复制的数据变化定期地包含在一个或多个批处理中,一个或多个批处理要被用于未来增量复制中,其中所述未提交的且未复制的数据变化被添加到所述批处理,而不管被映射到第一列的第二列是否被预测为在处理未来所请求的语句时要被复制,并且其中复制批处理还包括:更新被分配给第二列的更新时间。因为在映射到第二列的第一列中的数据变化还仅仅很少被访问或者一点也不被复制到目标数据库,所以该特征可以是有利的。这可以防止在特定第二列(或第二表)长时间未被访问的情况下的长延迟时间。在所述情况下,可能需要比较长的时间来复制相关的数据变化以使所预测的第二列“同步”。可以通过定期地对被映射到较不频繁访问的第二列的第一列进行复制来避免该情形。例如,所述第二列的更新时间能够被设置为执行批处理的复制的时刻。
根据实施例,完全或部分并行地执行对数据变化的增量复制,即在多个不同的处理器或处理器核心上并发地执行。这还可以提高复制的性能并且可以减少延迟时间。
根据实施例,响应于接收到针对执行所请求的语句的请求而对多个第一列中的数据变化到相应映射的第二列的增量复制,该增量复制被执行在一个或多个批处理中。另外,多个第一列中的数据变化在第二时间间隔处被自动地复制到相应映射的第二列。还可以借助于批处理来执行所述复制。
根据实施例,所述方法能够包括:
a)对一个或多个批处理进行编译,每个批处理包括已经在源数据库中执行的并且还没有被复制到所述目标数据库并且被指向在被映射到第二列中的一个第二列的第一列中的一个第一列处的一个或多个事务的语句,第二列中的一个第二列被预测为在处理所请求的语句时要被访问;
b)将每个批处理的语句分组成一个或多个提交组,其中在提交组中的任何提交组中所包含的所有语句属于已经提交在所述源数据库中的相同事务,其中提交组与非提交的事务的语句无关;
c)复制批处理,从而在单个步骤中将由批处理中的一个或多个提交组中的语句施加的所有数据变化复制到目标数据库;以及
d)在已经成功地复制批处理之后,将被分配给每个第二列的所述更新时间更新为同步点时间。
使用提交组而不是执行单独的数据库语句可以减少在复制数据变化时的计算开销,从而提高数据复制的性能。
根据一些实施例,批处理在第二时间间隔期间被编译并且在所述第二时间间隔中的任何一个时间间隔已经流逝时被自动复制。
根据实施例,该方法还包括针对所述目标数据库中所包含的第二列中的每个第二列:
自动地评价所述第二列的请求历史,请求历史指示在第二时间间隔期间先前已经接收到的所请求的语句的数目,其中处理所请求的语句理包括访问所述第二列;
自动地计算针对所述第二列的批处理大小,从而使用所述第二列的所述请求历史作为输入,批处理大小指示在单独的批处理内的语句的最大可允许数目或最大可允许批处理大小;计算使得最大可允许数目或所述最大批处理大小与第二列的访问频率负相关;例如对于频繁访问的(“热门的”)第二列,可以计算出小的批处理大小,并且对于很少访问的(“冷门的”)的第二列,可以计算出比较大的批处理大小;
执行步骤a)到d),其中根据所述自动地计算的批处理大小来执行创建批处理。复制批处理还包括更新被分配给所述第二列的更新时间。
所述特征可以减少针对被指向在所述第二列处的查询的延迟时间。要被复制到很少访问的第二列(第二表)的数据变化被添加到较大的批处理,从而减少计算开销。因为相应的第二列(第二表)仅很少被访问,所以大的批处理将有可能不会导致延迟。
尽管预定义第一时间间隔可以用于收集要被执行在目标数据库上的多个所请求的语句,并且用于预测针对其数据复制应当被选择性地触发的第二列,但是第二时间间隔可以用于收集被应用到源数据库的数据变化。因此,第一预定义时间间隔和第二预定义时间间隔可以实现不同的功能目的。两种时间间隔和相应的复制功能可以在一些实施例中进行组合,从而提供结合数据变化驱动的方法的请求驱动的方法。在第二时间间隔期间编译的批处理可以特定于特定第二列或者特定于特定第二表,并且可以选择性地包括被映射到所述第二列或第二表的第一列的数据变化。
根据实施例,所述一个或多个批处理是具有不同批处理大小的多个批处理。在第二时间间隔中的一个时间间隔期间在所述多个批处理中将尚未复制的数据变化包含在所述第一列中包括针对其改变被包含的每个第一列(或第一表):评价目标日志以标识针对所述第一列(或第一表)中的每个的访问频率,访问频率指示响应于先前请求而访问被映射到第一列(或第一表)的第二列(或第二表)中的一个第二列(或第二表)的频率;并且将用于对尚未复制的数据变化分发到批处理的序列,其中,其映射的第二列具有最高访问频率的第一列数据变化被分发到具有最小批处理大小的多个批处理中的一个批处理;并且其中,其映射的第二列的具有最低访问频率的第一列的数据变化被分发到具有最大批处理大小的多个批处理中的一个批处理。
例如,用于将改变复制到最频繁访问的(“热门”)列的批处理大小可以为10Mb。在一些实施例中,存在每第二列一个批处理或每第二表一个批处理,在其他实施例中,要被复制到具有类似访问频率的多个第二列(或表)的数据变化被集中在一个批处理中。可以存在用于将数据变化复制到具有平均访问频率的第二列的大约50Mb大小的一个或多个批处理。并且可以存在用于将数据变化复制到在目标数据库上执行所请求的语句时很少或从未被访问的第二列的大约150Mb大小的一个或多个批处理。因为小的批处理大小可以被用于将数据变化复制到频繁访问的(“热门”)第二列,所以这可以是有利的。这可以减少针对被指向在所述第二列处的查询的延迟时间。要被复制到很少访问的第二列(第二表)的数据变化被添加到较大的批处理,从而减少计算开销。大的批处理将有可能不会导致延迟,这是因为相应的第二列(第二表)仅很少被访问。
根据实施例,访问频率不是按每第二列而是按每第二表而被确定的,并且包括用于对数据变化进行复制的指令的语句在每第二表的基础上被分发到多个批处理。
根据一些实施例,批处理的大小根据所标识的访问频率来动态调整,其中,在具有高访问频率的第二列的部分升高的情况下,具有小的批处理大小(例如10Mb)的批处理的数目增大。在具有低访问频率的第二列的部分升高的情况下,具有高的批处理大小(例如150Mb)的批处理的数目增大。因为针对其中不同的请求得到对不同第二列的访问的许多不同的动态变化的使用案例情形,延迟时间可以被保持很短并且用于复制的计算开销可以被保持很低,所以这可以是有利的。通过还在第二时间间隔中自动地执行对其映射的第二表较不频率地被访问的第一表的复制,在断电或其他种类的问题的情况下,DBMS的恢复时间可以被减少。
根据实施例,该方法还包括:在第三时间间隔处,定期地评价第一列中的每个第一列,以确定第一列是否包括自对其数据变化的最后一次复制以来已经被存储在那的任何新的未复制的数据变化。如果所评价的第一列中的一个第一列不包括任何新的未复制的数据变化,则DBMS将被映射到所述第一列的所述第二列中的任何一个第二列的更新时间设置为执行评价的时间。例如,这能够借助于日志序列号来完成,例如通过确定日志序列号的当前头并且使用由日志的当前头表示的时间作为映射的第二表的更新时间。因为在系统崩溃的情况下,长恢复时间能够被避免,所以这可以是有利的。在系统崩溃或断电的情况下,重启的DBMS可以自动地启动,以复制在源日志的检查点条目之后已经执行的所有未复制的数据变化。如果一些第二列长期未被访问,则它们映射的第一列可以包括巨大的未复制的数据量并且恢复过程可能花费比较长的时间段。第三时间间隔可以包括多个分钟或者多个小时或者甚至多天。根据实施例,在第三时间间隔处的定期评价可以仅仅在系统的CPU负载很低(例如在夜晚)时被执行。
根据实施例,对所请求的语句的接收由接收用于执行事务的请求的DBMS来执行。该事务包括所请求的语句并且可选地包括一个或多个另外的语句。该方法还包括针对所述事务中的语句中的每个语句:DBMS评价用于确定语句是指定第一类型的数据库查询还是第二类型的数据库查询;在语句被确定为第一类型的情况下,数据库管理系统将用于执行的语句调度到源数据库、跳过延迟步骤并且立即执行源数据库中的所请求的语句;并且在语句被确定为第二类型的情况下,数据库管理系统将用于执行的语句调度到目标数据库并且在目标数据库中执行语句的延迟和所延迟的执行。
所请求的语句可以被确定为是所述第二类型的并且之后被调度到目标数据库。因为可以使底层数据结构对提交请求的客户端透明,所以这可以是有利的。因此,“客户端”不必确定所述查询应当被指向在源数据库还是目标数据库处。相反,DBMS可以动态地确定查询是否应当被处理在源数据库或目标数据库上以实现响应时间和准确性的最好折衷。例如,源数据库可以是OLTP数据库并且第一类型的数据库查询可以包括INSERT语句、UPDATE语句、DELETE语句和/或基于索引的SELECT语句。目标数据库可以是OLAP数据库并且第二查询类型可以包括执行基于非索引的顺序表扫描的SELECT语句。
根据实施例,DBMS在所述源日志中标识当前源提交日志序列号LSNMRCR,所述当前源提交日志序列号指示在接收到请求之前最近提交在源数据库中的事务中的第一个事务的提交事件。执行对数据变化的增量复制包括:标识被施加在第一列上的未复制的数据变化直到所述同步点时间,其中所述变化由已经在当前源提交日志序列号处或之前提交在源数据库中的事务施加。DBMS选择性地复制所标识的数据变化。
对由提交的事务施加的变化的选择性复制可以是有利的,这是因为这可以确保稍后可能已经在源数据库中回滚的数据变化后来不被永久保留在目标数据库中。这种数据能够导致不一致的查询结果。使用当前源提交日志序列号可以是有利的,以用于标识在接收到请求之前提交在源数据库中的事务中的第一个事务的提交事件,这是因为可以容易地通过一些现有DBMS和录入系统来提供所述提交日志序列号。
根据实施例,该方法还包括:标识所请求的语句所属的请求事务;在延迟之后,执行在所请求的语句前面的并且被包含在所标识的请求事务中的语句,根据在所述请求事务内的所述语句的次序在目标数据库中执行对前面的语句的执行和对所请求的语句的执行;执行所请求的语句包括从目标数据库读取数据;读取数据还包括由前面的语句施加的变化;返回读取数据;并且在返回所述读取数据之后,取消在目标数据库中的由前面的语句施加的数据变化。因为与实际所请求的语句具有相同事务性上下文的前面的语句的未提交的变化还在目标数据库中“被看到”,而不会使源数据库和目标数据库失去同步:如果请求查询将被执行在源数据库上,未提交的变化将通常被看到,所以这可以是有利的。然而,如果所请求的语句被执行在目标数据库上,因为在传统复制方法中仅仅提交的数据变化被复制,所以相同事务性上下文的前面的未提交的改变将不“被看到”。通过还复制相同事务性上下文的未提交的数据变化并且通过稍后取消目标数据库中的变化,能够确保将请求重定向到目标数据库将与当查询将已经被执行在源数据库上时得到完全相同的结果。
当使用“批处理大小驱动的触发机制”时,复制可以备选地或除了请求驱动的触发机制之外还根据批处理大小来触发,其中触发复制的批处理的最大大小可以基于先前观察到的对应列或对应表的访问频率而被确定。因为基于访问频率的最大允许的批处理大小可以允许对在背景中比很少访问的列和表更经常地复制频繁访问的(“热门”)列,所以所述特征可以是有利的。复制可以仅仅通过批处理大小达到所计算的最大值而被触发。这可以增大接收到能够在目标数据库上比在源数据库上更高效地执行的请求的可能性,所述请求可以立即被调度到目标数据库或者被执行在目标数据库上。所述请求可以在没有延迟的情况下被执行并且返回如同其将被执行在源数据库上相同的结果,这是因为上述基于批处理的复制策略可能有可能已经在背景中复制了所有最近的数据变化。第二列的先前访问频率越高,批处理大小越小,并且针对所述第二列的基于批处理的数据复制可以被执行得越频繁。因此,至少平均来说,在背景中的使用较小批处理大小用于频繁访问的第二列并且使用较大批处理大小用于较不频繁访问的第二列的自动触发的复制可以加速对由客户端所请求的语句的处理。
根据实施例,第二列中的每个第二列已经分配更新时间。该更新时间是在所述第二列从其映射的第一列最近接收到数据变化的时刻。更新时间和将数据变化引入到所述第一列中的一个中的时间可以被评价,以用于标识所述第一列中的尚未被复制到被映射到所述第一列的所述第二列的数据变化。执行所述批处理中的一个批处理包括更新被分配给所述第二列的更新时间。
根据实施例,可以根据上述实施例中的任何实施例,例如通过执行针对上述实施例中的一个实施例所描述的步骤a)到d)来创建和复制批处理。
根据实施例,根据上述实施例中的任何一个所述的请求触发的数据复制方法和所计算的批处理大小触发的复制方法两者都是由数据库管理系统实施。这可以提高在目标数据库上处理所请求的数据库语句的性能。
图2a示出了在源数据库122中所包含的第一表ST1、ST2、ST3、ST4的多个第一列SC1-SC13。目标数据库106包括分别包含一个或多个第二列TC1-TC8的多个第二表TT1、TT2…。第一表和第二表的结构和列组成可以不同,这是因为源数据库和目标数据库可以针对高效地处理不同种类的数据库查询而被优化。不同的阴影线指示源数据库中的哪些第一列用作分别映射的目标数据库的第二列的数据源。映射200可以将第一列中的全部或至少一些分配到第二列中的相应一个第二列。映射暗指由执行在第一列中的特定一个第一列上的INSERT、UPDATE或DELETE语句施加的所有数据变化可以稍后被复制到其映射的第二列。
OLTP数据库和OLAP数据库仅仅是针对高效地处理不同种类的数据库查询而被优化的源数据库和目标数据库的一个可能实施方式。根据其他实施例,源数据库和目标数据库可以以下面的数据库类型中的两种不同的数据库类型的任何可能的组合来实施:
OLAP数据库(即,适合于通过支持可以允许实时合并数据的多维查询来处理针对商业管理和统计的复杂数据模型的数据库);
OLTP数据库(即,允许更新现有事务性信息以反映关于已经被执行在事务性数据处理系统中的所有事务的收集的和处理的信息;OLTP数据库通过高效的并发控制来确保原子性以便确保事务中的所有步骤作为组而被成功完成);
图数据库(即,针对被组织为包括节点和边缘的图的数据存储和检索而优化的的数据库),
三元组存储(即,针对主体谓词对象三元组的存储和检索而优化的数据库),
基于键值对的数据库(还被称为“关联数据库”,即被设计用于高效地处理未规划的自组织查询的数据库;其使用基于值的存储(VBS)架构,其中每个唯一数据值仅仅被存储一次并且自动生成的索引系统允许对所有值的高效检索);
文档存储(即,被设计用于存储并允许对还被称为半结构化数据的面向文档的信息的高效检索的数据库的并且通常被实施为NoSQL数据库);
面向行的数据库(即,通过将列的值中的全部一起序列化之后将下一列的值一起序列化来将数据表存储为数据的列的栏而非为数据的行的栏的数据库),
面向列的数据库(即,通过将行的值中的全部一起序列化之后将下一行的值一起序列化来将数据表存储为数据的行的栏而非为数据的列的栏的数据库),
以列优先次序组织的一个或多个单独的表;以及
以行优先次序组织的一个或多个单独的表。
取决于实施例,可以由支持多种类型的查询的相同DBMS管理或者可以由两种不同的DMBS管理源数据库和目标数据库。
在图2a中所描绘的实施例中,每个第二表已经分配相应的更新时间UT1、UT2,其指示所述第二表在执行增强复制步骤时接收和存储最后的数据变化的时刻。例如,在单个复制步骤中,第一列SC1、SC2和SC11的增量数据变化被收集例如在批处理中并被复制到表TT1的第二列。在存储所述改变之后,所述第二表TT1并且因此隐含地还有其第二列中的每个第二列被分配更新时间UT1,其指示将所述数据变化存储在表TT1中的时刻。
在接收到用于在目标数据库上执行查询T4S4的请求时,DBMS可以对所述查询进行解析以便预测并确定处理所请求的语句将涉及访问第二列TC2、TC8和TC11。DBMS将确定已经被分配更新时间UT2的列TC8比列TC1和TC11更最近地被更新。因此,UT2被用作同步点时间。DBMS将评价源日志118,其可以包括已经在源数据库上执行以标识在已经执行在第一列SC2和SC11上的在UT1与UT2之间的所有数据变化的所有语句和事务。在第一列SC8中将不存在UT1与UT2之间的数据变化,因为分别映射的第二列TC8已经分配了UT2、同步点时间作为其更新时间。因此,代替延迟执行所请求的语句T4S4,直到在接收到所述请求之前由DBMS执行的所有语句被复制到目标数据库,仅仅选择性地在表SC2和SC11中的、在UT1与UT2之间的增量数据变化被复制到目标数据库。因此,在所请求的语句被执行在目标数据库上之前,仅仅少量数据需要被复制。当所述增量数据变化已经成功地被复制到第二列TC2和TC11时,第二表TT1的更新时间并且因此还有所有其第二列TC1、TC2和TC11的更新时间被更新并被设置为UT2。
图2b示出了另一实施例,其中不根据(如图2a中的)第二表来分配更新时间UT3-UT6,而且真的每个单独的第二列来进行分配。映射202将第一列和相应第二列分配到彼此,如针对图2a所解释的。在接收到所述请求时,DBMS将通过对请求进行解析或通过评价先前请求的历史110来确定并预测第二列TC2、TC8和TC11将在处理所请求的语句T4S4时被访问。所述列分别已经被分配更新时间UT4、UT6和UT5。DBMS将UT4标识为所预测的第二列的最早更新时间并且因此将会将UT4标识为开始时间。DBMS将UT6标识为所预测的第二列的最近更新时间并且因此将UT6标识为同步点时间。之后,DBMS将选择性地标识已经执行在UT4与UT6之间的、关于第一列SC2和SC11到第二列TC2和TC11的所有数据变化并且将所述列的更新时间设置为UT6。所述表的其他列的更新时间可以保持不受影响。
图3示出了在DBMS 104接收到用于执行事务的特定语句T4S4的请求308时已经在源数据库122中提交的事务T1、T2的集合。
在图3的底部的框描绘分别包括多个语句的四个事务T1-T4。例如事务T1包括语句S1(或者‘T1S1’)和语句S2(或者‘T1S2’)。事务T2包括四个语句S1-S4(或者‘T2S1-T2S4’)。事务可以包括一个或多个读取语句(SELECT)、一个或多个写入语句(UPDATE、INSERT、DELETE)或者读取语句和写入语句的混合。因为仅仅写入语句导致在源数据库中的需要被复制的数据变化,图3中的覆盖源日志和目标日志的条全部表示写入语句。然而,还可能的是,事务还包括一个或多个读取语句,诸如举例来说T4S4和T4S5,其不会导致在源数据库中的需要被复制的数据变化。在图3中由条符号表示每个语句。导致其相应事务的提交事件的语句(即,‘提交语句’)由在其相应条符号的顶部的圆圈指示。如能够从图3导出的,在接收到请求的时刻,事务T1和T2已经在源日志序列号306和LSNMRCR处在源数据库中提交。事务T3和T4在接收到请求308时仍然正在进行。在接收到请求而根本不清楚T4是否以及何时提交时之后不久,T3将在(与条符号304相对应的)提交语句T3S5处进行提交。
源日志118包括第一提交日志序列号306、LSNMRCR、305,其分别指示所述事务T1、T2、T3中的相应一个事务在源数据库中被提交的时刻。源提交日志序列号LSNMRCR指示在接收到请求之前在源数据库中最近提交的事务T1、T2、T3中的一个T2的提交事件:(通过提交语句T1S2的)T1已经在(通过提交语句T2S4的)T2之前被提交。T3和T4在接收到请求的时刻还未被提交。对在源数据库中归属于在源数据库中尚未提交的事务的语句的执行不是对事务的“提交”。因此,T2在所描绘的示例中为相对于请求308的“最近提交的事务”。DBMS 104接收到请求308以执行数据库语句T4S4的时刻在源日志中由LSNR表示。LSNR可以被附接到被分配到目标数据库的请求。
DBMS响应于接收到查询预测在目标数据库上将执行所请求的语句时被访问的一个或多个第二列TC2、TC8、TC11,如前面所描述的。在已经将列SC2、SC8和SC11的数据变化复制到第二列TC2、TC8、TC11之后,所述列的更新时间可以被更新到针对所述请求特定的复制确定的同步点时间。DBMS可以延迟执行目标数据库中的所请求的语句T4S4直到被预测为要被访问的所有第二列已经接收到它们各自的增量数据变化。
一种数据库管理系统包括:源数据库(122),其包括包含第一列(SC1-SC13)的多个第一表(ST1-ST4);目标数据库(106),其包括包含第二列(TC1-TC13)的多个第二表(TT1-TT2);其中第一列中的多个第一列中的每个第一列被映射(200、202)到第二列中的一个第二列,第二列中的每个第二列适于存储被映射到所述第二列的所述第一列的复制的数据变化;其中第二列中的每个已经分配了更新时间(UT1-UT6),其中更新时间是所述第二列从其映射的第一列最近接收增量数据变化的时刻;其中数据库管理系统被配置用于:所述数据库管理系统接收(602)对于执行所请求的语句(T4S4)的请求(308),该语句为数据库语句;数据库管理系统预测(604)在处理所请求的语句(T4S4)时将被访问的所述第二列中的一个或多个第二列;数据库管理系统针对所预测的第二列中的每个第二列确定(606)其分配的更新时间;所述数据库管理系统标识(608)同步点时间,同步点时间为所有确定的所述更新时间中的最近更新时间;数据库管理系统标识(610)开始时间,开始时间为所有确定的所述更新时间中的最早更新时间;在所标识的开始时间不同于所标识的同步点时间的情况下(612),所述数据库管理系统从被映射到所预测的第二列中的所有第一列选择性地并且增量地复制(614)数据变化,使得在开始时间与同步点时间之间被施加在第一列上的所有数据变化被复制到所预测的第二列;其中在所述复制之后,所述第二列中的每个第二列的更新时间被设置(616)为所述同步点时间;数据库管理系统延迟(618)执行所请求的语句(T4S4)直到所述复制的成功终止;并且在所述终止之后,数据库管理系统在目标数据库中执行(620)所请求的语句。
本文中描述的技术效果和益处能够提供用于操作DBMS的改进的方法、计算机程序产品以及DBMS.
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质能够是能够保留并存储以由指令执行设备使用的指令的有形设备。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文中使用的术语仅仅出于描述特定实施例的目的并且不旨在为对本发明的限制。如本文中使用的,单数形式的“一”、“一个”和“所述”旨在还包括复数形式,除非上下文另行清楚指示。还将理解,术语“包括”和/或“包含”当在本说明书中使用时详细列举陈述的特征、整数、步骤、操作、元件和/或部件的存在,但是不排除一个多个其他特征、整数、步骤、操作、元件、部件和/或其组的存在或增加。
在所附的权利要求书中的所有装置或步骤加功能元件的对应的结构、材料、动作和等价物旨在包括用于与如特别要求保护的其他要求保护的元件组合地执行功能的任何结构、材料或动作。已经出于说明和描述的目的而呈现对本发明的描述,但是不旨在为穷举的或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变型对于本领域技术人员将是显而易见的。选择并描述了实施例以便最好地解释本发明的原理和实际应用,并且以便使得本领域其他技术人员能够理解针对具有如适于预见到的特定用途的各种修改的各种实施例的本发明。
Claims (18)
1.一种用于操作数据库管理系统的计算机实现的方法,所述数据库管理系统包括源数据库和目标数据库,所述源数据库包括分别包含一个或多个第一列的多个第一表,所述目标数据库包括分别包含一个或多个第二列的多个第二表,
其中所述第一列中的多个第一列中的每个第一列被映射到所述第二列中的一个第二列,所述第二列中的每个第二列适于存储被映射到所述第二列的所述第一列的复制的数据变化,
其中所述第二列中的每个第二列具有分配的更新时间,所述更新时间为所述第二列从其映射的第一列最近接收增量数据变化的时刻,
所述方法包括:
所述数据库管理系统接收一条执行所请求的语句的请求,所述语句为数据库语句,其中所述源数据库具有分配的源日志并且所述目标数据库具有分配的目标日志,其中所述更新时间以所述源日志的日志序列号的形式或以所述目标日志的日志序列号的形式被分配到所述第二列中的每个第二列,其中所述源日志和所述目标日志是同步的;
所述数据库管理系统预测在处理所述请求的语句时将被访问的所述第二列中的一个或多个第二列;
所述数据库管理系统针对预测的所述第二列中的每个第二列确定其分配的更新时间;
所述数据库管理系统标识同步点时间,所述同步点时间为所有确定的所述更新时间中的最近更新时间;
所述数据库管理系统标识开始时间,所述开始时间为所有确定的所述更新时间中的最早更新时间;
基于所标识的开始时间不同于所标识的同步点时间,所述数据库管理系统从被映射到预测的所述第二列中的任何一个第二列的所有第一列向预测的所述第二列选择性地并且增量地复制数据变化,使得在所述开始时间与所述同步点时间之间被施加在所述第一列上的所有数据变化被复制到预测的所述第二列;其中在所述复制之后,预测的所述第二列中的每个第二列的所述更新时间被设置为所述同步点时间,其中执行选择性且增量的复制包括针对预测的所述第二列中的每个第二列,包括:
标识指示当前被分配给所述第二列的所述更新时间的开始日志序列号;
标识指示所标识的同步点时间的结束日志序列号;
标识被映射到预测的所述第二列中的一个第二列的所有第一列;
在所述源日志中标识在所述开始日志序列号与所述结束日志序列号之间的、在所述第一列中的任何一个第一列上执行的所有写入语句;
标识在所标识的写入语句内被应用在所标识的第一列上的所有数据变化;以及
选择性地将在所标识的第一列中的所标识的变化应用到被映射到所述第一列的所述第二列;
所述数据库管理系统延迟执行所述请求的语句直到所述复制的成功终止;以及
在所述成功终止之后,所述数据库管理系统在所述目标数据库中执行所述请求的语句。
2.根据权利要求1所述的计算机实现的方法,其中预测所述一个或多个第二列包括以下各项中的一项:
自动地对所述请求的语句进行解析并使用在所述请求的语句中引用的所有第二列作为预测的所述第二列;和
自动地评价请求历史,所述请求历史指示在处理所请求的语句时先前已经被访问的所述目标数据库的所有表和列,所述评价包括标识或计算访问统计,所述访问统计指示所述目标数据库中的所述第二列中的每个第二列或所述第二表中的每个第二表的访问频率。
3.根据权利要求1所述的计算机实现的方法,
其中在每个第二表的基础上向所述第二列分配所述更新时间,并且其中在所述第二表中的相同的第二表中所包含的所有第二表的更新时间是相同的;
其中预测所述一个或多个第二列包括:预测在处理所述请求的语句时将被访问的一个或多个第二表并且使用在预测的所述第二表中所包含的所有第二列作为预测的所述第二列;
其中确定所述第二列的所述更新时间包括:确定被分配给包括所述第二列的所述第二表的所述更新时间,并且使用确定的所述更新时间作为被分配给所述第二列的所述更新时间;以及
其中执行所述复制包括:从被映射到在预测的所述第二表中的任何一个第二表中所包含的所述第二列中的任何一个第二列的所有第一列向它们映射的第二列复制所述数据变化,使得在所述开始时间与所述同步点时间之间被施加在所述第一列上的所有数据变化被复制到预测的所述第二表;其中在所述复制之后,预测的所述第二表中的每个第二表的所述更新时间被设置为所述同步点时间。
4.根据权利要求1所述的计算机实现的方法,还包括:
所述数据库管理系统在所述源日志中标识当前源提交日志序列号,所述当前源提交日志序列号指示在接收所述请求之前在所述源数据库中最近提交的事务中的第一事务的提交事件,
其中执行对所述数据变化的所述增量复制包括:标识直到所述同步点时间的被施加在所述第一列上的未复制的数据变化,所述未复制的数据变化是由在所述当前源提交日志序列号处或之前的已经在所述源数据库中提交的事务施加的;并且选择性地复制所标识的数据变化。
5.根据权利要求1所述的计算机实现的方法,其中所述请求的语句是由所述数据库管理系统在预定义的第一时间间隔期间接收的多个所请求的语句中的一个语句,并且所述方法还包括:
所述数据库管理系统针对所述多个请求的语句中的每个语句执行对所述第二列中的所述一个或多个第二列的预测;以及
所述数据库管理系统根据针对所述多个请求的语句所预测的所有第二列来生成预测的第二列的唯一集合,并且使用第二列的所述唯一集合作为所述一个或多个预测的第二列以执行对所述同步点时间的所述标识。
6.根据权利要求1所述的计算机实现的方法,其中响应于接收到用于执行所述请求的语句的所述请求而对多个第一列中的所述数据变化到被映射到所述第一列的第二列的所述增量复制,所述增量复制被执行在一个或多个批处理中,并且其中,另外,多个第一列中的数据变化在第二时间间隔处被自动地复制到被映射到所述第一列的第二列。
7.根据权利要求6所述的计算机实现的方法,还包括:
对所述一个或多个批处理进行编译,每个批处理包括已经在所述源数据库中被执行的并且还没有被复制到所述目标数据库并且被指向所述第一列中的一个第一列的一个或多个事务的语句,所述第一列中的所述一个第一列的映射的第二列被预测为在处理所述请求的语句时要被访问;
将每个批处理的所述语句分组成一个或多个提交组,其中所述提交组中的任何提交组中所包含的所有语句属于已经在所述源数据库中提交的相同事务,其中所述提交组不包括非提交的事务的语句;
复制所述批处理,从而在单个步骤中将由所述批处理中的一个或多个提交组中的所述语句施加的所有数据变化复制到所述目标数据库;以及
在已经成功地复制所述批处理之后,将被分配给每个第二列的所述更新时间更新为所述同步点时间。
8.根据权利要求7所述的计算机实现的方法,还包括针对所述目标数据库的每个第二列:
自动地评价所述第二列的请求历史,所述请求历史指示在第二时间间隔期间先前已经接收的请求的并且其处理包括访问所述第二列的语句的数目;
自动地计算针对所述第二列的批处理大小,从而使用所述第二列的所述请求历史作为输入,所述批处理大小指示在单独的批处理内的语句的最大可允许数目或最大批处理大小,其中所述计算使得所述最大可允许数目或所述最大批处理大小与所述第二列的访问频率负相关;并且
执行所述编译、所述分组、所述复制和所述更新,其中根据所述自动计算的批处理大小来执行创建所述批处理,并且其中复制所述批处理还包括更新被分配给所述第二列的所述更新时间。
9.根据权利要求8所述的计算机实现的方法,其中所述一个或多个批处理是具有不同批处理大小的多个批处理,其中在所述第二时间间隔中的一个第二时间间隔期间,在所述多个批处理中将尚未复制的数据变化包含在所述第一列中包括:
针对变化被包含的每个第一列:评价所述目标日志,以标识针对所述第一列中的每个第一列的访问频率,所述访问频率指示响应于先前请求而访问被映射到所述第一列的所述第二列中的所述一个第二列的所述频率;以及
将用于复制尚未复制的数据的语句分发到批处理的序列,
其中其映射的第二列具有最高访问频率的第一列的数据变化被分发到具有最小批处理大小的多个批处理中的一个批处理,以及
其中其映射的第二列具有最低访问频率的第一列的数据变化被分发到具有最大批处理大小的多个批处理中的一个批处理。
10.根据权利要求1所述的计算机实现的方法,还包括:
在第三时间间隔处定期地评价所述第一列中的每个第一列,以确定所述第一列是否包括任何新的未复制的数据变化;以及
如果评价的所述第一列中的一个第一列不包括任何新的未复制的数据变化,将被映射到所述第一列的所述第二列中的一个第二列的所述更新时间设置为执行所述评价的所述时间。
11.根据权利要求1所述的计算机实现的方法,
其中所述源数据库的结构针对第一类型的数据库查询而被优化,
其中所述目标数据库的结构针对第二类型的数据库查询而被优化,所述第二类型的查询与所述第一类型的查询不同;并且
其中通过以下步骤来执行接收所述请求的语句:所述数据库管理系统接收用于执行事务的请求,所述事务包括所述请求的语句并且可选地包括一个或多个另外的语句,所述方法还包括针对所述事务中的所述语句中的每个语句:
所述数据库管理系统评价所述语句,以确定所述语句指定所述第一类型的数据库查询还是所述第二类型的数据库查询;
基于被确定为所述第一类型的所述语句,所述数据库管理系统将用于执行的所述语句调度到所述源数据库、跳过所述延迟并且在所述源数据库中立即执行所述请求的语句;以及
基于被确定为是所述第二类型的所述语句,所述数据库管理系统将用于执行的所述语句调度到所述目标数据库,并且在所述目标数据库中执行所述延迟和所述语句的延迟的执行,
其中所述请求的语句被确定为所述第二类型的并且被调度到所述目标数据库。
12.根据权利要求1所述的计算机实现的方法,还包括:
标识所述请求的语句所属的请求的事务;
在所述延迟之后,执行在所述请求的语句前面的并且被包含在所标识的请求的事务中的语句,根据在所述请求的事务内的所述语句的次序来在所述目标数据库中执行对前面的所述语句和对所述请求的语句的执行,其中执行所述请求的语句包括从所述目标数据库读取数据,所述读取数据还包括由前面的所述语句施加的变化;
返回所述读取数据;以及
在返回所述读取数据之后,在所述目标数据库中取消由前面的所述语句施加的所述数据变化。
13.一种计算机存储介质,由问答计算机系统的处理电路可读取并且存储用于由所述处理电路执行的指令以执行用于操作数据库管理系统的方法,所述方法包括:
所述数据库管理系统接收一个执行所请求的语句的请求,所述语句为数据库语句,所述数据库管理系统包括源数据库和目标数据库,所述源数据库包括分别包含一个或多个第一列的多个第一表,所述目标数据库包括分别包含一个或多个第二列的多个第二表,其中所述第一列中的多个第一列中的每个第一列被映射到所述第二列中的一个第二列,所述第二列中的每个第二列适于存储被映射到所述第二列的所述第一列的复制的数据变化,并且其中所述第二列中的每个第二列具有分配的更新时间,所述更新时间为所述第二列从其映射的第一列最近接收增量数据变化的时刻,其中所述源数据库具有分配的源日志并且所述目标数据库具有分配的目标日志,其中所述更新时间以所述源日志的日志序列号的形式或以所述目标日志的日志序列号的形式被分配到所述第二列中的每个第二列,其中所述源日志和所述目标日志是同步的;
所述数据库管理系统预测在处理所述请求的语句时将被访问的所述第二列中的一个或多个第二列;
所述数据库管理系统针对预测的所述第二列中的每个第二列确定其分配的更新时间;
所述数据库管理系统标识同步点时间,所述同步点时间为所有确定的所述更新时间中的最近更新时间;
所述数据库管理系统标识开始时间,所述开始时间为所有确定的所述更新时间中的最早更新时间;
基于所标识的开始时间不同于所标识的同步点时间,所述数据库管理系统从被映射到预测的所述第二列中的任何一个第二列的所有第一列向预测的所述第二列选择性地并且增量地复制数据变化,使得在所述开始时间与所述同步点时间之间被施加在所述第一列上的所有数据变化被复制到预测的所述第二列;其中在所述复制之后,预测的所述第二列中的每个第二列的所述更新时间被设置为所述同步点时间,其中执行选择性且增量的复制包括针对预测的所述第二列中的每个第二列,包括:
标识指示当前被分配给所述第二列的所述更新时间的开始日志序列号;
标识指示所标识的同步点时间的结束日志序列号;
标识被映射到预测的所述第二列中的一个第二列的所有第一列;
在所述源日志中标识在所述开始日志序列号与所述结束日志序列号之间的、在所述第一列中的任何一个第一列上执行的所有写入语句;
标识在所标识的写入语句内被应用在所标识的第一列上的所有数据变化;以及
选择性地将在所标识的第一列中的所标识的变化应用到被映射到所述第一列的所述第二列;
所述数据库管理系统延迟执行所述请求的语句直到所述复制的成功终止;以及
在所述成功终止之后,所述数据库管理系统在所述目标数据库中执行所述请求的语句。
14.根据权利要求13所述的计算机存储介质,其中预测所述一个或多个第二列包括以下各项中的一项:
自动地对所述请求的语句进行解析并使用在所述请求的语句中引用的所有第二列作为预测的所述第二列;和
自动地评价请求历史,所述请求历史指示在处理请求的语句时先前已经被访问的所述目标数据库的所有表和列,所述评价包括标识或计算访问统计,所述访问统计指示所述目标数据库中的所述第二列中的每个第二列或所述第二表中的每个第二表的访问频率。
15.根据权利要求13所述的计算机存储介质,
其中在每个第二表的基础上向所述第二列分配所述更新时间,并且其中在所述第二表中的相同的第二表中所包含的所有第二表的更新时间是相同的;
其中预测所述一个或多个第二列包括:预测在处理所述请求的语句时将被访问的一个或多个第二表,并且使用预测的所述第二表中所包含的所有第二列作为预测的所述第二列;
其中确定所述第二列的所述更新时间包括:确定被分配给包括所述第二列的所述第二表的所述更新时间,并且使用确定的所述更新时间作为被分配给所述第二列的所述更新时间;以及
其中执行所述复制包括:从被映射到在预测的所述第二表中的任何一个第二表中所包含的所述第二列中的任何一个第二列的所有第一列向它们映射的第二列复制所述数据变化,使得在所述开始时间与所述同步点时间之间被施加在所述第一列上的所有数据变化被复制到预测的所述第二表;其中在所述复制之后,预测的所述第二表中的每个第二表的所述更新时间被设置为所述同步点时间。
16.根据权利要求13所述的计算机存储介质,其中所述方法还包括:
所述数据库管理系统在所述源日志中标识当前源提交日志序列号,所述当前源提交日志序列号指示在接收所述请求之前在所述源数据库中最近提交的事务中的第一事务的提交事件,
其中执行对所述数据变化的所述增量复制包括:标识直到所述同步点时间的被施加在所述第一列上的未复制的数据变化,所述未复制的数据变化是由在所述当前源提交日志序列号处或之前的已经在所述源数据库中提交的事务施加;并且选择性地复制所标识的数据变化。
17.据权利要求13所述的计算机存储介质,其中所述请求的语句是由所述数据库管理系统在预定义的第一时间间隔期间接收的多个请求的语句中的一个语句,并且所述方法还包括:
所述数据库管理系统针对所述多个请求的语句中的每个语句执行对所述第二列中的所述一个或多个第二列的预测;以及
所述数据库管理系统根据针对所述多个请求的语句预测的所有第二列来生成预测的第二列的唯一集合,并且使用第二列的所述唯一集合作为所述一个或多个预测的所述第二列以执行对所述同步点时间的所述标识。
18.一种用于操作数据库管理系统的计算机实现的方法,所述数据库管理系统包括源数据库和目标数据库,所述源数据库包括多个第一表,每个第一表包括一个或多个第一列,所述目标数据库包括多个第二表,每个第二表分别包括一个或多个第二列,其中所述第一列中的多个第一列中的每个第一列被映射到所述第二列中的一个第二列,其中所述数据库管理系统被配置为以分批的方式将所述第一列中的任何一个第一列的数据变化复制到其映射的第二列,其中复制所述数据变化包括:
自动地且重复地评价所述第二列中的每个第二列的请求历史,以确定所述第二列的访问频率,所述请求历史指示响应于客户端的请求而在预定义时间间隔期间先前已经对所述第二列执行的语句的数目;
自动地计算针对所述第二列的批处理大小,所述批处理大小指示单个批处理内的语句的最大可允许数目或最大批处理大小,其中所述计算使得所述最大可允许数目或所述最大批处理大小与所述第二列的访问频率负相关;以及
针对所述第二列中的每个第二列:通过集中还没有被复制到所述第二列的、被映射到所述第二列的所述第一列的数据变化来创建批处理;在确定所述批处理的所述大小已经达到其计算的批处理大小时,自动地执行所述批处理,从而将在所述批处理中集中的所述数据变化复制到所述第二列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/592,165 US9886347B2 (en) | 2015-01-08 | 2015-01-08 | Data replication in a database management system |
US14/592,165 | 2015-01-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105786955A CN105786955A (zh) | 2016-07-20 |
CN105786955B true CN105786955B (zh) | 2019-04-12 |
Family
ID=56367662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610009447.4A Active CN105786955B (zh) | 2015-01-08 | 2016-01-07 | 数据库管理系统中的数据复制 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9886347B2 (zh) |
CN (1) | CN105786955B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886347B2 (en) | 2015-01-08 | 2018-02-06 | International Business Machines Corporation | Data replication in a database management system |
US10360236B2 (en) * | 2015-09-25 | 2019-07-23 | International Business Machines Corporation | Replicating structured query language (SQL) in a heterogeneous replication environment |
US11068506B2 (en) * | 2016-05-10 | 2021-07-20 | Sap Se | Selective dispatching of OLAP requests using execution statistics |
KR20180035035A (ko) * | 2016-09-28 | 2018-04-05 | 한국전자통신연구원 | 데이터 엔진에서의 질의 최적화 방법 및 장치 |
US10248706B2 (en) * | 2016-09-30 | 2019-04-02 | International Business Machines Corporation | Replicating database updates with batching |
US10324955B2 (en) | 2016-09-30 | 2019-06-18 | International Business Machines Corporation | Inter-table parallel refresh maximizer |
US10452682B2 (en) | 2017-01-05 | 2019-10-22 | International Business Machines Corporation | Accelerator based data integration |
CN108509455B (zh) * | 2017-02-28 | 2021-12-24 | 百度在线网络技术(北京)有限公司 | 数据表处理方法和装置 |
CN107220145B (zh) * | 2017-05-19 | 2021-06-01 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
US11630832B2 (en) | 2017-06-07 | 2023-04-18 | Sap Se | Dynamic admission control for database requests |
US10838981B2 (en) * | 2017-08-30 | 2020-11-17 | Sap Se | Database optimization using special partition specifications for replicas |
WO2019089601A1 (en) * | 2017-10-31 | 2019-05-09 | Ab Initio Technology Llc | Managing a computing cluster interface |
US10824643B2 (en) | 2017-11-15 | 2020-11-03 | International Business Machines Corporation | Data replication in a database environment |
US10715499B2 (en) * | 2017-12-27 | 2020-07-14 | Toshiba Memory Corporation | System and method for accessing and managing key-value data over networks |
US11321353B2 (en) * | 2018-03-20 | 2022-05-03 | International Business Machines Corporation | Dynamic roll-over of source and target latency in a replication environment |
US10965749B2 (en) * | 2018-04-10 | 2021-03-30 | Ie Limited | Dynamic data batching |
CN108829581B (zh) * | 2018-05-22 | 2021-03-26 | 平安科技(深圳)有限公司 | 应用程序测试方法、装置、计算机设备及存储介质 |
CN109033268A (zh) * | 2018-07-10 | 2018-12-18 | 安心财产保险有限责任公司 | 数据同步方法、装置、设备及存储介质 |
CN109241185B (zh) * | 2018-08-27 | 2021-03-30 | 武汉达梦数据库股份有限公司 | 一种数据同步的方法以及数据同步装置 |
US11379254B1 (en) * | 2018-11-18 | 2022-07-05 | Pure Storage, Inc. | Dynamic configuration of a cloud-based storage system |
US11340837B1 (en) | 2018-11-18 | 2022-05-24 | Pure Storage, Inc. | Storage system management via a remote console |
US11526405B1 (en) | 2018-11-18 | 2022-12-13 | Pure Storage, Inc. | Cloud-based disaster recovery |
CN111382199A (zh) * | 2018-12-29 | 2020-07-07 | 中兴通讯股份有限公司 | 一种数据库同步复制的方法和装置 |
CN109947789B (zh) * | 2019-01-28 | 2023-12-19 | 平安科技(深圳)有限公司 | 一种多数据库的数据处理的方法、装置、计算机设备及存储介质 |
US11042517B2 (en) * | 2019-06-07 | 2021-06-22 | Sap Se | Online migration of database systems |
CN110704466B (zh) * | 2019-09-27 | 2021-12-17 | 武汉极意网络科技有限公司 | 黑产数据存储方法及装置 |
CN111737341B (zh) * | 2020-04-23 | 2024-02-09 | 武汉达梦数据库股份有限公司 | 基于日志解析的插入操作同步优化方法和数据同步系统 |
CN112035463B (zh) * | 2020-07-22 | 2023-07-21 | 武汉达梦数据库股份有限公司 | 基于日志解析的异构数据库的双向同步方法和同步装置 |
TWI831023B (zh) * | 2021-06-28 | 2024-02-01 | 中國信託商業銀行股份有限公司 | 查詢系統及其資料更新方法 |
US11656957B1 (en) | 2021-12-01 | 2023-05-23 | International Business Machines Corporation | Managing nodes of a DBMS |
US20230409594A1 (en) * | 2022-06-15 | 2023-12-21 | International Business Machines Corporation | Conditional replication of data |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266541B2 (en) | 2002-04-12 | 2007-09-04 | International Business Machines Corporation | Adaptive edge processing of application data |
US7490083B2 (en) | 2004-02-27 | 2009-02-10 | International Business Machines Corporation | Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates |
CN100512118C (zh) * | 2005-12-22 | 2009-07-08 | 华为技术有限公司 | 分布式数据管理系统及其动态订阅数据的方法 |
US8407183B2 (en) | 2007-12-21 | 2013-03-26 | Sap Ag | Business intelligence data extraction on demand |
GB2480599A (en) * | 2010-05-17 | 2011-11-30 | Tech Universit T Muenchen | Hybrid OLTP and OLAP database |
US10430298B2 (en) | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
US8650150B2 (en) | 2011-03-14 | 2014-02-11 | Sap Ag | System and method of relating data and generating reports |
IL216056B (en) * | 2011-10-31 | 2018-04-30 | Verint Systems Ltd | A system and method for integrating databases |
CN103036717B (zh) * | 2012-12-12 | 2015-11-04 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
US20150142733A1 (en) | 2013-11-18 | 2015-05-21 | Ori Software Development Ltd. | System and method for efficient management of big data in a database using streaming tables |
CN103986773A (zh) * | 2014-05-26 | 2014-08-13 | 北京奇艺世纪科技有限公司 | 一种数据请求响应方法及装置 |
US9959178B2 (en) | 2014-11-25 | 2018-05-01 | Sap Se | Transactional and parallel log replay for asynchronous table replication |
US10242082B2 (en) * | 2014-12-12 | 2019-03-26 | Microsoft Technology Licensing, Llc | Context-driven multi-user communication |
US9886347B2 (en) | 2015-01-08 | 2018-02-06 | International Business Machines Corporation | Data replication in a database management system |
-
2015
- 2015-01-08 US US14/592,165 patent/US9886347B2/en not_active Expired - Fee Related
-
2016
- 2016-01-07 CN CN201610009447.4A patent/CN105786955B/zh active Active
-
2017
- 2017-11-22 US US15/820,468 patent/US10261862B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN105786955A (zh) | 2016-07-20 |
US20180095829A1 (en) | 2018-04-05 |
US20160203050A1 (en) | 2016-07-14 |
US9886347B2 (en) | 2018-02-06 |
US10261862B2 (en) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105786955B (zh) | 数据库管理系统中的数据复制 | |
Bacon et al. | Spanner: Becoming a SQL system | |
ES2776975T3 (es) | Tabla de almacenamiento de datos de escaneado completo continuo y almacén de datos distribuido con tiempo de respuesta predecible para carga de trabajo impredecible | |
Agrawal et al. | Asynchronous view maintenance for VLSD databases | |
US11138227B2 (en) | Consistent query execution in hybrid DBMS | |
US20150142733A1 (en) | System and method for efficient management of big data in a database using streaming tables | |
CN107122443A (zh) | 一种基于Spark SQL的分布式全文检索系统及方法 | |
CN109891402A (zh) | 可撤销和在线模式转换 | |
US20090248638A1 (en) | Simply querying across time | |
CN102279873A (zh) | 对数据、模式,以及应用程序的统一并发变更 | |
Tan et al. | Diff-Index: Differentiated Index in Distributed Log-Structured Data Stores. | |
CN104854587B (zh) | 用于维护主动查询的方法、系统和计算机可读存储介质 | |
Khayyat et al. | Fast and scalable inequality joins | |
Wingerath et al. | Real-time & stream data management: push-based data in research & practice | |
Bailis et al. | Readings in database systems | |
US20230409431A1 (en) | Data replication with cross replication group references | |
Schönig | Mastering PostgreSQL 12: Advanced techniques to build and administer scalable and reliable PostgreSQL database applications | |
Schönig | Mastering PostgreSQL 11: Expert techniques to build scalable, reliable, and fault-tolerant database applications | |
Faroult et al. | Refactoring SQL applications | |
Jota et al. | A physical design strategy on a nosql dbms | |
Affetti | New horizons for stream processing | |
Verma | Understanding the technological trends and quantitative analysis of NewSQL databases | |
Cugnasco | A framework for multidimensional indexes on distributed and highly-available data stores | |
Dimitrios | Alternative Storage Methods for Online Processing | |
Biriukov | Implementation aspects of bitemporal databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |