CN104573100A - 一种带自增量标识的分步式数据库同步方法 - Google Patents
一种带自增量标识的分步式数据库同步方法 Download PDFInfo
- Publication number
- CN104573100A CN104573100A CN201510048091.0A CN201510048091A CN104573100A CN 104573100 A CN104573100 A CN 104573100A CN 201510048091 A CN201510048091 A CN 201510048091A CN 104573100 A CN104573100 A CN 104573100A
- Authority
- CN
- China
- Prior art keywords
- business datum
- database
- independent increment
- data
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种带自增量标识的分步式数据库同步方法包括:第步骤,用于对将要导出第数据库的业务数据表进行分析以获取表结构和关联关系,其中第数据库是中心数据库和站点数据库中的个;第二步骤,用于根据第步骤获取的表结构和关联关系,获取业务相关数据集合;第三步骤,用于对将要导入第二数据库的业务数据表进行分析以获取表结构和关联关系,其中第二数据库是中心数据库和站点数据库中的另个;第四步骤,用于分析第步骤获取到的业务数据表结构和关联关系,以及分析第三步骤获取到的业务数据表结构和关联关系,并结合第二步骤获取到的业务相关数据集,确定业务数据的导入顺序,并根据业务数据的导入顺序控制业务数据的依次导入。
Description
技术领域
本发明涉及一种带自增量标识的分步式数据库同步方法。
背景技术
随着信息系统的日趋规模化、区域化,分布式数据库在信息系统中所承担的数据桥梁作用越来越重要,分布式数据库的设计在系统中的应用日渐广泛。然而,由于系统的自身特点以及对系统的不同要求,在设计分布式数据库系统的过程中,仍有许多需要研究和解决的问题。其中最重要的问题之一就是如何保证分布式数据库的数据同步,以确保整个系统数据的一致性和安全性。
在分布式数据库系统中,广泛使用了数据复制技术进行数据复制和传输,从而达到数据同步的目的。几乎所有的大型数据库系统都提供了自己的数据复制解决方案和数据复制组件,如基于发布/订阅模型的数据复制技术。按数据复制的内容方法分类,可以分为表复制、事务复制等等。进行复制的基本条件都需要有一定的网络资源,要求有可靠的网络传输。如果是表复制等需要复制较多数据时,还要求有较高的传输速度。
除通过数据复制进行数据同步外,还有基于Oracle行级安全策略的数据同步更新机制、基于Oracle只读实体化视图的数据异步更新机制、基于Oracle可更新实体化视图的数据同步更新机制、基于代理的数据库远程数据同步解决方案。
上述方案中,分布式数据库的同步更新对网络和数据库的安全性要求较高,高度依赖于系统和网络的可用性。如果网络和系统出现故障,则任何更新都不能执行且不能进行异构数据库的数据同步。而基于Oracle只读实体化视图等异步更新方法又会存在一系列数据冲突问题。相比较于集中式数据库系统,很多常见的解决数据冲突的技术,难以在分布式数据库系统中应用。
自增量标识一致性问题:在集中式数据库系统中经常会利用自增量标识来构建表的主键,这样应用程序不用考虑标识的唯一性维护问题,数据库会根据规则自动维护各个表的标识号。但在分布式数据库系统中就无法利用该方法来构建唯一标识了,各站点数据库按各自的自增规则产生的标识肯定会重复。
表的唯一性约束问题:在集中式数据库系统中经常会基于一个或多个字段构建表的唯一性约束条件,这样可以简化应用程序的唯一性判别流程,数据库会根据规则在插入数据前自动判别数据是否满足唯一性约束条件。同样的,在分布式数据库系统中也无法利用该方法来进行唯一性判别,虽然数据在站点数据库中是可以保证唯一性的,但在中心数据库中合并时就有可能引发冲突。
多源数据更新问题:在集中式数据库系统中,数据信息实时更新,均为用户提交的最新信息。在分布式数据库离线同步过程中,如果遇到多个站点对同一个数据源进行更新,采用哪个站点数据更新中心数据库,则需要制定相应的规则。
当然为解决自增量标识一致性问题,可以弃用数据库自增量标识,在中心数据库中定义一个专门用于维护所有表的自增量标识的表,由该表用来存放所有需要唯一标识的表名称和当前所使用的ID值。然后写一个存储过程,专门用来从该表中取ID值。但此方法也存在相应的缺陷:①效率低,每次取ID值都需要调用存储过程从数据库中检索一次。②并发访问存在风险,多条数据同时存储时无法保证标识唯一。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种带自增量标识的分步式数据库同步技术,解决在分步式数据库异步更新过程中遇到的自增量标识一致性问题、表的唯一性约束问题和多源数据更新问题。
根据本发明,提供了一种带自增量标识的分步式数据库同步方法,其中分布式数据库系统由中心数据库和多个站点数据库组成,包括:
第一步骤,用于对将要导出第一数据库的业务数据的业务数据表进行分析以获取表结构和关联关系;
第二步骤,用于根据第一步骤获取的表结构和关联关系,获取业务相关数据集合,将需要分发或上传的业务数据以预定数据存储格式分离或标识出来;
第三步骤,用于对将要导入第二数据库的业务数据的业务数据表进行分析以获取表结构和关联关系;
第四步骤,用于分析第一步骤获取到的业务数据表结构和关联关系,以及分析第三步骤获取到的业务数据表结构和关联关系,并结合第二步骤获取到的业务相关数据集,确定业务数据的导入顺序,并根据业务数据的导入顺序控制业务数据的依次导入。
优选地,第二步骤获取的业务相关数据集合包括与业务数据相关的总表与分表的自增量标识的对应关系。
优选地,所述的带自增量标识的分步式数据库同步方法还包括:第五步骤,用于在第一数据库和第二数据库的业务数据表结构异构的情况下,根据将业务数据按预定格式要求进行转换。
优选地,第一数据库是中心数据库和站点数据库中的一个。
优选地,第二数据库是中心数据库和站点数据库中的另一个。
优选地,所述的带自增量标识的分步式数据库同步方法还包括:
第六步骤,用于分析总表和分表的自增量标识的对应关系,判断业务数据入库操作是新增操作还是更新操作,并且在业务数据的自增量标识已建立且在第二数据库中已存在的情况下进行更新操作,否则进行新增操作,而且对于按新增操作入库的业务数据,获取其新的自增量标识。
第七步骤,用于针对第六步骤标记出的以新增操作方式入库的业务数据的新的自增量标识,建立总表和分表自增量标识的对应关系。
第八步骤,用于根据第七步骤建立的总表和分表自增量标识对应关系,分析和更新待入库业务数据的自增量标识的引用。
第九步骤,用于将第七步骤建立的总表与分表自增量标识对应关系,更新到站点数据库的标识变更表中。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了根据本发明优选实施例采用的带自增量标识的分布式数据库的示意图。
图2示意性地示出了根据本发明优选实施例的带自增量标识的分步式数据库同步方法的流程图。
图3示意性地示出了根据本发明优选实施例的业务数据分发流程图。
图4示意性地示出了根据本发明优选实施例的业务数据上传流程图。
图5示意性地示出了根据本发明优选实施例的业务数据分发单表数据导入流程图。
图6示意性地示出了根据本发明优选实施例的业务数据上传单表数据导入流程图。
图7示意性地示出了根据本发明优选实施例的业务数据从表自增量标识更新流程图。
图8示意性地示出了根据本发明优选实施例的总表业务数据自增量标识的分发流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
在基于分布式数据库系统构建的信息系统中,从中心数据库业务数据总表到各站点数据库业务数据分表,以及业务数据的分发和上传过程,如何标识和识别业务数据对象是核心环节。带自增量标识的分布式数据库系统是将自增量标识作为标识业务数据对象的基础,在业务数据分发和上传过程中识别总表与分表间业务数据对象的对应关系,以达到全系统内业务数据对象的一致性。
如图1所示,带自增量标识的分布式数据库系统由中心数据库和若干个站点数据库组成,仅在站点数据库系统中增加了标识变更表。用户可以通过中心客户端应用或站点客户端应用进行业务相关操作。中心客户端应用直接操作中心数据库的业务数据总表,完成业务相关数据的新增、修改和删除。站点客户端应用直接操作站点数据库的业务数据分表,完成业务相关数据的本地新增、修改和删除。同时,站点客户端应用通过业务数据分发中间件从中心数据库系统中下载指定业务数据至站点数据库,以及通过业务数据上传中间件将站点数据库的本地业务数据增量更新至中心数据库。在业务数据分发和业务数据上传过程中,将业务数据对象在总表与分表中自增量标识的对应关系记录在标识变更表中。
图2示意性地示出了根据本发明优选实施例的带自增量标识的分步式数据库同步方法的流程图。如图2所示,根据本发明优选实施例的带自增量标识的分步式数据库同步方法可以分为数据导出处理和数据导入处理两个过程。其中,在数据分发处理中,从中心数据库导出业务数据,在站点数据库导入业务数据;而且,在数据上传处理中,从站点数据库导出业务数据,在中心数据库导入业务数据。数据导出处理和数据导入处理均可采用图2所示的流程进行。
如图2所述,根据本发明优选实施例的带自增量标识的分步式数据库同步方法包括:
第一步骤S1:业务数据表结构和关联关系分析
在通常情况下,数据库中的业务数据都不是以单表的方式存在的,各表的实体对象间存在关联关系,作为某个表主键的自增量标识字段,可能以外键的形式被其他表所引用。当业务数据对象在中心数据库和站点数据库间迁移时,主表自增量标识字段的变更势必需要连带更新有关联关系的从表字段。并且,数据的导入导出也需要根据关联关系,依次导入导出主表数据和从表数据。
业务数据分发与上传流程的第一步骤S1,就是对将要导出第一数据库(中心数据库和站点数据库中的一个)的业务数据的业务数据表进行表结构和关联关系分析。
第二步骤S2:获取业务相关数据集
在业务数据分发和业务数据上传过程中,所操作的业务对象是一个相对较小的数据集合,可能涉及单个数据表,也可能涉及多个数据表,可能涉及表中的全部数据,也可能只涉及表中的部分数据。
业务数据分发与上传流程的第二步骤S2,就是在第一步骤S1的基础上,根据表结构和关联关系,获取业务相关数据集合,将需要分发或上传的业务数据以一定的数据存储格式分离或标识出来。如果业务数据上传过程,所获取的业务相关数据集合还应当包括与业务数据相关的总表与分表的自增量标识的对应关系。
第三步骤S3:业务数据表结构和关联关系分析
该步骤与第一步骤S1相同。区别在于,第一步骤S1是针对数据导出数据库进行业务数据表结构和关联关系分析,第三步骤S3是针对数据导入数据库(第二数据库)进行业务数据表结构和关联关系分析。即,第三步骤S3用于对将要导入第二数据库(中心数据库和站点数据库中的另一个)的业务数据的业务数据表进行分析以获取表结构和关联关系。
第四步骤S4:业务数据导入控制
业务数据的导入需要根据业务数据表的主从关系,按先后顺序依次进行导入的,这是一个循环往复的过程。
业务数据分发与上传流程的第四步骤S4,就是分析第一步骤S1获取到的业务数据表结构和关联关系,以及分析第三步骤S3获取到的业务数据表结构和关联关系,并结合第二步骤S2获取到的业务相关数据集,确定业务数据的导入顺序,以及根据业务数据的导入顺序控制业务数据的依次导入。
第五步骤S5:业务数据格式转换
该第五步骤S5为可选择步骤。如果中心数据库和站点数据库的业务数据表结构是同构的,则可以跳过该步骤。如果中心数据库和站点数据库的业务数据表结构是异构的,则需要根据额外配置的中心数据库和站点数据库业务数据转换表,先将业务数据按一定的格式要求进行转换,如进行表空间的转换、字段名称的转换、数据类型的转换等。
业务数据分发与上传流程的第五步骤S5,就是根据中心数据库和站点数据库业务数据转换表,将第四步骤S4确定的业务数据进行格式转换,使其符合导入数据库(第二数据库)的表结构和数据类型。
第六步骤S6:业务数据入库,并获取更新的自增量标识
该步骤是本项技术的核心之一,解决了带自增量标识的分布式数据库业务数据的自增量标识一致性问题。该步骤,首先分析总表和分表的自增量标识对应关系,判断业务数据入库操作是新增操作还是更新操作。根据总表和分表的自增量标识对应关系,如果业务数据的自增量标识已建立且在导入数据库(第二数据库)中已存在,则进行更新操作,否则进行新增操作。对于按新增操作入库的业务数据,获取其新的自增量标识。
业务数据分发与上传流程的第六步骤S6,就是将第五步骤S5的格式化后的业务数据进行入库,同时标记出以新增操作方式入库的业务数据的新的自增量标识,以及标识出已完成更新操作的所有业务数据。
第七步骤S7:建立总表与分表自增量标识对应关系
在业务数据入库操作后,需针对入库的业务数据自增量标识的更新情况,建立入库后的业务数据的总表自增量标识和分表自增量标识的对应关系。
业务数据分发与上传流程的第七步骤S7,就是针对第六步骤S6标记出的以新增操作方式入库的业务数据的新的自增量标识,建立总表和分表自增量标识的对应关系。
第八步骤S8:业务数据关联分析及更新
在第六步中,业务数据入库可能存在其自增量标识发生变化,即总表中的自增量标识和分表中的自增量标识不一致。因此,在数据导入时应当根据自增量标识的变更情况,对相关联业务数据所引用的自增量标识进行相应的更新。
业务数据分发与上传流程的第八步骤S8,就是根据第七步骤S7建立的总表和分表自增量标识对应关系,分析和更新待入库业务数据的自增量标识的引用。
第九步骤S9:更新站点数据库的标识变更表
完成一组业务数据的入库操作后,会产生新的自增量标识对应关系,需要将业务数据自增量标识的更新情况,保存到站点数据库的标识变更表中,以便再次进行业务数据分发与上传时,判断业务数据入库操作是新增操作还是更新操作。
业务数据分发与上传流程的第九步骤S9,就是将第七步骤S7建立的总表与分表自增量标识对应关系,更新到站点数据库的标识变更表中。
【具体实例1】
以一个进行项目管理的分布式数据库为例,业务数据以项目数据表为中心,各业务数据表均与项目数据表存在直接或多表级联的关联关系,中心数据库和站点数据库的各业务数据表结构相同,其中心数据库向站点数据库进行某项目所有业务数据的分发流程如图3所示,具体步骤如下。
1)获取中心数据库的基本结构信息。数据库基本结构信息包括数据库类型、表结构、表的列信息、表的主键和外键等信息。
2)根据中心数据库的基本结构信息,建立业务数据表关联关系。数据表的关联关系中很重要的内容为确定业务数据表的主从关系和导出操作顺序。
3)根据业务数据表关联关系,从项目数据表开始根据导出操作顺序遍历数据库所有业务数据表中与某项目相关的所有业务数据,并以Xml文档的格式依次备份有关业务数据信息。
4)将备份好的Xml描述的业务数据信息文件以离线或在线的方式传输到站点。
5)获取站点数据库的基本结构信息和自定义结构信息。数据库基本结构信息包括数据库类型、表结构、表的列信息、表的主键和外键等信息。数据库自定义结构信息一般是数据库系统无法显性标识的信息,如:表内部的自增量标识引用、引用了多个表的自增量标识、多表间循环引用自增量标识。
6)根据站点数据库的基本结构信息和自定义结构信息,建立业务数据表关联关系。数据表的关联关系中很重要的内容为确定业务数据表的主从关系和导入操作顺序,其中数据库自定义结构信息也将影响到业务数据表的主从关系和导入操作顺序。
7)根据业务数据表关联关系,从项目数据表开始根据导入操作顺序遍历待导入的Xml描述的业务数据信息中所有业务数据表,并依次完成相应业务数据表的单表数据导入和从表自增标识更新。
8)分布式同构数据库的分发过程中业务数据表的单表数据导入过程如图5所示。按自增列数据的从大到小顺序或约定的排序规则(可在配置文件中设置Xml的排序规则),获取待导入的Xml描述的业务数据信息中的所有数据记录队列,对数据记录队列进行遍历并依次进行业务数据的导入操作。业务数据导入时,首先查询标识变更表中是否存在与记录的自增量标识相同的中心数据库的自增量标识(CenterID)值。若CenterID值存在,则获取标识变更表中记录对应的站点数据库的自增量标识(PartID)值,并在数据库中更新PartID对应的业务数据记录。若CenterID值不存在,则在数据库中新增业务数据记录,并针对新增业务数据记录建立总表与分表自增标识对应关系。业务数据完成导入后,在Xml描述的业务数据信息中标识业务数据已导入。在业务数据表的所有记录均完成导入后,在Xml描述的业务数据信息中标识业务数据表已导入。
9)业务数据表的从表自增量标识更新过程如图7所示。按业务数据表关联关系获取业务数据表的从表信息队列,对从表信息队列进行遍历并依次进行从表自增量标识的更新操作。从表自增量标识更新时,首先在Xml描述的业务数据信息中查询业务数据表是否已导入。若已导入(内部嵌套:主表名与从表名相同;外部嵌套:主表与从表存在隐性的循环引用),则根据新建立的总表与分表自增量标识对应关系,在数据库中更新从表的自增量标识引用。若未导入,则根据新建立的总表与分表自增量标识对应关系,更新Xml描述的业务数据信息中从表的自增量标识引用。
10)Xml描述的业务数据信息中所有业务数据表遍历完成后,将业务数据表单表数据导入过程中新建立的总表与分表自增量标识关系,更新至站点数据库的标识变更表。
11)针对中心数据库业务数据删除操作可能造成的站点数据库业务数据无效情况,通过如图8所示的总表自增量标识分发过程(分发方式为普通方式),将中心数据库所有的自增量标识分发至各站点数据库,并在站点数据库中删除不在总表自增量标识信息中的业务数据记录。
【具体实例2】
以一个进行项目管理的分布式数据库为例,业务数据以项目数据表为中心,各业务数据表均与项目数据表存在直接或多表级联的关联关系,中心数据库和站点数据库的各业务数据表结构不同,其中心数据库向站点数据库进行某项目所有业务数据的上传流程如图4所示,具体步骤如下。
1)获取站点数据库的基本结构信息。数据库基本结构信息包括数据库类型、表结构、表的列信息、表的主键和外键等信息。
2)根据站点数据库的基本结构信息,建立业务数据表关联关系。数据表的关联关系中很重要的内容为确定业务数据表的主从关系和导出操作顺序。
3)根据业务数据表关联关系,从项目数据表开始根据导出操作顺序遍历数据库所有业务数据表中与某项目相关的所有业务数据,以及标识变更表中相关的业务数据的总表与分表自增量标识对应关系,并以Xml文档的格式依次备份有关业务数据信息。其中,总表与分表自增量标识对应关系作为Xml节点属性信息,添加至各业务数据记录对应的Xml节点描述中。其中,若标识变更表中的站点数据库的自增量标识(PartID)值在数据库已无对应的业务数据时(站点已删除的业务数据),则在相应的业务数据表中新建空数据的Xml节点,并添加总表与分表自增量标识对应关系作为Xml节点属性信息,以及添加值为True的Delete属性信息。
4)将备份好的Xml描述的业务数据信息文件以离线或在线的方式传输到中心。
5)获取中心数据库的基本结构信息和自定义结构信息。数据库基本结构信息包括数据库类型、表结构、表的列信息、表的主键和外键等信息。数据库自定义结构信息一般是数据库系统无法显性标识的信息,如:表内部的自增量标识引用、引用了多个表的自增量标识、多表间循环引用自增量标识。
6)根据中心数据库的基本结构信息和自定义结构信息,建立业务数据表关联关系。数据表的关联关系中很重要的内容为确定业务数据表的主从关系和导入操作顺序,其中数据库自定义结构信息也将影响到业务数据表的主从关系和导入操作顺序。
7)根据业务数据表关联关系,从项目数据表开始根据导入操作顺序遍历待导入的Xml描述的业务数据信息中所有业务数据表,并依次完成相应业务数据表的单表数据导入和从表自增标识更新。
8)分布式异构数据库的上传过程中业务数据表的单表数据导入过程如图6所示。按约定的变换规则将待导入的Xml描述的业务数据信息进行格式转换(可在配置文件中设置Xslt变换规则,不设置则视为分布式同构数据库),按自增列数据的从大到小顺序或约定的排序规则(可在配置文件中设置Xml的排序规则),获取格式转换后的业务数据信息中的所有数据记录队列,对数据记录队列进行遍历并依次进行业务数据的导入操作。业务数据导入时,首先判断记录的CenterID属性值是否为空。若记录的CenterID属性值为空,则在数据库中新增业务数据记录(站点新建的业务数据),并针对新增业务数据记录建立总表与分表自增标识对应关系。若记录的CenterID属性值不为空,则再查询数据库中是否存在与记录的CenterID属性值相同的自增量标识记录。若不存在相同的自增量标识记录(中心已删除的业务数据),则建立已删除的总表自增量标识表。若存在相同的自增量标识记录,则再判断记录的Delete属性是否存在且为真。若记录的Delete属性存在且为真(站点已删除的业务数据),则在数据库中删除CenterID对应的业务数据记录,并建立已删除的总表自增量标识表。若记录的Delete属性不存在或不为真,则在数据库中更新CenterID对应的业务数据记录。业务数据完成导入后,在Xml描述的业务数据信息中标识业务数据已导入。在业务数据表的所有记录均完成导入后,在Xml描述的业务数据信息中标识业务数据表已导入。
9)业务数据表的从表自增量标识更新过程如图7所示。按业务数据表关联关系获取业务数据表的从表信息队列,对从表信息队列进行遍历并依次进行从表自增量标识的更新操作。从表自增量标识更新时,首先在Xml描述的业务数据信息中查询业务数据表是否已导入。若已导入(内部嵌套:主表名与从表名相同;外部嵌套:主表与从表存在隐性的循环引用),则根据新建立的总表与分表自增量标识对应关系,在数据库中更新从表的自增量标识引用。若未导入,则根据新建立的总表与分表自增量标识对应关系,更新Xml描述的业务数据信息中从表的自增量标识引用。
10)Xml描述的业务数据信息中所有业务数据表遍历完成后,将业务数据表单表数据导入过程中新建立的总表与分表自增量标识关系,更新至站点数据库的标识变更表。
11)若业务数据导入过程中产生了已删除的总表自增量标识信息,则通过如图8所示的总表自增量标识分发过程(分发方式为删除方式),将已删除的总表自增量标识分发至各站点数据库,并在站点数据库中删除相应记录。
可以看出,本发明是针对分布式数据库的异步更新过程,通过建立总表与分表自增量标识对应关系、业务数据格式转换等技术手段,解决更新过程中遇到的自增量标识不一致、表唯一性约束冲突、多源更新等问题。本发明具有如下特征:
1)总表与分表自增量标识对应关系管理
总表与分表自增量标识对应关系是本发明的核心部件,其关系到业务数据分发与上传的第六步业务数据入库时业务数据入库操作的判别。如果是业务数据上传过程,在业务数据集进行在线或离线传输前,需从站点数据库的标识变更表中获取业务数据相关的总表与分表自增量标识对应关系,并与业务数据集一并传输至中心数据库。如果是业务数据分发过程,则可以在数据导入过程中从站点数据库的标识变更表中直接获取业务数据相关的总表与分表自增量标识对应关系。总表与分表自增量标识对应关系建立于业务数据分发与上传的第七步,并于业务数据分发与上传的第九步保存至站点数据库的标识变更表中。
2)业务数据表结构和关联关系分析
将数据库中的业务数据表及其字段信息等提取出来,通过主外健关系对表进行关联关系分析。将每个表的从表信息标注出来,并按照先主表后从表的方式对所有表进行排序,该排序即业务数据表入库的顺序。如果多个表的从表为同一个表,则从表的排序在所有主表排序之后。此技术点作用有两个:一是通过表结构分析,为下一步的业务数据格式转换做准备,以解决数据库结构不一致的问题。二是当数据入库引起自增量标识变化时,通过关联关系分析,更新相关联的从表数据信息。
3)业务数据格式转换
当中心数据库和站点数据库的业务数据表结构不一致时,需要对业务数据进行格式转换。格式转换是指将表空间、字段名称、数据类型等转换成与导入数据库一致的格式。该技术点可以解决异构数据库间的同步问题,使得该方法能更广泛地适用于各种分布式数据库同步场景。
4)业务数据的唯一性约束冲突处理
在进行数据同步时,总表数据与分表数据可能会出现表的唯一性约束冲突。本发明基于表唯一性约束进行触发式更新,首先在业务数据上传的第六步业务数据入库过程中,监测数据库的唯一性约束冲突,根据唯一性约束冲突解决策略,对业务数据进行变更和标识,并给出业务数据的变更列表。然后根据变更列表针对唯一性约束值进行一次业务数据分发,保证中心数据库和站点数据库的数据一致性。遵循唯一性约束范围最大化原则,仅需在业务数据上传时,即业务数据入中心数据库时检测业务数据的唯一性冲突。
5)业务数据的多源更新冲突处理
针对分布式数据库存在的多点、异步更新特定,业务数据的更新可能会出现多源更新数据冲突,数据的导入导出可能造成不被期望的数据更新操作。本发明基于时间戳进行触发式更新,首先在业务数据分发与上传的第二步添加业务数据相关操作的时间戳信息。然后在业务数据上传的第六步业务数据入库过程中,比对业务数据的时间戳,根据多源更新冲突解决策略,对业务数据进行更新和标识,并给出业务数据的未更新列表。最后根据未更新列表的业务数据进行一次业务数据上传或分发,保证中心数据库和站点数据库的数据一致性。关于业务数据相关操作的时间戳信息,中心数据库可以单独建立一个业务数据操作时间戳表,站点数据库可以在标识变更表中添加时间戳字段。
总之,本发明的方法适用于同构或异构的的分步式数据库的数据更新,适用于非实时的、同步或异步的分步式数据库的数据更新。
本发明的方法通过业务数据表结构和关联关系分析,对不同结构数据库间的业务数据进行格式转换,通过基于总表与分表自增量标识对应关系、主表和从表的表结构关系,进行数据的导入导出和实现业务数据更新。由于,业务数据可根据数据库结构的不同进行相应的格式转换,因此本发明适用于异构分布式数据库的数据同步。同时,业务数据传输并不依赖于网络,因此本发明的方法也适用于非实时的离线数据同步。
本发明的方法很好地解决了分布式数据库数据更新过程中的数据冲突问题,广泛适用于各种大型的分步式数据库系统的数据更新。
此外,需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (7)
1.一种带自增量标识的分步式数据库同步方法,其中分布式数据库系统由中心数据库和多个站点数据库组成,其特征在于包括:
第一步骤,用于对将要导出第一数据库的业务数据的业务数据表进行分析以获取表结构和关联关系,其中第一数据库是中心数据库和站点数据库中的一个;
第二步骤,用于根据第一步骤获取的表结构和关联关系,获取业务相关数据集合;
第三步骤,用于对将要导入第二数据库的业务数据的业务数据表进行分析以获取表结构和关联关系,其中第二数据库是中心数据库和站点数据库中的另一个;
第四步骤,用于分析第一步骤获取到的业务数据表结构和关联关系,以及分析第三步骤获取到的业务数据表结构和关联关系,并结合第二步骤获取到的业务相关数据集,确定业务数据的导入顺序,并根据业务数据的导入顺序控制业务数据的依次导入。
2.根据权利要求1所述的带自增量标识的分步式数据库同步方法,其特征在于,第二步骤获取的业务相关数据集合包括与业务数据相关的总表与分表的自增量标识的对应关系。
3.根据权利要求1或2所述的带自增量标识的分步式数据库同步方法,其特征在于还包括:
第五步骤,用于在第一数据库和第二数据库的业务数据表结构异构的情况下,根据将业务数据按预定格式要求进行转换。
4.根据权利要求1或2所述的带自增量标识的分步式数据库同步方法,其特征在于还包括:
第六步骤,用于分析总表和分表的自增量标识的对应关系,判断业务数据入库操作是新增操作还是更新操作,并且在业务数据的自增量标识已建立且在第二数据库中已存在的情况下进行更新操作,否则进行新增操作,而且对于按新增操作入库的业务数据,获取其新的自增量标识。
5.根据权利要求1或2所述的带自增量标识的分步式数据库同步方法,其特征在于还包括:
第七步骤,用于针对第六步骤标记出的以新增操作方式入库的业务数据的新的自增量标识,建立总表和分表自增量标识的对应关系。
6.根据权利要求1或2所述的带自增量标识的分步式数据库同步方法,其特征在于还包括:
第八步骤,用于根据第七步骤建立的总表和分表自增量标识对应关系,分析和更新待入库业务数据的自增量标识的引用。
7.根据权利要求1或2所述的带自增量标识的分步式数据库同步方法,其特征在于还包括:
第九步骤,用于将第七步骤建立的总表与分表自增量标识对应关系,更新到站点数据库的标识变更表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510048091.0A CN104573100B (zh) | 2015-01-29 | 2015-01-29 | 一种带自增量标识的分布式数据库同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510048091.0A CN104573100B (zh) | 2015-01-29 | 2015-01-29 | 一种带自增量标识的分布式数据库同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104573100A true CN104573100A (zh) | 2015-04-29 |
CN104573100B CN104573100B (zh) | 2017-11-14 |
Family
ID=53089162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510048091.0A Active CN104573100B (zh) | 2015-01-29 | 2015-01-29 | 一种带自增量标识的分布式数据库同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104573100B (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893616A (zh) * | 2016-04-27 | 2016-08-24 | 郑州悉知信息科技股份有限公司 | 一种标识信息配置方法及装置 |
CN106777265A (zh) * | 2016-12-28 | 2017-05-31 | 新奥科技发展有限公司 | 一种业务数据的处理方法及装置 |
CN106897345A (zh) * | 2016-07-22 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种数据存储的方法及装置 |
CN106933823A (zh) * | 2015-12-29 | 2017-07-07 | 北京国双科技有限公司 | 数据同步方法及装置 |
CN106990974A (zh) * | 2016-01-21 | 2017-07-28 | 阿里巴巴集团控股有限公司 | 一种app应用更新方法、装置及电子设备 |
WO2017181430A1 (zh) * | 2016-04-22 | 2017-10-26 | 华为技术有限公司 | 分布式系统的数据库复制方法及装置 |
CN107515874A (zh) * | 2016-06-16 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种分布式非关系型数据库中同步增量数据的方法与设备 |
CN108664505A (zh) * | 2017-03-30 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 一种数据库表结构的导出方法及装置 |
WO2018201896A1 (zh) * | 2017-05-04 | 2018-11-08 | 平安科技(深圳)有限公司 | 表结构建模方法、装置、服务器及介质 |
CN108984639A (zh) * | 2018-06-22 | 2018-12-11 | 联想(北京)有限公司 | 服务器集群的数据处理方法和装置 |
CN109492014A (zh) * | 2018-12-26 | 2019-03-19 | 广州市诚毅科技软件开发有限公司 | 一种数据库模型包创建方法、装置及设备 |
CN109829016A (zh) * | 2019-01-25 | 2019-05-31 | 网宿科技股份有限公司 | 一种数据同步方法及装置 |
CN110046168A (zh) * | 2019-03-28 | 2019-07-23 | 苏宁易购集团股份有限公司 | 一种增量数据一致性实现方法及装置 |
CN111104392A (zh) * | 2019-12-12 | 2020-05-05 | 京东数字科技控股有限公司 | 一种数据库迁移方法、装置、电子设备及存储介质 |
CN111708841A (zh) * | 2020-06-08 | 2020-09-25 | 中国工商银行股份有限公司 | 数据库数据同步方法及装置 |
CN112163024A (zh) * | 2020-09-11 | 2021-01-01 | 重庆誉存大数据科技有限公司 | 一种基于层级关联结构的配置信息导出和导入方法 |
CN112256702A (zh) * | 2020-10-23 | 2021-01-22 | 上海恒生聚源数据服务有限公司 | 一种增量标识修正方法及装置 |
CN112328615A (zh) * | 2020-11-16 | 2021-02-05 | 广州新居网家居科技有限公司 | 数据更新方法、装置、系统、服务器及存储介质 |
CN112579613A (zh) * | 2020-12-31 | 2021-03-30 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 数据库集群差异比对与数据同步的方法、系统及介质 |
CN113656502A (zh) * | 2021-08-19 | 2021-11-16 | 携程金融科技(上海)有限公司 | 数据同步方法、系统、电子设备和存储介质 |
WO2021244548A1 (zh) * | 2020-06-05 | 2021-12-09 | 安徽华米信息科技有限公司 | 即时消息处理方法和装置 |
CN113961625A (zh) * | 2021-10-27 | 2022-01-21 | 北京科杰科技有限公司 | 一种异构大数据管理平台任务迁移方法 |
CN114500230A (zh) * | 2022-01-14 | 2022-05-13 | 云南电网有限责任公司玉溪供电局 | 一种基于时间轴的光传输故障录播方法及系统 |
CN114722109A (zh) * | 2022-04-13 | 2022-07-08 | 中国电信股份有限公司 | 数据导入方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758355A (en) * | 1996-08-07 | 1998-05-26 | Aurum Software, Inc. | Synchronization of server database with client database using distribution tables |
CN101102577A (zh) * | 2006-07-07 | 2008-01-09 | 中兴通讯股份有限公司 | 无线通信基站系统前后台数据库表数据增量同步方法 |
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
-
2015
- 2015-01-29 CN CN201510048091.0A patent/CN104573100B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758355A (en) * | 1996-08-07 | 1998-05-26 | Aurum Software, Inc. | Synchronization of server database with client database using distribution tables |
CN101102577A (zh) * | 2006-07-07 | 2008-01-09 | 中兴通讯股份有限公司 | 无线通信基站系统前后台数据库表数据增量同步方法 |
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933823B (zh) * | 2015-12-29 | 2020-11-27 | 北京国双科技有限公司 | 数据同步方法及装置 |
CN106933823A (zh) * | 2015-12-29 | 2017-07-07 | 北京国双科技有限公司 | 数据同步方法及装置 |
CN106990974B (zh) * | 2016-01-21 | 2020-08-18 | 菜鸟智能物流控股有限公司 | 一种app应用更新方法、装置及电子设备 |
CN106990974A (zh) * | 2016-01-21 | 2017-07-28 | 阿里巴巴集团控股有限公司 | 一种app应用更新方法、装置及电子设备 |
US11093522B2 (en) | 2016-04-22 | 2021-08-17 | Huawei Technologies Co., Ltd. | Database replication method and apparatus for distributed system |
WO2017181430A1 (zh) * | 2016-04-22 | 2017-10-26 | 华为技术有限公司 | 分布式系统的数据库复制方法及装置 |
CN105893616A (zh) * | 2016-04-27 | 2016-08-24 | 郑州悉知信息科技股份有限公司 | 一种标识信息配置方法及装置 |
CN105893616B (zh) * | 2016-04-27 | 2019-05-24 | 郑州悉知信息科技股份有限公司 | 一种标识信息配置方法及装置 |
CN107515874A (zh) * | 2016-06-16 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种分布式非关系型数据库中同步增量数据的方法与设备 |
CN106897345A (zh) * | 2016-07-22 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种数据存储的方法及装置 |
CN106777265B (zh) * | 2016-12-28 | 2020-06-19 | 新奥科技发展有限公司 | 一种业务数据的处理方法及装置 |
CN106777265A (zh) * | 2016-12-28 | 2017-05-31 | 新奥科技发展有限公司 | 一种业务数据的处理方法及装置 |
CN108664505A (zh) * | 2017-03-30 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 一种数据库表结构的导出方法及装置 |
CN108664505B (zh) * | 2017-03-30 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 一种数据库表结构的导出方法及装置 |
WO2018201896A1 (zh) * | 2017-05-04 | 2018-11-08 | 平安科技(深圳)有限公司 | 表结构建模方法、装置、服务器及介质 |
CN108984639A (zh) * | 2018-06-22 | 2018-12-11 | 联想(北京)有限公司 | 服务器集群的数据处理方法和装置 |
CN108984639B (zh) * | 2018-06-22 | 2021-12-24 | 联想(北京)有限公司 | 服务器集群的数据处理方法和装置 |
CN109492014A (zh) * | 2018-12-26 | 2019-03-19 | 广州市诚毅科技软件开发有限公司 | 一种数据库模型包创建方法、装置及设备 |
CN109829016A (zh) * | 2019-01-25 | 2019-05-31 | 网宿科技股份有限公司 | 一种数据同步方法及装置 |
CN110046168B (zh) * | 2019-03-28 | 2021-03-26 | 南京苏宁软件技术有限公司 | 一种增量数据一致性实现方法及装置 |
CN110046168A (zh) * | 2019-03-28 | 2019-07-23 | 苏宁易购集团股份有限公司 | 一种增量数据一致性实现方法及装置 |
CN111104392A (zh) * | 2019-12-12 | 2020-05-05 | 京东数字科技控股有限公司 | 一种数据库迁移方法、装置、电子设备及存储介质 |
CN111104392B (zh) * | 2019-12-12 | 2021-11-02 | 京东数字科技控股有限公司 | 一种数据库迁移方法、装置、电子设备及存储介质 |
WO2021244548A1 (zh) * | 2020-06-05 | 2021-12-09 | 安徽华米信息科技有限公司 | 即时消息处理方法和装置 |
CN111708841B (zh) * | 2020-06-08 | 2024-01-23 | 中国工商银行股份有限公司 | 数据库数据同步方法及装置 |
CN111708841A (zh) * | 2020-06-08 | 2020-09-25 | 中国工商银行股份有限公司 | 数据库数据同步方法及装置 |
CN112163024B (zh) * | 2020-09-11 | 2024-03-19 | 重庆誉存大数据科技有限公司 | 一种基于层级关联结构的配置信息导出和导入方法 |
CN112163024A (zh) * | 2020-09-11 | 2021-01-01 | 重庆誉存大数据科技有限公司 | 一种基于层级关联结构的配置信息导出和导入方法 |
CN112256702A (zh) * | 2020-10-23 | 2021-01-22 | 上海恒生聚源数据服务有限公司 | 一种增量标识修正方法及装置 |
CN112256702B (zh) * | 2020-10-23 | 2023-12-22 | 上海恒生聚源数据服务有限公司 | 一种增量标识修正方法及装置 |
CN112328615A (zh) * | 2020-11-16 | 2021-02-05 | 广州新居网家居科技有限公司 | 数据更新方法、装置、系统、服务器及存储介质 |
CN112579613A (zh) * | 2020-12-31 | 2021-03-30 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 数据库集群差异比对与数据同步的方法、系统及介质 |
CN113656502B (zh) * | 2021-08-19 | 2023-11-07 | 携程金融科技(上海)有限公司 | 数据同步方法、系统、电子设备和存储介质 |
CN113656502A (zh) * | 2021-08-19 | 2021-11-16 | 携程金融科技(上海)有限公司 | 数据同步方法、系统、电子设备和存储介质 |
CN113961625A (zh) * | 2021-10-27 | 2022-01-21 | 北京科杰科技有限公司 | 一种异构大数据管理平台任务迁移方法 |
CN114500230A (zh) * | 2022-01-14 | 2022-05-13 | 云南电网有限责任公司玉溪供电局 | 一种基于时间轴的光传输故障录播方法及系统 |
CN114500230B (zh) * | 2022-01-14 | 2024-01-26 | 云南电网有限责任公司玉溪供电局 | 一种基于时间轴的光传输故障录播方法及系统 |
CN114722109A (zh) * | 2022-04-13 | 2022-07-08 | 中国电信股份有限公司 | 数据导入方法、系统、设备及存储介质 |
CN114722109B (zh) * | 2022-04-13 | 2024-02-06 | 中国电信股份有限公司 | 数据导入方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104573100B (zh) | 2017-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104573100A (zh) | 一种带自增量标识的分步式数据库同步方法 | |
CN104598610A (zh) | 一种分步式数据库数据分发上传同步方法 | |
US11461294B2 (en) | System for importing data into a data repository | |
US11360950B2 (en) | System for analysing data relationships to support data query execution | |
US11409764B2 (en) | System for data management in a large scale data repository | |
CN108052681B (zh) | 一种关系型数据库间结构化数据的同步方法及系统 | |
CN108573006A (zh) | 跨机房数据同步系统、方法及装置、电子设备 | |
NO20171080A1 (en) | Apparatus and methods of data synchronization | |
US20090037488A1 (en) | Method for database consolidation and database separation | |
CN114357088B (zh) | 核电工业数据仓库系统 | |
CN104318481A (zh) | 一种面向电网运行的全息时标量测数据萃取转换方法 | |
CN102375827A (zh) | 一种对版本化的电网模型数据库进行快速加载的方法 | |
CN107870949A (zh) | 数据分析作业依赖关系生成方法和系统 | |
CN109150964A (zh) | 一种可迁移的数据管理方法及服务迁移方法 | |
CN109657000B (zh) | 一种轨道交通综合监控系统的实时数据同步方法及装置 | |
US11789973B2 (en) | Software-defined database replication links | |
CN109165263A (zh) | 数据库的日志分析处理方法及装置、ddl同步方法及装置 | |
US20180260423A1 (en) | Versioned data updating system | |
TWI526968B (zh) | Data Caching Method with High Transitivity and Correctness | |
CN112749983A (zh) | 一种适用于电力现货交易数据的方法和系统 | |
CN116089413A (zh) | 数据管理方法及装置 | |
CN117215791A (zh) | 任务等级确定方法、装置、设备及介质 | |
CN112001587A (zh) | 一种数据提取方法及系统 | |
CN106970971A (zh) | 改进型中心锚链模型的描述方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |