首页> 中国专利> 数据库管理系统中的数据复制

数据库管理系统中的数据复制

摘要

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

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-12

    授权

    授权

  • 2016-08-17

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160107

    实质审查的生效

  • 2016-07-20

    公开

    公开

说明书

技术领域

本公开内容总体上涉及计算机系统,并且更具体地涉及数据库 管理系统中的数据复制。

背景技术

存在各种类型的数据管理系统(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 SQLServer、MicrosoftAccess、Oracle、SAPHANA、dBASE、FoxPro、 IBMDB2等。

如本文中使用的术语“语句”指代结构化查询语言(SQL)语句, 其在数据库中执行写入操作(INSERT、UPDATE或DELETE)或从 数据库读取数据的读取操作(SELECT)。读取数据可以具有结果集 的形式,即通过执行读取语句返回的数据的列和行的逻辑集。“事 务”或“数据库事务”是数据库操作的逻辑单元,其作为整体被执 行以处理用于检索数据的用户请求。事务是包括并且构造(frame) 一个或多个语句的更大的单元。事务确保所构造的语句的动作相对 于恢复是原子性的。

如本文中使用的术语“日志”指代用作关于已经执行在特定数 据库上的所有语句和事务的信息的容器的数据结构。取决于实施例, 日志可以包括足够用于恢复数据库的内容的信息,并且还可以包括 用于统计、追踪或性能评价的信息。‘日志’可以被实施为电子文 档,例如文本文件、二进制文件或数据库记录的集合。单个物理数 据结构(文件、数据库记录的集合等)可以包括多个数据库的日志。 日志包括“日志记录”。“日志记录”是在操作在所录入的数据库 上的SQL引擎内的活动的单个原子日志。

如本文中使用的两个数据库的“数据一致性”意指特定请求将 返回相同的结果或几乎相同的结果,而不管用于处理请求的数据库。

如本文中使用的对第二列的‘预测’描述了对在DBMS处理特 定语句(诸如SQLSELECT语句)时将被访问的一个或多个第二列 的自动计算。‘预测’具有不同程度的可靠性:如果预测基于对SQL 语句进行解析,则预测可以是100%准确的,这是因为第二列将被指 定为SQL语句的部分。如果预测基于对查询历史(诸如目标日志) 的统计分析,则预测可能不是100%准确的,这是因为预测仅基于统 计评价。然而,用于预测在处理查询时要被访问的第二列(或第二 表)的两种实施方式变型在下文中应当由术语‘预测’涵盖。

图1和图4将在下文中一起进行描述以图示操作DBMS的上述 方法和对应的DBMS的实施例。

图1示出了包括源数据库122和目标数据库106的DBMS104 的方框图。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示出了在DBMS104接收到用于执行事务的特定语句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的“最 近提交的事务”。DBMS104接收到请求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),该 电子电路可以执行计算机可读程序指令,从而实现本发明的各个方 面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程 序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流 程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都 可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机 或其它可编程数据处理装置的处理器,从而生产出一种机器,使得 这些指令在通过计算机或其它可编程数据处理装置的处理器执行 时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/ 动作的装置。也可以把这些计算机可读程序指令存储在计算机可读 存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他 设备以特定方式工作,从而,存储有指令的计算机可读介质则包括 一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规 定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据 处理装置、或其它设备上,使得在计算机、其它可编程数据处理装 置或其它设备上执行一系列操作步骤,以产生计算机实现的过程, 从而使得在计算机、其它可编程数据处理装置、或其它设备上执行 的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动 作。

附图中的流程图和框图显示了根据本发明的多个实施例的系 统、方法和计算机程序产品的可能实现的体系架构、功能和操作。 在这点上,流程图或框图中的每个方框可以代表一个模块、程序段 或指令的一部分,所述模块、程序段或指令的一部分包含一个或多 个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现 中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。 例如,两个连续的方框实际上可以基本并行地执行,它们有时也可 以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组 合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的组合来实现。

本文中使用的术语仅仅出于描述特定实施例的目的并且不旨在 为对本发明的限制。如本文中使用的,单数形式的“一”、“一个” 和“所述”旨在还包括复数形式,除非上下文另行清楚指示。还将 理解,术语“包括”和/或“包含”当在本说明书中使用时详细列举 陈述的特征、整数、步骤、操作、元件和/或部件的存在,但是不排 除一个多个其他特征、整数、步骤、操作、元件、部件和/或其组的 存在或增加。

在所附的权利要求书中的所有装置或步骤加功能元件的对应的 结构、材料、动作和等价物旨在包括用于与如特别要求保护的其他 要求保护的元件组合地执行功能的任何结构、材料或动作。已经出 于说明和描述的目的而呈现对本发明的描述,但是不旨在为穷举的 或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情 况下,许多修改和变型对于本领域技术人员将是显而易见的。选择 并描述了实施例以便最好地解释本发明的原理和实际应用,并且以 便使得本领域其他技术人员能够理解针对具有如适于预见到的特定 用途的各种修改的各种实施例的本发明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号