网站首页  词典首页

请输入您要查询的论文:

 

标题 异构数据库更新同步研究与实现
范文

    肖刚

    

    

    

    摘要:数据库同步是实现不同系统之间数据共享的有效方法。现有异构数据库同步模型能有效解决记录的同步新增,但由于同步记录查询基于数据表名和关键字值,若不考虑同步数据库节点变化,将导致数据库不适用于某些遗留系统。针对该问题,提出同步控制和主从记录映射方法,在同步控制层记录主从记录映射关系。在采用双向中间件方法的同步技术基础上,设计基于标准数据格式的数据转换,降低数据转换模块开发维护成本,并根据模型应用WCF框架实现系统。实践应用表明,该模型可实现异构数库之间同步更新。

    关键词:异构数据库;数据库同步;主从记录映射;标准数据格式

    DOI:10.11907/ejdk.182416开放科学(资源服务)标识码(OSID):

    中图分类号:TP392文献标识码:A 文章编号:1672-7800(2019)010-0182-04

    0引言

    信息化建设具有阶段性和分布性的特点,由于缺乏统一的总体建设规划及技术水平有限等原因,企业内部各应用系统相互独立、结构各异,采用不同的数据库环境,缺乏统一的数据模型,系统之间数据共享困难。异构数据库同步是实现应用系统数据共享的一种常见方法,尤其是对于遗留或无法获取源码的系统,在明确数据存储结构的基础上,即可在不修改原有系统代码和数据库结构的情况下实现数据共享。

    为解决异构数据库同步问题,目前主要方法有以下3种:

    (1)使用数据库厂商提供的同步功能。该方法简单易用、可靠性高,但不同数据库系统之间的同步无法完全实现。

    (2)基于数据复制合并技术的同步方案。通过在主从数据库之间的双向数据交换,定期将修改的数据进行合并,该方法能有效实现主从数据的双向交换,但需要修改主数据库的表结构,增加数据表记录的操作时间戳数据字段,以解决数据冲突。

    (3)基于日志技术的同步方案,把对数据更新操作的更新信息保存下来,然后传输、转换、重放实现数据同步,但该方案数据安全存在问题。

    这些模型能有效实现新增操作记录同步,对于记录更新操作(修改、删除)、同步记录的查询是通过匹配在同步节点数据表记录的主关键字ID,并且根据当前同步配置确定同步发送的节点信息实现的,但该方法不适用于主关键字段复杂、节点发送动态变化的情况。

    本文设计同步控制和主从记录映射机制,通过保存主记录的同步发送节点信息和主从记录同步映射关系,解决同步更新中的问题。数据同步技术采用双向中间件方法,在每两个异构数据库间建立一个中间件,该方法传输效率高,但开发成本高、难于维护、扩展性差。通过设计标准数据格式,异构数据库基于标准数據格式进行数据转换,可降低开发维护成本、提高扩展性。

    1异构数据库同步

    异构数据库指相关多个数据库系统的集合,异构性包括操作系统异构、数据库管理系统异构、数据库表结构异构。

    数据库同步指不同数据库之间进行数据交换,使一个数据库中数据记录改变以同样方式出现在另一个数据库中。按信息同步方向可分为单向和双向同步。单向同步也叫主从同步,其中一个数据库是主数据库,另一个数据库是从数据库,只有主数据库的改变可以被复制到从数据库;双向同步指数据库没有主从之分,任何一个数据库的变化均会复制到另一个数据库中。按传输模式可分为同步和异步传输模式,同步数据同步(实时数据同步)指实时更新数据的同步模式,异步数据同步(批量数据同步)是一种延迟数据更新的模式,数据库间会临时出现数据不一致,但最终会保持数据一致。

    2同步模型

    本文讨论的异构数据库同步限定为单向同步传输数据同步,同步数据单元限定为单个数据表记录,主数据库与从数据库是一对多的关系,即一个主数据库可将一个数据记录同步到多个从数据库。约定数据库节点指网络节点中的数据库存储,包括节点IP地址和数据库名,主、从记录分别指同步数据在主、从数据库中对应的数据表记录。

    2.1现有模型同步更新存在的问题

    主数据库记录发生更新操作时,同步更新操作需要确定:①哪些同步数据库节点要进行更新?②同步数据库节点中哪个记录要进行更新?现有同步模型在这两个问题的处理上存在问题。

    2.1.1同步数据库节点动态变化

    现有模型没有考虑同步数据库节点变化,同步数据库节点相对固定,但仍有可能发生变化,如果在数据更新前同步数据库节点发生变化,则同步更新失败。具体原因为:①增加了同步数据库节点,由于新增数据库节点没有对应记录,更新操作将导致数据库操作异常;②删除同步数据库节点,数据更新操作将不能同步到被删除的数据库节点中,节点中对应记录将保持不变。

    2.1.2主从记录映射

    现有同步模型中,主从记录的映射关系通过主关键字ID的一致性进行判断,其前提条件是主从数据表的主关键字是单属性,数据特性相同,并且在同步新增记录时,设置从记录的主关键字ID等于主记录的主关键字ID,该方法不适合下列情况:①主关键字是自增加字段,字段值由数据库自动生成;②主关键字包含多个字段,单个字段不能唯一标识记录;③主关键字有自定义的构造方法,主从数据库构造方法不同。

    2.2基于标准数据格式的数据转换

    由于不同数据库节点的数据存储模型不同,在数据命名、数据类型、数据结构方面存在差异,数据同步需要对不同数据模型进行转换。在双向中间件方法的两个异构数据库之间直接进行数据转换,数据同步实时更新,数据转换效率高,但n个异构数据库节点的双向同步需要n*(n-1)个数据转换模块,增加、修改一个数据表存储模型不仅涉及本地数据转换模块,还涉及所有同步节点的数据转换模块,导致数据库开发维护成本高、扩展性差。

    基于标准数据格式转换的数据流如图1所示。数据发送前,主节点将主记录转换为标准数据格式,从节点在更新数据前,将接收的标准数据转换为从记录的数据格式。这样n个数据节点的双向同步只需要2*n个转换模块,增加、修改一个数据库存储模型,只需开发维护新数据模型与标准数据模型的数据转换处理模块,其它同步节点的数据转换模块保持不变。标准数据格式要包含同步数据表分组中所有数据表字段,并考虑一定的扩展性,以保证数据转换不会造成数据丢失,各同步数据表分组的标准数据格式互不相同。

    2.3模型描述

    同步模型分为3层:同步控制层、转换层、传输层。

    (1)同步控制层。管理数据同步任务启动和数据同步更新,主节点启动数据同步任务,保存记录同步发送信息;从节点更新本地数据库,保存主从记录映射信息。

    (2)数据转换层。主节点将主记录转换为标准数据格式,从节点将标准格式数据转换为从记录的本地格式。

    (3)传输层。将传输数据由主节点通过网络发送到所有同步从节点。

    主、从同步节点各层功能逻辑对应,互相协作完成主从数据库同步。将主从同步节点互换,并增加相应的处理模块,即可实现两个异构数据库的双向同步。

    2.4同步基本流程

    假设主数据库同步数据表是tm,从数据库同步数据表是ts,如果对数据表tm进行操作(对数据表变化捕获参考相关文献),则数据同步基本流程如下所示。

    2.4.1主节点基本流程

    (1)主节点获取表tm操作的相关信息(包括记录关键字ID、操作类型)如果是新增记录,则读取tm的同步数据库节点配置信息,每个同步数据节点构造一条同步发送数据并保存到同步发送表中。

    (2)如果是新增或修改操作,查询表tm,获取记录的实体数据并转换为对应的标准数据格式。

    (3)将实体标准数据(如果是删除操作,标准数据为null)、同步控制数据,包括主节点IP、数据库名、数据表名、记录关键字ID、操作类型,组合成传输数据,查询同步发送表获取记录的同步节点信息,依次调用相应数据传输服务代理方法,将传输数据发送到从节点。

    2.4.2从节点基本流程

    (1)接收主节点发送的传输数据。

    (2)解析同步传输数据,如果操作类型是新增或修改,将标准数据转换为对应的从记录数据格式。

    (3)如果是新增记录,增加记录到表ts,获取新增同步记录的主关键字ID,并将主从记录映射关系保存到主从记录映射表中;如果是更新记录,查询主从记录映射表,获取同步记录在ts的对应记录,对该记录执行相同更新操作。

    3设计与实现

    设计与实现主要包括3个关键方面:①同步发送表设计;②主从记录映射表设计;③数据传输服务。

    3.1同步发送数据表

    同步发送数据表保存特定表记录的同步数据库节点信息,为同步更新操作提供同步信息,数据表结构定义如表1所示。其中,SlaveNode记录同步从节点IP地址,SlaveDbName记录同步从数据库表名,这样同一记录可同步到多个节点的多个数据库中。MasterKeyId是主记录关键字ID,如果主数据表主关键字是单属性,MasterKeyId直接保存主记录关键字ID,如果主数据表主关键字是多属性,则MasterKeyld是多属性组合,组合规则由系统自行确定,只要保证MasterKeyld的唯一性,如主数据表关键字属性包括“keyl”和“key2”,自定义组合规则是在关键字之间加上“#”作为分隔符,则Masterkeyld为"keyl#key2”。

    3.2主从记录映射数据表

    主从记录映射数据表保存同步记录在主数据库节点与从数据库节点间的对应关系,为同步更新操作提供主记录在同步从数据库节点中的对应记录,数据表结构见表2。其中,MasterNode字段记录主节点IP地址,MasterDb-Name记录主数据库名,则从数据库节点可以从多个节点、节点的多个数据库中同步更新数据。SlaveKeyId字段记录同步记录在从数据表中对应记录的关键字值,如果从数据表主关键字是多属性,处理方式与同步发送数据表相同,只需保证可从SlaveKeyId值还原出原始的多个关键字值。

    3.3数据传输服务

    数据传输可以采用不同的实现技术,如JMS、SOA、web中间件等,本文采用WCF实现数据传输服务。WCF(Windows Communication Foundation)是由微软开发的一系列支持数据通信的应用程序框架,WCF以契约(Contraet)定义双方沟通的协议。

    3.3.1数据契约

    数据契约(Data Contract)定义双方信息交换的格式和内容,数据传输服务的数据契约包含记录实体和同步控制数据契约。记录实体數据契约定义记录实体数据格式,契约成员变量与实体标准数据格式的成员变量——对应,不同实体数据契约的定义和命名不同。同步控制数据契约定义同步任务控制信息,所有同步任务的同步控制数据契约定义与命名相同,同步控制数据契约定义如下:

    3.3.2服务契约

    服务契约(Service Contract)定义服务向外公开的功能,服务由从节点实现,主节点调用服务代理(WCF ServiceProxy)执行。数据传输服务契约功能是将数据从主节点传输到从节点,主节点根据同步节点IP和同步数据库名构造相应服务终结点数据。系统要为每个从同步数据库节点定义一个服务契约接口,为数据库每个同步数据表定义一个数据传输方法。

    4结语

    本文提出的异构数据库同步更新方案,通过记录同步发送和主从记录映射数据,解决了现有同步模型中数据无法同步更新的问题,并用实例证明该同步更新方案可行。在数据存储中,一个实体数据可能分散在不同的数据表中,每次单独同步一个数据表会破坏实体数据的一致性,该方案可实现异构数据库单表间同步,但还不适用于多表同步。因此下一步研究对象为多对多、一对多、多对一数据表同步。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/6 4:10:06