System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种PostgreSQL数据库索引增量同步方法及系统技术方案_技高网

一种PostgreSQL数据库索引增量同步方法及系统技术方案

技术编号:40874657 阅读:3 留言:0更新日期:2024-04-08 16:43
本发明专利技术属于数据库同步技术领域,具体涉及一种PostgreSQL数据库索引增量同步方法及系统,在源端PostgreSQL数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至第一辅助表,在源端PostgreSQL数据库创建第二辅助表,第二辅助表中包括DDL执行事件信息,创建源端PostgreSQL数据库触发器进行监听DDL执行事件信息,在执行DDL语句时根据DDL语句类型不同执行存储逻辑,利用数据同步工具将第二辅助表同步到目标数据库,在目标数据库中配置触发器监听目标数据库的INSERT操作,执行INSERT事件的语句中的DDL语句,进行特定表的DDL同步,支持只同步特定表的DDL语句,同步效率更高,可配置性更强,对源库的改动小,不需要在源库lib目录下添加预设so文件配置。

【技术实现步骤摘要】

本专利技术属于数据库同步,具体涉及一种postgresql数据库索引增量同步方法及系统。


技术介绍

1、在关系型数据库中,ddl(data definition language)和dml(data manipulationlanguage)是两种最基本的sql语言类型。ddl语言用于定义和管理数据库对象,如表、索引、触发器、视图、存储过程等;而dml语言则用于对数据库中的数据进行查询、插入、修改和删除等操作。

2、数据库ddl(data definition language)增量同步是指在数据库中进行结构性变化时,将这些变化同步到其他相同结构的数据库中,以保证这些数据库具有相同的结构和定义。

3、现有的postgresql数据库ddl增量同步技术是利用触发器的方式,当执行ddl语句时把执行的ddl语句保存到辅助表中,然后利用数据库数据同步技术把辅助表的数据同步到目标库中,再把辅助表的ddl语句在目标库中执行,以此实现ddl同步。在整个数据库所有表都进行同步的场景中,不需要对ddl语句执行的目标进行识别判断,这种同步方式是可行的。

4、但是,遇到只需要同步部分表的索引的场景时,对于postgresql数据库索引变更的ddl语句,如删除索引的ddl,在触发器触发的时候,数据库中的索引已经发生了变化,索引已经被删除,导致无法查询到删除的索引属于哪个表,也查不到被删除的索引的语句信息,导致无法判断是否需要同步该索引ddl语句。


技术实现思路

1、本专利技术的目的在于提供一种postgresql数据库索引增量同步方法及系统,支持只同步特定表的ddl语句,同步效率更高,可配置性更强,以解决上述
技术介绍
中提出现有技术中的问题。

2、为实现上述目的,本专利技术采用了如下技术方案:一种postgresql数据库索引增量同步方法,包括:在源端postgresql数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至所述第一辅助表;在源端postgresql数据库创建第二辅助表,所述第二辅助表中包括ddl执行事件信息;创建源端postgresql数据库触发器进行监听所述ddl执行事件信息,在执行ddl语句时根据ddl语句类型不同执行存储逻辑;利用数据同步工具将第二辅助表同步到目标数据库;在所述目标数据库中配置所述触发器监听目标数据库的insert操作,执行insert事件的语句中的ddl语句,进行特定表的ddl同步。

3、优选地,所述索引信息包括索引名称、所属表名称和数据库实例名称。

4、优选地,所述ddl执行事件信息包括ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句和ddl执行时间。

5、优选地,所述ddl语句类型包括create function,create table,alter table,drop table,create index和drop index。

6、优选地,所述存储逻辑包括:当ddl语句类型为create index时,采用第一存储方法;当ddl语句类型为drop table时,采用第二存储方法;当ddl语句类型为其余的类型时,采用第三存储方法。

7、优选地,所述第一存储方法,包括:获取当前的索引名称、所属表名称和数据库实例名称存入所述第一辅助表中;获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。

8、优选地,所述第二存储方法包括:根据当前的索引名称、数据库实例名称从第一辅助表中查找对应的所属表名称;然后获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。

9、优选地,所述第三存储方法包括:获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。

10、优选地,所述目标数据库中包括第三辅助表,所述第三辅助表用于存储insert事件。

11、另一方面,本专利技术提出一种postgresql数据库索引增量同步系统,包括:

