实时更新的制作方法

文档序号:6546844阅读:169来源:国知局
实时更新的制作方法
【专利摘要】一种对实时计算机系统进行更新的方法及对应的系统。方法开始于:在第一时间,将数据的副本从第一系统迁移到通信地耦合的第二系统。接下来,在一个或多个随后的时间,将变化的数据的副本从第一系统迁移到第二系统直到达到阈值。最后,响应于达到阈值,将剩余的变化的数据的副本从第一系统迁移到第二系统。方法的又一个实施例包括:在第一时间迁移数据期间,禁用对第一系统的访问;在迁移变化的数据的副本期间,在一个或多个随后的时间,启用并保持对第一系统的访问;以及,在迁移剩余的变化的数据的副本期间,禁用对第一系统的访问。以这种方式,正在被更新的系统贯穿更新过程仍然是高度可用的。
【专利说明】实时更新

【背景技术】
[0001] 概括地说,本发明涉及计算机程序和系统领域,更具体地说,本发明涉及执行系统 更新的领域。
[0002] 计算机程序和系统的出现极大地改变了商业进行的方式。已经开发出了许多高级 和复杂的计算机系统来辅助商业和顾客。然而,这些系统并不保持停滞,并且这些系统通常 需要更新。


【发明内容】

[0003] 根据本发明的实施例,一种方法和相应的系统关注于更新计算机系统。本发明的 实施例开始于:在第一时间将数据的副本从第一计算(数据处理)系统迁移到通信地耦合 的第二计算(数据处理)系统。在该初始迁移之后,在一个或多个随后的时间将变化的数 据的副本从第一系统迁移到第二系统,直到达到阈值。响应于达到阈值,将剩余的变化的数 据的副本从第一系统迁移到第二系统。
[0004] 本发明的实施例还可以包括:以未转换的方式将迁移的数据的子集写入第二系 统。换句话说,数据是以不需要转换的方式写入的。本发明的又一个实施例包括:以允许与 第二系统通信的方式来安装一个或多个应用。这样的实施例还可以包括:使用由一个或多 个安装的应用提供的一个或多个各自处理程序转换迁移的数据的子集,并且将转换的数据 写入第二系统。根据本发明的替代实施例,处理程序可以使用数据库来跟踪数据转换。
[0005] 在本发明的实施例中,在第一时间迁移数据的副本期间,禁用对第一系统的访问。 此外,在这样的实施例中,当变化的数据的副本正被从第一系统迁移到第二系统时,在一个 或多个随后的时间,启用并保持对第一系统的访问。更进一步地,在剩余的变化的数据的副 本从第一系统迁移到第二系统期间,可以禁用对第一系统的访问。
[0006] 根据本发明的实施例,第一系统和第二系统可以单向通信地耦合,从而使得第一 系统无法看到第二系统。本发明的实施例还可以包括:响应于达到阈值,在将剩余的变化的 数据的副本从第一系统迁移到第二系统之后,将一个或多个客户端指向第二系统。在本发 明的又一个实施例中,在剩余的变化的数据的副本从第一系统迁移到第二系统之后,删除 第一系统。更进一步地,本发明的实施例可以包括:执行第二系统的内核更新。
[0007] 根据本发明的实施例,变化的数据是自数据从第一系统迁移到第二系统的先前时 间以来改变的数据以及添加到第一系统的数据。在本发明的又一个实施例中,阈值是在第 一系统上变化的数据的量。
[0008] 本发明的又一个实施例关注于一种更新系统。系统可以包括:第一系统、通信地耦 合到第一系统的第二系统、以及处理器。在这样的实施例中,处理器可以被配置用来在第一 时间将数据的副本从第一系统迁移到第二系统。处理器还可以被配置用来在一个或多个随 后的时间迁移变化的数据的副本。该迁移可以进行直到达到阈值。响应于达到阈值,处理 器可以被配置用来将剩余的变化的数据的副本从第一系统迁移到第二系统。
[0009] 在系统的又一个实施例中,处理器被配置用来以未转换的方式写入迁移的数据的 子集。根据更新系统的另一个实施例,处理器被配置用来以允许与第二系统通信的方式来 安装一个或多个应用。在又一个实施例中,处理器被配置用来使用由一个或多个安装的应 用提供的一个或多个各自处理程序转换迁移的数据的子集。在又一个实施例中,处理器还 被配置用来将转换的数据写入第二系统。
[0010] 在更新系统的又一个实施例中,处理器被配置用来在第一时间,在将数据的副本 从第一系统迁移到第二系统的同时,禁用对第一系统的访问。处理器还可以被配置用来:当 变化的数据的副本被迁移之后,在一个或多个随后的时间,启用并保持对第一系统的访问。 更进一步地,根据本发明的实施例,处理器可以被配置用来:当剩余的变化的数据的副本正 被从第一系统迁移到第二系统时,禁用对第一系统的访问。
[0011] 根据更新系统的实施例,变化的数据是自数据从第一系统迁移到第二系统的先前 时间以来改变的数据以及添加到第一系统的数据。在本发明的替代实施例中,处理器被配 置用来将一个或多个客户端指向第二系统,并且在剩余的变化的数据的副本从第一系统迁 移到第二系统之后,删除第一系统。
[0012] 本发明的又一个实施例关注于用于更新系统的装置,该装置包括:用于在第一时 间将数据的副本从第一系统迁移到通信地耦合的第二系统的模块;用于在一个或多个随后 的时间迁移变化的数据的副本的模块,变化的数据被从第一系统迁移到第二系统直到达到 阈值;以及用于响应于达到阈值将剩余的变化的数据的副本从第一系统迁移到第二系统的 模块。

