数据库管理系统中的数据复制技术方案

技术编号:13404254 阅读:90 留言:0更新日期:2016-07-25 01:37
本公开的实施例涉及数据库管理系统中的数据复制。根据一个方面,一种数据库管理系统(DBMS)操作用于执行数据复制。该DBMS包括源数据库和目标数据库。该源数据库包括分别包含一个或多个第一列的多个第一表,并且该目标数据库包括分别包含一个或多个第二列的多个第二表。该第一列中的多个第一列中的每个第一列被映射到第二列中的一个第二列,第二列中的每个第二列适于存储被映射到第二列的第一列的复制的数据变化。第二列中的每个第二列具有分配的更新时间,该更新时间为第二列从其映射的第一列最近接收增量数据变化的时刻,该DBMS操作用于在提供数据复制时处理所请求的数据库语句。

【技术实现步骤摘要】

本公开内容总体上涉及计算机系统,并且更具体地涉及数据库管理系统中的数据复制
技术介绍
存在各种类型的数据管理系统(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可以隐藏两种不同的数据结构,其包括两个数据本文档来自技高网
...

【技术保护点】
一种用于操作数据库管理系统的计算机实现的方法,所述数据库管理系统包括源数据库和目标数据库,所述源数据库包括分别包含一个或多个第一列的多个第一表,所述目标数据库包括分别包含一个或多个第二列的多个第二表,其中所述第一列中的多个第一列中的每个第一列被映射到所述第二列中的一个第二列,所述第二列中的每个第二列适于存储被映射到所述第二列的所述第一列的复制的数据变化,其中所述第二列中的每个第二列具有分配的更新时间,所述更新时间为所述第二列从其映射的第一列最近接收增量数据变化的时刻,所述方法包括:所述数据库管理系统接收一条执行所请求的语句的请求,所述语句为数据库语句;所述数据库管理系统预测在处理所述请求的语句时将被访问的所述第二列中的一个或多个第二列;所述数据库管理系统针对预测的所述第二列中的每个第二列确定其分配的更新时间;所述数据库管理系统标识同步点时间,所述同步点时间为所有确定的所述更新时间中的最近更新时间;所述数据库管理系统标识开始时间,所述开始时间为所有确定的所述更新时间中的最早更新时间;基于所标识的开始时间不同于所标识的同步点时间,所述数据库管理系统从被映射到预测的所述第二列中的任何一个第二列的所有第一列向预测的所述第二列选择性地并且增量地复制数据变化,使得在所述开始时间与所述同步点时间之间被施加在所述第一列上的所有数据变化被复制到预测的所述第二列;其中在所述复制之后,预测的所述第二列中的每个第二列的所述更新时间被设置为所述同步点时间;所述数据库管理系统延迟执行所述请求的语句直到所述复制的成功终止;以及在所述成功终止之后,所述数据库管理系统在所述目标数据库中执行所述请求的语句。...

【技术特征摘要】
2015.01.08 US 14/592,1651.一种用于操作数据库管理系统的计算机实现的方法,所述数据库
管理系统包括源数据库和目标数据库,所述源数据库包括分别包含一个
或多个第一列的多个第一表,所述目标数据库包括分别包含一个或多个
第二列的多个第二表,
其中所述第一列中的多个第一列中的每个第一列被映射到所述第
二列中的一个第二列,所述第二列中的每个第二列适于存储被映射到所
述第二列的所述第一列的复制的数据变化,
其中所述第二列中的每个第二列具有分配的更新时间,所述更新时
间为所述第二列从其映射的第一列最近接收增量数据变化的时刻,
所述方法包括:
所述数据库管理系统接收一条执行所请求的语句的请求,所述语句
为数据库语句;
所述数据库管理系统预测在处理所述请求的语句时将被访问的所
述第二列中的一个或多个第二列;
所述数据库管理系统针对预测的所述第二列中的每个第二列确定
其分配的更新时间;
所述数据库管理系统标识同步点时间,所述同步点时间为所有确定
的所述更新时间中的最近更新时间;
所述数据库管理系统标识开始时间,所述开始时间为所有确定的所
述更新时间中的最早更新时间;
基于所标识的开始时间不同于所标识的同步点时间,所述数据库管
理系统从被映射到预测的所述第二列中的任何一个第二列的所有第一
列向预测的所述第二列选择性地并且增量地复制数据变化,使得在所述
开始时间与所述同步点时间之间被施加在所述第一列上的所有数据变
化被复制到预测的所述第二列;其中在所述复制之后,预测的所述第二
列中的每个第二列的所述更新时间被设置为所述同步点时间;
所述数据库管理系统延迟执行所述请求的语句直到所述复制的成
功终止;以及
在所述成功终止之后,所述数据库管理系统在所述目标数据库中执
行所述请求的语句。
2.根据权利要求1所述的计算机实现的方法,其中预测所述一个或
多个第二列包括以下各项中的一项:
自动地对所述请求的语句进行解析并使用在所述请求的语句中引
用的所有第二列作为预测的所述第二列;和
自动地评价请求历史,所述请求历史指示在处理所请求的语句时先
前已经被访问的所述目标数据库的所有表和列,所述评价包括标识或计
算访问统计,所述访问统计指示所述目标数据库中的所述第二列中的每
个第二列或所述第二表中的每个第二表的访问频率。
3.根据权利要求1所述的计算机实现的方法,
其中在每个第二表的基础上向所述第二列分配所述更新时间,并且
其中在所述第二表中的相同的第二表中所包含的所有第二表的更新时
间是相同的;
其中预测所述一个或多个第二列包括:预测在处理所述请求的语句
时将被访问的一个或多个第二表并且使用在预测的所述第二表中所包
含的所有第二列作为预测的所述第二列;
其中确定所述第二列的所述更新时间包括:确定被分配给包括所述
第二列的所述第二表的所述更新时间,并且使用确定的所述更新时间作
为被分配给所述第二列的所述更新时间;以及
其中执行所述复制包括:从被映射到在预测的所述第二表中的任何
一个第二表中所包含的所述第二列中的任何一个第二列的所有第一列
向它们映射的第二列复制所述数据变化,使得在所述开始时间与所述同
步点时间之间被施加在所述第一列上的所有数据变化被复制到预测的
所述第二表;其中在所述复制之后,预测的所述第二表中的每个第二表
的所述更新时间被设置为所述同步点时间。
4.根据权利要求1所述的计算机实现的方法,
其中所述源数据库具有分配的源日志并且所述目标数据库具有分
配的目标日志;
其中所述更新时间以所述源日志的日志序列号的形式或以所述目
标日志的日志序列号的形式被分配到所述第二列中的每个第二列,其中
所述源日志和所述目标日志是同步的;并且
其中执行选择性且增量的复制包括针对预测的所述第二列中的每
个第二列,包括:
标识指示当前被分配给所述第二列的所述更新时间的开始日志序
列号;
标识指示所标识的同步点时间的结束日志序列号;
标识被映射到预测的所述第二列中的一个第二列的所有第一列;
在所述源日志中标识在所述开始日志序列号与所述结束日志序列
号之间的、在所述第一列中的任何一个第一列上执行的所有写入语句;
标识在所标识的写入语句内被应用在所标识的第一列上的所有数
据变化;以及
选择性地将在所标识的第一列中的所标识的变化应用到被映射到
所述第一列的所述第二列。
5.根据权利要求4所述的计算机实现的方法,还包括:
所述数据库管理系统在所述源日志中标识当前源提交日志序列号,
所述当前源提交日志序列号指示在接收所述请求之前在所述源数据库
中最近提交的事务中的第一事务的提交事件,
其中执行对所述数据变化的所述增量复制包括:标识直到所述同步
点时间的被施加在所述第一列上的未复制的数据变化,所述未复制的数
据变化是由在所述当前源提交日志序列号处或之前的已经在所述源数
据库中提交的事务施加的;并且选择性地复制所标识的数据变化。
6.根据权利要求1所述的计算机实现的方法,其中所述请求的语句
是由所述数据库管理系统在预定义的第一时间间隔期间接收的多个所
请求的语句中的一个语句,并且所述方法还包括:
所述数据库管理系统针对所述多个请求的语句中的每个语句执行
对所述第二列中的所述一个或多个第二列的预测;以及
所述数据库管理系统根据针对所述多个请求的语句所预测的所有
第二列来生成预测的第二列的唯一集合,并且使用第二列的所述唯一集
合作为所述一个或多个预测的第二列以执行对所述同步点时间的所述
标识。
7.根据权利要求1所述的计算机实现的方法,其中响应于接收到用
于执行所述请求的语句的所述请求而对多个第一列中的所述数据变化
到被映射到所述第一列的第二列的所述增量复制,所述增量复制被执行
在一个或多个批处理中,并且其中,另外,多个第一列中的数据变化在
第二时间间隔处被自动地复制到被映射到所述第一列的第二列。
8.根据权利要求7所述的计算机实现的方法,还包括:
对所述一个或多个批处理进行编译,每个批处理包括已经在所述源
数据库中被执行的并且还没有被复制到所述目标数据库并且被指向所
述第一列中的一个第一列的一个或多个事务的语句,所述第一列中的所
述一个第一列的映射的第二列被预测为在处理所述请求的语句时要被
访问;
将每个批处理的所述语句分组成一个或多个提交组,其中所述提交
组中的任何提交组中所包含的所有语句属于已经在所述源数据库中提
交的相同事务,其中所述提交组不包括非提交的事务的语句;
复制所述批处理,从而在单个步骤中将由所述批处理中的一个或多
个提交组中的所述语句施加的所有数据变化复制到所述目标数据库;以

在已经成功地复制所述批处理之后,将被分配给每个第二列的所述
更新时间更新为所述同步点时间。
9.根据权利要求8所述的计算机实现的方法,还包括针对所述目标
数据库的每个第二列:
自动地评价所述第二列的请求历史,所述请求历史指示在第二时间
间隔期间先前已经接收的请求的并且其处理包括访问所述第二列的语
句的数目;
自动地计算针对所述第二列的批处理大小,从而使用所述第二列的
所述请求历史作为输入,所述批处理大小指示在单独的批处理内的语句
的最大可允许数目或最大批处理大小,其中所述计算使得所述最大可允
许数目或所述最大批处理大小与所述第二列的访问频率负相关;并且
执行所述编译、所述分组、所述复制和所述更新,其中根据所述自
动计算的批处理大小来执行创建所述批处理,并且其中复制所述批处理
还包括更新被分配给所述第二列的所述更新时间。
10.根据权利要求9所述的计算机实现的方法,其中所述一个或多
个批处理是具有不同批处理大小的多个批处理,其中在所述第二时间间
隔中的一个第二时间间隔期间,在所述多个批处理中将尚未复制的数据
变化包含在所述第一列中包括:
针对变化被包含的每个第一列:评价所述目标日志,以标识针对所
述第一列中的每个第一列的访问频率,所述访问频率指示响应于先前请
求而访问被映射到所述第一列的所述第二列中的所述一个第二列的所
述频率;以及
将用于复制尚未复制的数据的语句分发到批处理的序列,
其中其映射的第二列具有最高访问频率的第一列的数据变化被分
发到具有最小批处理大小的多个批处理中的一个批处理,以及
其中其映射的第二列具有最低访问频率的第一列的数据变化被分
发到具有最大批处理大小的多个批处理中的一个批处理。
11.根据权利要求1所述的计算机实现的方法,还包括:
在第三时间间隔处定期地评价所述第一列中的每个第一列,以确定
所述第一列是否包括任何新的未复制的数据变化;以及
如果评价的所述第一列中的一个第一列不包括任何新的未复制的
数据变化,将被映射到所述第一列的所述第二列中的一个第二列的...

【专利技术属性】
技术研发人员:N·赫尔D·马丁C·莫汉S·K·萨林J·D·斯派克姚永丰
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1