用于表结构变更后的信息复制方法和装置与流程

文档序号:12597974阅读:207来源:国知局
本公开涉及通信领域,具体地,涉及一种用于表结构变更后的信息复制方法和装置。
背景技术
::在互联网和信息化高速发展的今天,数据的产生呈爆炸式增长。原始的单个数据库早已无法支撑现有的应用,随之产生了读写分离、分库等技术方案。因此原始的一个数据库拆分成了多个数据库,为了保证数据的一致性,数据复制技术得到了广泛应用,即源端数据库产生的数据变化,在一定时间内复制给目标端数据库。在数据复制过程中,如果源端数据库中的源表(Table)结构发生了变化(例如,新增了一个字段、或删除了一个字段),会导致源端数据库中的源表和目标端数据库中的目标表的结构不一致,这样就可能引起数据复制过程失败,甚至引起数据错误。在相关技术中,一方面,可以通过手动方式进行表结构的复制。该方式中,当数据复制错误终止时,手动地调整目标表的结构。另一方面,还可以通过数据复制软件进行半自动的表结构的复制。这些方式都需要暂停或中断整个数据复制过程,这样会影响数据复制的进度。技术实现要素:本公开的目的是提供一种简单易行的用于表结构变更后的信息复制方法和装置。为了实现上述目的,本公开提供一种用于表结构变更后的信息复制方法。所述方法包括:当源端数据库中源表的结构发生变更时,提取与所述源表的结构变更对应的源端数据定义语言DDL语句;根据所述源端DDL语句,将目标端数据库中目标表的结构变更为与所述源表的结构相同。可选地,所述根据所述源端DDL语句,将目标端数据库中目标表的结构变更为与所述源表的结构相同的步骤包括:判断所述源端数据库的类型与所述目标端数据库的类型是否相同;当所述源端数据库的类型与所述目标端数据库的类型不同时,根据所述源端DDL语句,生成与所述目标端数据库对应的目标端DDL语句;控制所述目标表执行所述目标端DDL语句,以使所述目标表的结构变更为与所述源表的结构相同。可选地,所述方法还包括:根据所述源端数据库的元数据信息生成初始数据字典;根据所述源端DDL语句和上一数据字典生成与所述源端DDL语句对应的当前数据字典。可选地,所述方法还包括:根据所述源端DDL语句,将所述源表到所述目标表之间的数据映射关系更新为与所述源端DDL语句对应的当前映射关系;判断所述源表中的数据是否发生变更;当判定所述源表中的数据发生变更时,根据所述当前数据字典来解析所述数据变更;根据所解析的数据变更和所述当前映射关系,将所述目标表中的数据变更为与所述源表中的数据一致。可选地,所述方法还包括:接收用户发送的回溯命令,所述回溯命令指示从预定的历史时间点开始重新进行信息复制;响应于所述回溯命令,根据所述预定的历史时间点以及历史数据字典重新进行信息复制。本公开还提供一种用于表结构变更后的信息复制装置。所述装置包括:DDL提取模块,用于当源端数据库中源表的结构发生变更时,提取与所述源表的结构变更对应的源端数据定义语言DDL语句;结构变更模块,用于根据所述源端DDL语句,将目标端数据库中目标表的结构变更为与所述源表的结构相同。通过上述技术方案,根据源端数据库中源表的结构变更产生的DDL语句,对目标端数据库中目标表的表结构进行变更。这样,不需要暂停或者中断数据复制过程,就能够自动进行表结构变更的复制,从而减少了人工参与,降低了项目实施维护的成本。本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。附图说明附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:图1是一示例性实施例提供的用于表结构变更后的信息复制方法的流程图;图2是另一示例性实施例提供的用于表结构变更后的信息复制方法的流程图;图3是又一示例性实施例提供的用于表结构变更后的信息复制方法的流程图;以及图4是一示例性实施例提供的用于表结构变更后的信息复制装置的框图。具体实施方式以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。图1是一示例性实施例提供的用于表结构变更后的信息复制方法的流程图。所述方法应用于源端数据库和目标端数据库之间的信息复制平台。如图1所示,所述方法可以包括以下步骤。在步骤S11中,当源端数据库中源表的结构发生变更时,提取与源表的结构变更对应的源端数据定义语言(DataDefinitionLanguage,DDL)语句。在步骤S12中,根据源端DDL语句,将目标端数据库中目标表的结构变更为与源表的结构相同。其中,信息复制可以包括表结构复制。当源端数据库中源表的结构发生变更时,信息复制平台能够将目标端数据库中目标表的结构变更为与源表的结构相同。也就是,将更新后的源表的结构复制到目标表的结构中。在源表结构发生变更时,可以自动生成DDL语句。DDL用于定义和管理结构化查询语言(StructuredQueryLanguage,SQL)数据库中的所有对象的语言。由于DDL语句可以用于描述表结构的定义或变更。因此,本公开利用源表的结构变更时生成的DDL语句(源端DDL语句),将变更后的表结构复制到目标表中。通过上述技术方案,根据源端数据库中源表的结构变更产生的DDL语句,对目标端数据库中目标表的表结构进行变更。这样,不需要暂停或者中断数据复制过程,就能够自动进行表结构变更的复制,从而减少了人工参与,降低了项目实施维护的成本。在本公开的一实施例中,可以根据日志分析技术来获取表结构的变更。具体地,通过相关技术,可以先提取源端数据库的日志,从日志中提取到源端数据库的变更信息,在从源端数据库的变更信息中识别出源表的结构的变更信息时,可以确定源表的结构已经发生了变更。通过日志分析技术(例如,增量数据提取技术),获取到表结构的变更的方法简单易行,便于操作。如前所述,在提取出源端DDL语句之后,就能够根据源端DDL语句进行结构变更的复制了。当源端数据库的类型与目标端数据库的类型相同时。源端DDL语句可以直接被目标表所用。具体地,在本公开的一实施例中,如果源端数据库的类型与目标端数据库的类型相同,则可以控制目标端数据库中的目标表执行源端DDL语句,以使目标表的结构变更为与源表的结构相同。该实施例中应用于源端数据库目标端数据库属同一类型的情况,简单易行。在本公开的另一实施例中,源端数据库的类型与目标端数据库的类型不同。例如,源端数据库为Oracle数据库,目标端数据库为MySQL数据库。在图1的基础上,根据源端DDL语句,将目标端数据库中目标表的结构变更为与源表的结构相同的步骤(步骤S12)包括以下步骤。在步骤S121中,判断源端数据库的类型与目标端数据库的类型是否相同。可以预先获取目标端数据库的类型,以判断是否与源端数据库类型相同。在步骤S122中,当源端数据库的类型与目标端数据库的类型不同时,根据源端DDL语句,生成与目标端数据库对应的目标端DDL语句。也就是,将源端DDL语句进行解析(例如提取出表名称、变更类型、以及变更信息),之后按照目标端数据库适配成效果相同的DDL语句。例如,在Oracle数据库中的源表中增加一个字段,生成源端DDL语句:altertableuser.tableaddcolumnvarchar2(32)解析该源端DDL语句可以识别出以下信息。表名称为user.table;变更类型为添加字段;变更信息包括:字段名称:column;字段类型:varchar2;字段长度:32。可以将源端DDL语句解析得到的信息,适配成MySQL数据库所适用的DDL语句(目标端DDL语句)。在步骤S123中,控制目标表执行目标端DDL语句,以使目标表的结构变更为与源表的结构相同。也就是,在目标数据库中执行目标端DDL语句,使得与源表对应的目标表其结构更改为与源端的结构相同。该实施例中,对于源端数据库与目标端数据库属不同类型的情况,也能够自动地进行表结构变更的复制,无需暂停或中断整个信息复制的过程,即实现了异构数据库间的表结构变更同步,提升了用户体验。在相关技术中,数据库中的数据字典是不断更新的,也就是,历史的数据字典并不保留。这样的话,如果用户在数据复制过程中,发现某个时刻数据有问题,需要回溯到该时刻重新进行复制。但是由于数据库中只保留最新的数据字典,因此,如果当前时刻到回溯的时刻期间,如果存在表结构的变更,则会造成历史数据结构与当前数据字典结构不一致,从而导致变更数据提取乱码等问题。针对上述问题,可以对历史数据字典进行存储,这样,用户想要从某一历史时刻重新开始复制信息时,每一次表结构变更都有对应的数据字典可用,从而避免了因缺乏结构变更信息而导致的信息重新变更的失败。图2是另一示例性实施例提供的用于表结构变更后的信息复制方法的流程图。如图2所示,在图1的基础上,所述方法还可以包括以下步骤。在步骤S13中,根据源端数据库的元数据信息生成初始数据字典。其中,元数据信息可以包括表结构、表映射信息等。生成初始数据字典可以在开始复制之前的准备阶段进行,因此该步骤S13可以在步骤S11之前。在步骤S14中,根据源端DDL语句和上一数据字典,生成与源端DDL语句对应的当前数据字典。具体地,可以提取源端DDL发生的时间戳,该时间戳之前的、最新的数据字典即为上一数据字典。该步骤S14可以与步骤S12同时执行。由于DDL语句包括了对表结构更改的描述,而更改之前的表结构与上一数据字典对应。因此,可以通过源端DDL语句和上一数据字典共同确定出表结构更改以后的数据字典(即当前数据字典)。这样,将历史数据字典保存,能够用于对历史的信息变更的重新复制,增强了系统的可追溯性。以上实施例描述了对于表结构的复制过程。在本公开的又一实施例中,信息复制还可以包括数据复制,即还能够对数据进行自动复制。图3是又一示例性实施例提供的用于表结构变更后的信息复制方法的流程图。如图3所示,在图2的基础上,所述方法还可以包括以下步骤。在步骤S15中,根据源端DDL语句,将源表到目标表之间的数据映射关系更新为与源端DDL语句对应的当前映射关系。该步骤可以与生成当前数据字典的步骤(步骤S14)同步执行。在步骤S16中,判断源表中的数据是否发生变更。可以通过相关技术提取源端数据库的日志,根据日志判断源表中的数据是否发生变更。在步骤S17中,当判定源表中的数据发生变更时,根据当前数据字典来解析所述数据变更。具体地,可以提取数据变更发生的时间戳,该时间戳之前的、最新的数据字典即为当前数据字典。由于源表每发生一次结构变更,都会生成最新的数据字典,作为当前数据字典,因此,当前数据字典描述了当前的表结构。当源表中的数据发生变更时,可以根据当前数据字典来解析数据变更。在步骤S18中,根据所解析的数据变更和当前映射关系,将目标表中的数据变更为与源表中的数据一致。由于源表每发生一次结构变更,都会更新映射关系为当前映射关系(步骤S16),因此,当前映射关系描述了当前的表结构下的映射关系。可以应用当前映射关系将解析的数据复制到目标表中。具体地,可以根据所解析的数据变更和当前映射关系,生成与目标数据库对应的数据操纵语言(DataManipulationLanguage,DML)语句,在目标数据库中执行该DML语句,以进行数据变更。该实施例中,能够实时地将源端数据库中的源表发生的结构和数据的变更复制到目标数据库中的目标表中,并且不需要暂停或者中断数据复制过程,从而保证了系统的实时运行,和两端数据的一致性。如前所述,本公开的一实施例中,将历史数据字典保存,能够用于对历史的信息变更的重新复制,增强了系统的可追溯性。因此,在又一实施例中,在图3的基础上,所述方法还可以包括以下步骤。在步骤S19中,接收用户发送的回溯命令,所述回溯命令指示从预定的历史时间点开始重新进行信息复制。在步骤S20中,响应于回溯命令,根据预定的历史时间点以及历史数据字典重新进行信息复制。保存了全部的历史数据字典,也就是保存了全部的表结构变更信息,因此,随时可以根据用户指示的历史时间点重新复制信息,提升了用户体验。本公开还提供一种用于表结构变更后的信息复制装置。图4是一示例性实施例提供的用于表结构变更后的信息复制装置的框图。如图4所示,所述用于表结构变更后的信息复制装置10可以包括DDL提取模块11和结构变更模块12。DDL提取模块11用于当源端数据库中源表的结构发生变更时,提取与所述源表的结构变更对应的源端数据定义语言DDL语句。结构变更模块12用于根据所述源端DDL语句,将目标端数据库中目标表的结构变更为与所述源表的结构相同。可选地,所述结构变更模块12可以包括判断子模块121、生成子模块122和控制子模块123。判断子模块121用于判断所述源端数据库的类型与所述目标端数据库的类型是否相同。生成子模块122用于当所述源端数据库的类型与所述目标端数据库的类型不同时,根据所述源端DDL语句,生成与目标端数据库对应的目标端DDL语句。控制子模块123用于控制所述目标表执行所述目标端DDL语句,以使所述目标表的结构变更为与所述源表的结构相同。可选地,所述装置10还可以包括初始字典生成模块13和当前字典生成模块14。初始字典生成模块13用于根据所述源端数据库的元数据信息生成初始数据字典。当前字典生成模块14用于根据所述源端DDL语句和上一数据字典生成与所述源端DDL语句对应的当前数据字典。可选地,所述装置10还可以包括更新模块15、数据判断模块16、解析模块17和数据变更模块18。更新模块15用于根据所述源端DDL语句,将所述源表到所述目标表之间的数据映射关系更新为与所述源端DDL语句对应的当前映射关系。数据判断模块16用于判断所述源表中的数据是否发生变更。解析模块17用于当判定所述源表中的数据发生变更时,根据所述当前数据字典来解析所述数据变更。数据变更模块18用于根据所解析的数据变更和所述当前映射关系,将所述目标表中的数据变更为与所述源表中的数据一致。可选地,所述装置10还可以包括接收模块19和复制模块20。接收模块19用于接收用户发送的回溯命令,所述回溯命令指示从预定的历史时间点开始重新进行信息复制。复制模块20用于响应于所述回溯命令,根据所述预定的历史时间点以及历史数据字典重新进行信息复制。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。通过上述技术方案,根据源端数据库中源表的结构变更产生的DDL语句,对目标端数据库中目标表的表结构进行变更。这样,不需要暂停或者中断数据复制过程,就能够自动进行表结构变更的复制,从而减少了人工参与,降低了项目实施维护的成本。以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1