【专利附图】

【附图说明】
[0013] 如在附图中所示出的,根据下面对本发明的示例实施例的更加具体的描述,前述 内容将是显而易见的,其中附图中相似的参考符号表示贯穿不同视图中的相似的部件。附 图不一定是按比例的,而是将重点放在示出本发明的实施例。
[0014] 图1是描绘了根据本发明的原理更新系统的方法的流程图。
[0015] 图2是描绘了更新系统的方法的流程图。
[0016] 图3是根据本发明的实施例的更新系统的简化图。
[0017] 图4是描绘了根据本发明的原理用于更新系统的方法的流程图。
[0018] 图5是示出根据本发明的实施例转换数据的过程的简化图。
[0019] 图6是可以用于本发明的实施例的计算机系统的框图。
[0020] 图7是可以在其中具体实现本发明的实施例的计算机系统的简化图。

【具体实施方式】
[0021] 企业计算机/软件系统通常需要更新,以便包括例如进一步的产品特征的事物。 然而,执行更新可能需要系统停机时间,因此使消费者无法使用系统。此外,系统停机时间 可能会使用户不想更新系统。因此,本发明的实施例解决了更新现有企业软件系统的需求, 并且最小化了系统的总体停机时间。除了其它原因之外,最小化由系统更新导致的停机时 间也是很重要的,以便满足客户期望和服务水平协议(SLA)。
[0022] 虽然更新时间可能不同,但它们通常与存储在系统中的数据量相关。因此,随着系 统使用的增加以及这样的系统存储更多的数据,更新所需要的停机时间将很可能增加。
[0023] 本发明的实施例减少了由更新这些系统导致的停机时间。虽然贯穿本申请使用了 术语"数据",但"数据"可以指仅是定义的数据单元的对象。此外,如贯穿本申请所参考的 "数据"可以指的是对象的结构。例如,数据可以包括给定的对象可以存储的各种属性。数 据(对象)的结构可以一般指的是元数据,即关于数据的数据。在企业系统中,可能存在各 种各样的数据结构,并且时常地更新系统可能涉及改变这些数据结构或添加全新的数据结 构。使系统更新进一步复杂化的事实是:这些变化可能是以逐客户端为基础进行的,这可能 导致需要为每个客户端定制更新过程。
[0024] 本发明的实施例解决了更新元数据系统的问题。在复杂的元数据系统中,数据彼 此之间的关系是由可以从一个版本改变到另一个版本的高度复杂的结构管理的。数据结构 复杂度由对复杂的物理和逻辑数据进行建模的需求所指定。这些结构的变化通常是由于不 断演变的建模需求和性能考虑。本发明的实施例允许更新这些结构同时最小化系统停机时 间。
[0025] 下面是对本发明的示例实施例的描述。
[0026] 图1是用于更新基于计算机的系统的方法100的流程图。方法100开始于:在第 一时间,将数据的副本从第一系统迁移到通信地耦合的第二系统(102)。第一系统和第二系 统可以是本领域已知的任何计算系统或基于计算机的系统(例如企业软件系统)。可以使 用本领域已知的任何方法从第一系统复制数据,例如使用由与被配置用来运行更新的处理 器运行的操作系统相关联的文件系统提供的"捕捉(snap)"工具。第一系统和第二系统可 以以任何各种方式通信地耦合,例如利用超文本传输协议(HTTP)或安全HTTP (HTTPS)协议 经由局域网(LAN)或广域网(WAN)连接。
[0027] 在第一时间迁移数据的副本之后,在一个或多个随后的时间,变化的数据的副本 被从第一系统迁移到第二系统,直到达到阈值(104)。例如,根据方法100的实施例,在对数 据进行初始复制和迁移之后,该方法继续将正在变化的或者正在被添加到第一系统的数据 迁移到第二系统。因为该过程可以在延伸的时间段上发生,因此可能多次发生对变化的数 据的迁移。如上所述,对变化的数据的迁移过程继续进行直到达到阈值。
[0028] 在本发明的实施例中,阈值指的是第一系统上变化的数据的量。可以基于任何数 量的因素来设定该阈值,包括变化的数据的历史量。此外,阈值还可以指的是更新过程的经 过时间和/或该过程发生的当天时间。例如,如果系统必须在某个时间前更新,那么该过程 可以继续直到达到完成更新所必要的时间。此外,以非高峰时段和高峰时段的形式定义阈 值是有利的。为了说明,第一系统中的数据的变化有可能是用户的结果,可以假定在非高峰 时段期间有利用第一系统的几个用户,因此可能在这些非高峰时间达到阈值。此外,可以将 阈值定义为所描述的因素和/或本领域内已知的任何其它考虑的组合。
[0029] 响应于达到阈值,方法100的下一个步骤为:将剩余的变化的数据的副本从第一 系统迁移到第二系统(106)。在迁移剩余的变化的数据(106)之后,来自第一系统的所有数 据应该被迁移到第二系统。
[0030] 图2是描绘了更新系统的方法200的流程图。方法200示出了用于更新实时系统 的方法100的实施例的细节。方法200以一系列步骤202开始201。如上面结合图1所描 述的,这些步骤202可以体现方法100的步骤102。虽然方法200以最小化停机时间的方式 来更新系统,但方法200的实施例确实会对正在更新的系统造成一些停机时间。
[0031] 方法200开始于禁用对第一系统的访问并且将数据的副本从第一系统迁移到第 二系统(202a)。在迁移数据的副本的同时,可以转换该数据的一个或多个子集(202b)。在 本发明的实施例中,将仅对需要转换的数据进行转换,对其它数据进行迁移而不进行转换。 在对数据进行转换(202b)之后,将转换的数据和未转换的数据写入第二系统(202c)。转换 的细节和过程在下文中结合图5来描述。在该时间,启用对第一系统的访问(202c)。方法 200的子过程202将第一系统的停机时间限制为第一系统上的数据的初始复制。在初始复 制之后,启用对第一系统的访问。因此,在执行系统更新的同时,用户体验的是高度可用的 系统。
[0032] 在迁移、转换、以及将数据从第一系统写入第二系统(202)之后,方法200的下一 步是:将变化的数据的副本从第一系统迁移到第二系统,如果必要的话则转换该数据的子 集,并且将变化的数据写入第二系统(204)。步骤204发生在步骤202之后的时间。如上所 述,因为在步骤202c处,在数据的初始迁移之后启用了对第一系统的访问,所以新的数据 有可能添加到第一系统,并且存在于第一系统的数据有可能被改变。第一系统上的数据的 这些变化必须反映在第二系统中。因此,在步骤204处,在随后的时间,变化的数据被复制、 迁移、在必要的情况下转换、以及写入第二系统。
[0033] 在将变化的数据复制、迁移、转换、以及写入第二系统(204)之后,方法200中的下 一步骤是判定是否满足阈值(205)。阈值是判定过程200在该处应该完成更新的点。可以 以本领域已知的任何方式来定义阈值。在方法200的示例实施例中,阈值是在第一系统上 变化的数据的量。如果在检查阈值(205)之后判定不满足阈值,那么方法200返回到步骤 204,在步骤204处,第一系统上的变化的数据被复制、迁移、转换、以及写入第二系统。复 制、迁移、转换、以及写入(204)、以及检查阈值(205)的这种循环继续直到达到阈值。
[0034] 响应于达到阈值,禁用对第一系统的访问,并且将剩余的变化的数据从第一系统 迁移、转换、以及写入至第二系统(206)。此时,第二系统包括第一系统上的最新的数据。在 迁移剩余的变化的数据(206)之后,启用访问并将客户端指到第二系统(207),方法200结 束(208)。
[0035] 以这种方式,方法200使用如上的迭代过程通过创建并更新第一系统的镜像来更 新第一系统。方法200提供了以有限的停机时间更新系统的方式。如上所述,根据方法200 的实施例,仅在初始迁移202、以及迁移剩余的变化的数据的最终阶段期间,禁用对第一系 统的访问(206)。
[0036] 图3是根据本发明的实施例的更新系统320的简化图。更新系统包括处理器326。 处理器326被配置用来利用更新系统320的各种部件来执行系统更新。系统320进一步包 括应用和开发工具套件(ADK) 323。ADK323可以具体实现为硬件、软件、和/或它们的组合, 并且可以用作与系统320的应用程序接口(API)。在本发明的实施例中,ADK323由处理器 326执行。根据本发明的实施例,ADK323在资产库文件中传递,这些文件是本领域内已知的 任何格式,例如Java Archive (JAR)格式。根据系统320的实施例,ADK323允许用户和管 理员与系统320交互。如下面将进一步详细解释的,ADK324可以被由系统320和/或耦合 到系统320的各种应用325a-n提供的处理程序使用,并且由处理器326执行,以便执行针 对待更新系统321的查询。这些查询可以是关于待更新系统321(N系统)上的已变化的数 据的查询。
[0037] 进一步耦合到处理器326的是应用325a_n。任何数量的应用325a_n可以耦合到 处理器326。应用325a-n可以由处理器326执行,并对用户可用。示例应用包括计算机辅 助设计(CAD)应用、计算机辅助工程(CAE)应用、和/或其它应用建模工具。在本发明的实 施例中,应用325a-n提供各种处理程序。如同将在下文中详细描述的,各种处理程序可以 由处理器326执行,并且被配置用来转换来自待更新系统321的数据。
[0038] 耦合到处理器326的应用325a-n和ADK323是更新模块324。更新模块324可以 具体实现为硬件、软件、和/或它们的组合。更新模块324可以由处理器326整体或部分执 行。在本发明的实施例中,更新模块324被配置用来改变定义管理各种应用程序325a-n的 数据模型(模式)的管理定义。这些管理定义指的是应用325a-n的各种模式的数据结构 的定义。贯穿本申请,术语模型、模式、以及元数据可以互换使用来指关于数据的数据,即描 述如由各种应用325a-n使用的数据的结构的数据。
[0039] 如本文中所描述的,更新模块324可以被配置用来具体实现方法200、300和/或 400。更新模块324可以被配置用来在各个系统级别上执行更新。例如,更新模块324可以 执行内核更新,所述内核更新可以包括改变数据库级别的定义,即数据库模式。更新模块 324还可以被配置用来执行内核平台级别的改变,这包括改变数据是如何组织的。此外,更 新模块324可以改变应用级别定义。应用级别的改变可以很简单,比如向现有对象添加额 外数据(例如向类型添加属性),或者它们可以包括改变数据是如何组织的结构。如本文中 所描述的,当改变数据的结构时,由各个应用325a-n提供的处理程序可以用于转换来自原 始的N系统321的数据,并将其提供给N+1系统322。
[0040] 更新系统320还包括数据库327,其可以被称为TagDB。数据库327通信地耦合到 更新模块324和处理器326。根据本发明的实施例,数据库327由处理器326、更新模块324、 应用325a-n、以及应用325a-n提供的各自处理程序使用,以跟踪对来自待更新系统321的 数据进行转换的过程。数据库327可以是本领域内已知的任何数据库,并且可以以促进更 新待更新系统321的过程的任何方式来构建。例如,在本发明的实施例中,数据库327是 "不仅是结构化查询语言"(NoSQL)类型的数据库。
[0041] 更新系统320还包括初始系统,S卩,待更新系统321,其贯穿本申请可以被称为"N 系统"。待更新系统321包括由应用325a-n使用的、促进用户对应用325a-n的使用和/或 由于用户对应用325a-n的使用而产生的各种数据。例如,如果给定的应用325a是CAD应 用,那么系统321可以包括定义由用户通过使用应用325a而生成的CAD模型的数据。N系 统321会把该数据存储在被称为应用325a的元数据的特定结构中,其由应用325a的特定 模式管理。
[0042] 通信地耦合到系统321的是系统322,其将是所得到的更新的系统。系统321和 322通信地耦合到处理器326。系统321和322可以通过使用各种模块(包括更新模块324 和ADK模块323)来访问,以便根据本发明的原理来执行系统更新。此外,系统321和322 可以单向通信地耦合,从而第一系统321无法看到第二系统322,或者反之亦然。
[0043] 下文中描述的是示例性使用系统320更新系统321。利用更新系统320对系统321 进行更新的示例方法可以以任何数量的初始设置过程开始。一种这样的过程可以包括:禁 用待更新系统321上的管理变化。管理变化可以指的是元数据,即描述存储在系统321上 的数据的结构的规则。管理变化的能力在贯穿更新过程中可以停止。然而,在贯穿更新过 程中,可以仍然允许创建"即时数据"的能力。"即时数据"可以指被改变的和新的数据,但 不是由新的数据结构定义的数据,因为在贯穿更新过程中,可以禁用数据结构的变化。
[0044] 其它初始过程包括:配置N+1系统322以连接回N系统321。该连接可以以本领域 已知的任何方式来实现,包括通过使用HTTP (超文本传输协议)和/或HTTPS (安全HTTPS) 协议。初始过程还可以包括:将数据从N系统321复制到N+1系统322。可以使用本领域 已知的任何方法来复制该数据,包括使用文件系统"捕捉"工具。可以是使用更新系统320 对系统321进行更新的方法的一部分的另一个初始过程可以包括在N+1系统322上执行内 核更新。
[0045] 此外,初始过程可以包括:使用应用325a_n的模式更新来安装应用325a_n。这些 具有模式更新的应用325a-n可以基于逐个租户的方式来安装。这些模式(元数据)更新 指的是数据结构的变化。例如,在建模工具应用的情况下,模式改变可以包括:添加属性或 者修改特定数据结构的政策。可以将应用325a-n安装在任何系统或部件上,从而使得应用 325a-n是以允许与N+1系统322通信的方式安装的。在示例实施例中,将应用安装在N+1 系统中,其具有更新在N+1系统中的元数据定义的效果。在根据需要借助应用325a-n的各 自模式更新安装了应用325a-n之后,初始设定过程还可以包括:为需要转换的数据类型配 置应用处理程序。配置处理程序可以很简单,比如配置各自处理程序从而使得当处理程序 遇到特定的数据结构时,它以特定的方式来转换该数据结构以便符合模式更新。虽然处理 程序可以被配置用来转换数据,但可以被称为缺省处理程序的其它处理程序可以被配置用 来处理不需要转换的数据。这可以包括:识别不需要转换的数据、促进不需要转换的数据的 传送和更新、以及将该数据写入N+1系统322。另一个初始过程可以包括配置数据库327以 供更新模块324和由应用325a-n提供的各自处理程序使用。
[0046] 在一个或多个初始设定过程之后,可以执行更新。如上所述,初始过程包括:复制 N系统321上的数据,并且将该数据迁移到N+1系统322。在初始复制之后,可以由处理器 326执行的更新模块324和ADK323联合工作以便执行N系统321的更新。以这种方式,当 数据被添加到N系统321,以及在N系统321上被改变时,这些数据变化通过使用更新模块 324、ADK323、应用325a-n、处理程序、以及处理器326反映在N+1系统322上。
[0047] 在更新过程的示例实施例中,在更新的第一次迭代中,捕捉到了所有闭包 (closure)的初始转换。闭包指的是一组彼此相关的对象,以这种方式,闭包指的是这些对 象的范围。贯穿本申请,术语"数据"和"对象"可以互换使用。
[0048] 在该第一次迭代中,对所有需要转换的数据进行了处理。这涉及ADK323对N系 统321的查询以便判定需要转换的所有数据。虽然由于作为初始过程完成了原始复制和迁 移,这样的数据已经在N+1系统上,而不是在N+1系统322上访问该数据以便转换需要转换 的数据,但由各自应用325a-n提供的处理程序反而删除N+1系统322上的这些未转换的数 据,并且访问N系统321上需要转换的数据。然后,该需要转换的数据被迁移、转换,然后被 写入N+1系统322。
[0049] 在更新过程的第一次迭代之后,经由ADK323的更新方法查询N系统321,以便判定 自从该系统上次被查询以来已经变化的任何数据。从这一点,仅将在N系统321上已经变 化的数据迁移、在必要的情况下转换、并且写入N+1系统322。此外,删除存储在N+1系统 322上的需要更新的任何经转换的数据。将N系统321上对应的数据进行迁移、转换、以及 写入N+1系统322。与更新在N+1系统322上需要更新的转换的数据相比,由于能够更快地 转换、迁移、以及写需要转换的数据,因此这是有利的。在替代实施例中,对N+1系统322上 的数据简单地进行更新,而不是删除在N+1系统322上需要更新的转换的数据。
[0050] 访问N系统321并且更新N+1系统322上的数据以便反映对N系统321上的数据 做出的变化的迭代过程继续,直到达到阈值。该阈值可以指的是N系统321上的数据与N+1 系统322上的数据之间的差异的量,即增量的大小。此外,阈值还可以是时间期限和/或增 量与时间的组合。在达到阈值之后,N系统321上的所有剩余的变化的数据被迁移、在必要 的情况下转换、并且写入N+1系统322,该过程完成。
[0051] 在系统320的另一个实施例中,处理器326被配置用来在初始复制和初始数据迁 移期间,禁用对N系统321的访问。此外,处理器326可以被配置用来在初始迁移和复制之 后,并且在迁移、转换、以及向N+1系统322写入数据以便反映 N系统321上的数据的变化 的迭代过程期间,启用并保持对N系统321的访问。更进一步地,处理器326可以被配置用 来在响应于达到阈值而发生的对剩余的变化的数据的迁移期间禁用对N系统321的访问。
[0052] 根据本发明的替代实施例,处理器326还可以被配置用来在更新完成之后将客户 端指到N+1系统322。替代实施例还可以包括:在更新完成之后删除N系统321。
[0053] 此外,在本发明的实施例中,系统321可以由任何数量的租户共享。因此,N系统 321的更新可以基于逐个租户的方式来进行。此外,这样的更新过程可以包括:基于逐个租 户的方式来安装应用,从而使得每一个应用可以符合各自租户的需求。
[0054] 图4是描绘了根据本发明的原理用于更新系统的方法400的流程图。方法400开 始(431),并且"检查日期"被设置为空(432)。"检查日期"指的是更新过程查询待更新系 统的最后时间。如本文中所描述的,方法400的实施例还可以包括:执行任何数量的初始过 程,包括借助模式更新来安装应用。在对"检查日期"进行初始化(432)之后,识别比"检查 日期"更加新的对象和关系(433)。虽然使用了术语"更加新",然而更加新可以指的是自从 "检查日期"以来被改变的、但不一定是"新"的对象。此外,在判定比"检查日期"更加新的 对象/关系之后,"检查日期"被设置为该查询的时间(433)。接下来,调用结合图3描述的 来自各自应用(例如应用325a)的处理程序来计算闭包。如上文所描述的,闭包指的是彼 此相关的对象的集合。如本文中所描述的,闭包包括如这里结合图5所解释和描述的对象 和这些对象之间的关系。计算闭包指的是转换对象从而使得相关对象符合由系统更新造成 的模式更新的过程。在调用应用处理程序来计算闭包(434)之后,判定是否已经计算出了 闭包(435)。当已经计算出闭包之后,该过程判定是否还有更多要做的(440)。当判定尚未 计算出闭包(435)时,首先,删除之前映射的对象和关系(436)。接下来,创建新的对象和 关系(437)。在创建了新的对象和关系(437)之后,然后设置关于对象和关系的所有属性 (438)。在设置了对象和关系的属性(438)之后,将闭包记录在数据库(例如图3的数据库 327)中(439)。
[0055] 过程400中的下一步是判定是否还有更多要做的(440)。该查询询问是否有更多 需要转换的对象。如果存在更多需要转换的对象,那么方法400返回步骤434,并且调用应 用处理程序来计算另一个闭包,并且针对需要转换的闭包重复步骤435-439。该过程继续, 直到在步骤433中被识别为比"检查日期"更加新的所有对象和关系已经进行了合适的转 换和/或迁移到了新的系统。当判定没有更多需要转换和/或迁移的对象时,则在步骤440 处判定没有更多要做的了。
[0056] 当判定没有更多要做(440)时,方法400的下一步骤是判定是否存在小的增量 (441)。增量可以指的是与新系统中的对象不同的原始系统中的对象的数量。当需要更新 的原始系统中的对象的数量达到某个阈值时,可以认为是小的增量。虽然示出的方法400 寻找小的增量(441),但其它指示符也可以单独或者与增量结合使用。例如,方法400的实 施例还可以考虑执行更新的当天时间。如本文中所描述的,正在进行更新的系统在初始数 据迁移期间以及在最终阶段期间可能是不可用的。因此,例如,在几个人在使用并试图访问 待更新系统的情况下,执行涉及时间的最终扫描(sweep)可能是有利的。
[0057] 如果在步骤441处判定不存在小的增量,那么方法400返回步骤433,在步骤433 处,方法400重复上述步骤。在步骤433处,在找到比"检查日期"更加新的对象和关系之 后,更新"检查日期"以便反映该最近的查询,并且该方法如上文所述继续进行。如果达到 小的增量,则方法结束(442)。在达到小的增量之后,方法400的替代实施例执行一个或多 个任务来完成更新。根据这样的实施例,在达到小的增量之后,禁用对正在更新的系统的访 问,并且对需要更新的最后的剩余的数据进行迁移、在必要的情况下转换、并且写入N+1系 统。其它的实施例可以额外地运行最终验收测试和基线指标过程。例如,在使N+1系统活 动之前,可以执行自动和/或手动测试,以便验证N+1系统处于可接受状态。此外,实施例 可以将客户端指到系统的N+1实例,并且删除系统的原始实例和用于跟踪数据转换的数据 库。
[0058] 图5是示出根据本发明的实施例的转换数据的过程的简化图。本文中提及的转换 有关于处理N系统和N+1系统中的不同的数据结构的需要。有可能N系统中代表的数据是 以与N+1系统中的数据不同的方式布局的。该转换可以由被称为处理程序的代码来处理。 处理程序可以对转换所需要的变化进行分组,并且产生转换的数据集。
[0059] 在图5中,闭包555代表待更新的第一系统551中的闭包B。在示出的闭包555 中,例如线X、Y以及Z的线指的是关系,而框起来的字母A、B、C以及D指的是对象。在第 二系统552中示出了转换B' 556。在第二系统552和各自闭包556中,移除中间对象B,并 且现在将B的数据存储在关系Μ中。鉴于该转换,借助条目557来更新标签数据库553以 反映变化。在本发明的实施例中,该转换所涉及的对象的分组被称为源闭包,而转换的对象 集可以被称为目标闭包。
[0060] 根据本发明的实施例,例如应用325a_n的应用可以针对需要转换的每一种对象 类型注册处理程序。此外,在本发明的实施例中,针对不需要转换的数据类型可以存在缺省 的处理程序。缺省的处理程序可以简单地返回包含单个对象的闭包。在另一个实施例中, 处理程序针对自从上次迭代以来被修改的任何对象计算闭包。
[0061] 根据本发明的实施例,多个处理程序可以在具有多种类型的闭包中合作。以这样 的合作努力,当闭包中的任何对象发生变化时,每一个处理程序可能会产生相同的结果。例 如,如果给定闭包中的X发生了变化,那么各自处理程序将产生B = B,X,Y,Z,并且类似地, 如果Y发生了变化,那么另一个各自处理程序将产生B = B,X,Y,Z。当处理程序在合作时, 它们可以被配置用来选择并就闭包标识的一致命名惯例达成一致。在本发明的实施例中, 闭包标识符保持唯一并且随时间一致。一种这样的可能惯例可以是使用闭包中的中心对象 的物理标识符。
[0062] 当特定的处理程序在计算闭包时,在存储器中判定了对象和关系及它们的各自属 性的图形。用于跟踪这样的转换的可能惯例可以是:当重用对象/关系时使用实际的物理 标识符(PID),并且当生成新的对象/关系时使用符号名称。
[0063] 如本文中所描述的,可以由数据库327具体实现的数据库(例如NoSQL数据库) 可以被用于记录转换和产生PID。当存储转换时,根据本发明的实施例,转换具有两个部分。 标识符(ID),其是由执行更新的各自处理程序选择的稳定的名称;以及PID列表,其是组成 转换的实际或符号PID的列表。此外,根据本发明的实施例,可以将时间戳附加到ID以指 示用于构建闭包的最近的对象。利用时间戳可以允许即使多个对象发生了变化也只构造一 个转换。此外,根据本发明的实施例,如果时间戳早于存储的时间戳,那么可以假定闭包已 经被处理。
[0064] 除了存储转换,本发明的实施例还可以包括存储PID映射。使用存储的PID映射 可以促进查找先前的PID以及在必要的情况下删除对应对象。在这样的映射中,当创建新 对象时,将记录新的PID。
[0065] 图6是可以在其中具体实现本发明的实施例的计算机系统601的高级别框图。系 统601包含总线615。总线615是系统601的各个部件之间的连接。连接到总线615的是 用于将例如键盘、鼠标、显示器、扬声器等的各种输入和输出设备连接到系统601的输入/ 输出设备接口 630。中央处理单元(CPU)605连接到总线615,并提供执行计算机指令。存 储器625提供用于执行计算机指令的数据的易失性存储。存储设备620提供软件指令(例 如操作系统(0S))的非易失性存储。系统601还包括:用于将系统601连接到本领域已知 的任何种类的网络(例如局域网(LAN)和广域网(WAN))的网络接口 635。
[0066] 图7示出了可以在其中具体实现本发明的计算机网络环境770。在计算机网络环 境770中,服务器771通过通信网络772链接到客户端773a-n。环境770可以用于允许客 户端773a-n单独或与服务器771结合来执行上述方法。此外,在计算机网络环境770的实 施例中,客户端773a-n可以经由网络772和/或服务器771来访问更新的系统。
[0067] 应该理解的是:上述示例实施例可以以多种不同的方式来实现。在某些情况下,本 文中描述的各种方法和机器分别可以由物理、虚拟、或混合通用计算机、或计算机网络环境 (例如计算机环境770)来实现。
[0068] 其中的实施例或方面可以以硬件、固件或软件的形式来实现。如果以软件实现,则 该软件可以存储在被配置用来使处理器能够装载软件或其指令的子集的任何非暂时性计 算机可读介质上。然后,处理器执行这些指令,并且被配置用来操作或促使装置以如本文中 所描述的方式操作。
[0069] 此外,在本文中可以将固件、软件、例程、或指令描述为执行数据处理器的某些动 作和/或功能。然而,应该领会的是:本文中包含的这些描述仅为了方便,并且这些动作实 际上源自于计算设备、处理器、控制器、或执行固件、软件、例程、指令等的其它设备。
[0070] 应该理解的是:流程图、框图以及网络图可以包括更多或更少的元件、以不同的方 式布置、或者以不同的方式代表。但是,还应该理解的是:某些实现可以指示框图和网络图, 并且示出实施例的执行的框图和网络图的数量可以以特定的方式来实现。
[0071] 因此,还可以在各种计算机体系结构、物理、虚拟、云计算机、和/或其中的某种组 合中实现进一步的实施例,并且因此,本文中描述的数据处理器旨在仅出于解释的目的而 不是作为对实施例的限制。
[0072] 虽然已经参考本发明的示例实施例对本发明进行了具体地显示和描述,但本领域 技术人员将明白的是:可以在不偏离由所附权利要求书覆盖的本发明的范围的前提下,进 行形式和细节上的各种变化。
[0073] 例如,前文将第一和第二系统描述为基于计算机的、计算、处理、数据处理、以及数 据库系统等和/或它们的组合的任何一种。
【权利要求】
1. 一种用于更新系统的方法,所述方法包括: 在第一时间,将数据的副本从第一计算系统迁移到通信地耦合的第二计算系统; 在一个或多个随后的时间,迁移变化的数据的副本,所述变化的数据被从所述第一计 算系统迁移到所述第二计算系统直到达到阈值;以及 响应于达到所述阈值,将剩余的变化的数据的副本从所述第一计算系统迁移到所述第 二计算系统。
2. 根据权利要求0所述的方法,还包括: 以未转换的方式将迁移的数据的子集写入所述第二计算系统。
3. 根据权利要求0所述的方法,还包括: 以允许与所述第二计算系统通信的方式来安装一个或多个应用。
4. 根据权利要求0所述的方法,还包括: 使用由一个或多个安装的应用提供的一个或多个各自处理程序转换所述迁移的数据 的子集,并且将转换的数据写入所述第二计算系统。
5. 根据权利要求0所述的方法,其中所述一个或多个各自处理程序利用数据库来跟踪 转换所述数据。
6. 根据权利要求0所述的方法,还包括: 在所述第一时间迁移所述数据的副本期间,禁用对所述第一计算系统的访问; 在迁移所述变化的数据的副本期间,在一个或多个随后的时间,启用并保持对所述第 一计算系统的访问;以及 在迁移所述剩余的变化的数据的副本期间,禁用对所述第一计算系统的访问。
7. 根据权利要求0所述的方法,其中所述第一计算系统和所述第二计算系统是单向通 信地耦合的,其中所述第一计算系统无法看到所述第二计算系统。
8. 根据权利要求0所述的方法,还包括: 在将所述剩余的变化的数据的副本从所述第一计算系统迁移到所述第二计算系统之 后,将一个或多个客户端指到所述第二计算系统;以及 在将所述剩余的变化的数据的副本从所述第一计算系统迁移到所述第二计算系统之 后,删除所述第一计算系统。
9. 根据权利要求0所述的方法,还包括:执行所述第二计算系统的内核更新。
10. 根据权利要求〇所述的方法,其中,所述变化的数据是自数据从所述第一计算系统 迁移到所述第二计算系统的先前时间以来改变的数据以及添加到所述第一计算系统的数 据。
11. 根据权利要求〇所述的方法,其中所述阈值是在所述第一计算系统上变化的数据 的量。
12. -种计算机更新系统,包括: 第一系统; 通信地耦合到所述第一系统的第二系统; 处理器,其被配置用来: 将数据的副本从所述第一系统迁移到所述第二系统,所述处理器在第一时间迁移所述 数据的副本; 在一个或多个随后的时间,迁移变化的数据的副本,所述处理器将所述变化的数据从 所述第一系统迁移到所述第二系统直到达到阈值;以及 响应于达到所述阈值,将剩余的变化的数据的副本从所述第一系统迁移到所述第二系 统。
13. 根据权利要求0所述的更新系统,其中所述处理器还被配置用来:以未转换的方式 将迁移的数据的子集写入所述第二系统。
14. 根据权利要求0所述的更新系统,其中所述处理器还被配置用来:以允许与所述第 二系统通信的方式来安装一个或多个应用。
15. 根据权利要求0所述的更新系统,其中所述处理器还被配置用来: 使用由一个或多个安装的应用提供的一个或多个各自处理程序转换所述迁移的数据 的子集;并且 将转换的数据写入所述第二系统。
16. 根据权利要求0所述的更新系统,其中所述处理器还被配置用来: 在所述第一时间迁移所述数据的副本期间,禁用对所述第一系统的访问; 在迁移所述变化的数据的副本期间,在一个或多个随后的时间,启用并保持对所述第 一系统的访问;以及 在迁移所述剩余的变化的数据的副本期间,禁用对所述第一系统的访问。
17. 根据权利要求0所述的更新系统,其中所述变化的数据是自数据从所述第一系统 迁移到所述第二系统的先前时间以来改变的数据以及添加到所述第一系统的数据。
18. 根据权利要求0所述的更新系统,其中所述处理器还被配置用来: 在将所述剩余的变化的数据的副本从所述第一系统迁移到所述第二系统之后,将一个 或多个客户端指到所述第二系统;以及 在将所述剩余的变化的数据的副本从所述第一系统迁移到所述第二系统之后,删除所 述第一系统。
19. 根据权利要求0所述的更新系统,其中所述阈值是在第一系统上变化的数据的量。
20. -种用于更新系统的装置,所述装置包括: 用于在第一时间将数据的副本从第一系统迁移到通信地耦合的第二系统的模块; 用于在一个或多个随后的时间迁移变化的数据的副本的模块,所述变化的数据被从所 述第一系统迁移到所述第二系统直到达到阈值;以及 用于响应于达到所述阈值将剩余的变化的数据的副本从所述第一系统迁移到所述第 二系统的模块。
【文档编号】G06F9/445GK104216731SQ201410210348
【公开日】2014年12月17日 申请日期:2014年5月19日 优先权日:2013年5月30日
【发明者】B·塔边金, D·E·图克斯巴里, W·J·厄珀姆, S·兰弗兰基 申请人:达索系统艾诺维亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1