12、创建模块一,用于在源端postgresql数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至所述第一辅助表;

13、创建模块二,在源端postgresql数据库创建第二辅助表,所述第二辅助表中包括ddl执行事件信息;

14、判断模块,用于创建源端postgresql数据库触发器进行监听所述ddl执行事件信息,在执行ddl语句时根据ddl语句类型不同执行存储逻辑;

15、存储模块,用于利用数据同步工具将第二辅助表同步到目标数据库;

16、同步模块,用于在所述目标数据库中配置所述触发器监听目标数据库的insert操作,执行insert事件的语句中的ddl语句,进行特定表的ddl同步。

17、本专利技术的技术效果和优点:本专利技术提出的一种postgresql数据库索引增量同步方法及系统,与现有技术相比,具有以下优点:

18、在源端postgresql数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至第一辅助表,在源端postgresql数据库创建第二辅助表,第二辅助表中包括ddl执行事件信息,创建源端postgresql数据库触发器进行监听ddl执行事件信息,在执行ddl语句时根据ddl语句类型不同执行存储逻辑,利用数据同步工具将第二辅助表同步到目标数据库,在目标数据库中配置触发器监听目标数据库的insert操作,执行insert事件的语句中的ddl语句,进行特定表的ddl同步,支持只同步特定表的ddl语句,同步效率更高,可配置性更强,对源库的改动小,不需要在源库lib目录下添加预设so文件配置,触发器配置均为postgresql已有的内置函数,兼容性、可移植性更强。

本文档来自技高网...

【技术保护点】

1.一种PostgreSQL数据库索引增量同步方法,其特征在于,包括:

2.根据权利要求1所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述索引信息包括索引名称、所属表名称和数据库实例名称。

3.根据权利要求2所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述DDL执行事件信息包括DDL语句类型、DDL目标数据库实例名称、DDL对象名称、DDL父对象名称、DDL执行语句和DDL执行时间。

4.根据权利要求3所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述DDL语句类型包括CREATE FUNCTION,CREATE TABLE,ALTER TABLE,DROP TABLE,CREATEINDEX和DROP INDEX。

5.根据权利要求4所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述存储逻辑包括:

6.根据权利要求5所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述第一存储方法,包括:获取当前的索引名称、所属表名称和数据库实例名称存入所述第一辅助表中;获取当前的DDL语句类型、DDL目标数据库实例名称、DDL对象名称、DDL父对象名称、DDL执行语句、DDL执行时间存入第二辅助表中。

7.根据权利要求5所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述第二存储方法包括:根据当前的索引名称、数据库实例名称从第一辅助表中查找对应的所属表名称;然后获取当前的DDL语句类型、DDL目标数据库实例名称、DDL对象名称、DDL父对象名称、DDL执行语句、DDL执行时间存入第二辅助表中。

8.根据权利要求5所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述第三存储方法包括:获取当前的DDL语句类型、DDL目标数据库实例名称、DDL对象名称、DDL父对象名称、DDL执行语句、DDL执行时间存入第二辅助表中。

9.根据权利要求1所述的一种PostgreSQL数据库索引增量同步方法,其特征在于,所述目标数据库中包括第三辅助表,所述第三辅助表用于存储INSERT事件。

10.一种PostgreSQL数据库索引增量同步系统,其特征在于,包括:

...

【技术特征摘要】

1.一种postgresql数据库索引增量同步方法,其特征在于,包括:

2.根据权利要求1所述的一种postgresql数据库索引增量同步方法,其特征在于,所述索引信息包括索引名称、所属表名称和数据库实例名称。

3.根据权利要求2所述的一种postgresql数据库索引增量同步方法,其特征在于,所述ddl执行事件信息包括ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句和ddl执行时间。

4.根据权利要求3所述的一种postgresql数据库索引增量同步方法,其特征在于,所述ddl语句类型包括create function,create table,alter table,drop table,createindex和drop index。

5.根据权利要求4所述的一种postgresql数据库索引增量同步方法,其特征在于,所述存储逻辑包括:

6.根据权利要求5所述的一种postgresql数据库索引增量同步方法,其特征在于,所述第一存储方法,包括:获取当前的索引名称、所属表名称和数据库实...

【专利技术属性】
技术研发人员:陆文成
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1