CN117349368A - 基于Flink的跨库数据实时同步任务管理系统及方法 - Google Patents
基于Flink的跨库数据实时同步任务管理系统及方法 Download PDFInfo
- Publication number
- CN117349368A CN117349368A CN202311178730.6A CN202311178730A CN117349368A CN 117349368 A CN117349368 A CN 117349368A CN 202311178730 A CN202311178730 A CN 202311178730A CN 117349368 A CN117349368 A CN 117349368A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- metadata
- target
- task
- 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.)
- Pending
Links
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims description 19
- 238000012545 processing Methods 0.000 claims abstract description 60
- 230000008859 change Effects 0.000 claims abstract description 27
- 238000013507 mapping Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000003860 storage Methods 0.000 claims description 2
- 239000003054 catalyst Substances 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006555 catalytic reaction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Flink的跨库数据实时同步任务管理系统,它的元数据读取模块用于从用户输入的数据来源库与数据目标库中获取数据连接信息,并根据数据连接信息从数据来源库和数据目标库中读取对应元数据;元数据创建模块用于根据业务需要,设定字段间的对应关系,并根据设定的字段间对应关系将数据来源库和数据目标库中对应的字段进行关联,形成用于创建数据同步任务的元数据;同步任务创建模块用于使用flink集群中提供的API程序接口对用于创建数据同步任务的元数据进行解析,生成数据处理流水线。本发明通过实时捕获源数据库的变更数据并将其转换为目标数据库的相应数据,从而实现快速、准确和实时的数据同步。
Description
技术领域
本发明涉及数据处理技术领域,具体地指一种基于Flink的跨库数据实时同步任务管理系统及方法。
背景技术
数据库/表同步是企业级分布式系统开发中的常见解决方案,目前的数据库/表同步方案主要有:
1、通过开发应用程序或者低代码的方式(低代码为使用数据调度平台产品,在通过web界面拖拉拽组件和写sql的方式来创建定时务),定时查询源数据库,根据版本号查询出业务层面修改过的记录,写入到目标数据库,实现数据库/表同步;
2、通过mysql中远程表FEDERATED的方式,实时的读取源数据库表映射到目标数据库表,实现数据库/表同步;
上述现有方案1的优点为可以对字段进行业务处理,缺点为执行效率不高,需要权衡时效性和性能开销,现有方案2的优点为能实现实时查询、运维成本低,缺点为不能对字段进行业务调整、连表查询的效率很差。
发明内容
本发明的目的就是要提供一种基于Flink的跨库数据实时同步任务管理系统及方法,本发明通过实时捕获源数据库的数据变更并将其转换为目标数据库的相应数据,从而实现快速、准确和实时的数据同步。
为实现此目的,本发明所设计的基于Flink的跨库数据实时同步任务管理系统,其特征在于,它包括元数据读取模块、元数据创建模块和同步任务创建模块;
所述元数据读取模块用于从用户输入的数据来源库与数据目标库中获取数据连接信息,并根据数据连接信息从数据来源库和数据目标库中读取对应元数据(数据表信息和表字段声明信息);
元数据创建模块用于根据业务需要,设定字段间的对应关系,并根据设定的字段间对应关系将数据来源库和数据目标库中对应的字段进行关联,形成用于创建数据同步任务的元数据;
同步任务创建模块用于使用flink开发框架提供的可扩展接口(API)对用于创建数据同步任务的元数据进行解析,转换为用于生成同步任务的数据处理流水线。
本发明的有益效果:
本发明通过实时捕获源数据库的变更数据并将其转换为目标数据库的相应数据,从而实现快速、准确和实时的数据同步。实现了一站式Flink数据同步任务编辑与发布,提高开发和运维效率,降低了数据分发的应用难度。
本发明利用数据变更订阅技术(cdc),提高了同步的实时性;结合实际业务场景的优化,针对一对多的数据分发场景,自定义算子,提高分发任务的运行效率、降低数据库服务器的网络和磁盘读写压力。
附图说明
图1为本发明的结构示意图;
图2为本发明中开源cdc组件监听数据库的binlog转换为数据表记录的增删改动作映射关系的示意图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步的详细说明:
如图1所示的基于Flink的跨库数据实时同步任务管理系统,它包括元数据读取模块、元数据创建模块、同步任务创建模块和任务执行模块;
所述元数据读取模块用于从用户输入的数据来源库与数据目标库中获取数据连接信息,并根据数据连接信息从数据来源库和数据目标库中读取对应元数据,数据库元数据为对应数据库中数据表列表和每个表的表结构;
元数据创建模块用于根据业务需要,设定字段间的对应关系,并根据设定的字段间对应关系将数据来源库和数据目标库中对应的字段进行关联,形成用于创建数据同步任务的元数据,元数据是创建数据同步任务的必要配置信息,便于任务的可读性、持久化以及迁移;
同步任务创建模块用于使用flink(一种开源的分布式流处理引擎)开发框架提供的可扩展接口API对用于创建数据同步任务的元数据进行解析,转换为用于生成同步任务的数据处理流水线来实现数据同步任务的具体操作。这个模块首先会解析输入的元数据(这里的元数据指的是关于数据同步任务的相关信息,比如源数据源、目标数据源、数据同步规则等);接下来,根据解析的结果,模块会生成数据处理流水线。数据处理流水线是一个处理数据的连续流程,它由一系列数据处理操作组成,用于将源数据同步到目标数据源。这个流水线的具体内容会根据解析得到的元数据进行配置和构建。
同步任务创建模块基于flink开发框架提供的API,对数据同步任务元数据进行解析,并根据解析结果生成数据处理流水线,从而实现数据同步任务的细节操作。
同步任务创建模块用于使用flink(一种开源的分布式流处理引擎)集群中提供的API程序接口对用于创建数据同步任务的元数据进行解析,生成数据同步任务的数据处理流水线,流水线就是数据同步任务的实现细节;
任务执行模块用于执行同步任务的数据处理流水线,保持数据来源库与数据目标库之间数据保持同步。
API程序接口org.apache.flink.table.operations.Operation,org.apache.flink.table.operations.Operation是Apache Flink Table&SQL API中的一个接口,它用于表示在查询计划中的不同操作,例如选择(Selection)、投影(Projection)、连接(Join)等操作,通过Operation接口,用户可以构建复杂的查询计划,以便在Flink中进行数据处理和分析,每个Operation实例都描述了一个操作,它们可以被组合起来形成一个查询计划,这种基于操作的编程方式灵活而强大,可以满足各种不同的数据处理场景和需求,需要注意的是Operation只是查询计划的一部分,并不直接执行具体的数据处理任务。实际的执行发生在查询计划被转化为执行图(Execution Graph)后,由Flink的执行引擎进行处理。
上述技术方案中,所述数据连接信息包括ip端口和协议(根据数据库的实现不同,mysql、oracle都有对应的访问协议)。
上述技术方案中,所述用于创建数据同步任务的元数据包括源数据库和目标数据库的连接信息、每个目标数据库表与源数据库表的字段对应关系,json格式的文本,即数据同步任务的元数据。
上述技术方案中,所述同步任务创建模块使用flink集群中提供的API程序接口对用于创建数据同步任务的元数据进行解析,生成数据处理流水线,flink集群利用数据处理流水线创建数据来源库与数据目标库之间的数据同步任务的具体方法为:
首先,根据创建数据同步任务的元数据中的源数据库连接信息构建cdc官方库的数据源算子DataStreamSource,实现了订阅源数据库binlog变更事件,来进行数据库表的增量同步;
如果数据库表是分库分表,对于原始的cdc数据源,分库分表的信息,被看作是不同的表,需要将分库分表的数据变更,合并成逻辑表的数据变更,得到面向逻辑表的变更数据的旁路输出流outputTag(cdc库得到的表事件),兼容数据源表是分库分表的情况,如果使用原生的flink sql查询会将分库分表的每一个分片表当做独立的表来处理;
然后,根据开源cdc组件监听数据库的binlog转换为数据表记录的增删改动作映射关系,如图2所示,将面向逻辑表的变更数据的旁路输出流流转为源数据库的流RowKind数据;
如图2所示,在Flink中,可以利用Debezium和CDC(Change Data Capture)组件来监听数据库的binlog,并将变更记录转换为表的事件流。下面是相关术语的映射关系:
Flatmap表示将面向逻辑表的变更数据转换为源数据库的流RowKind数据,r表示读取操作,c表示创建操作,u表示更新操作,d表示删除操作,INSERT(+1)表示插入操作,UPDATE BEFORE(-U)表示更新前的数据,UPDATE AFTER(+U)表示更新后的数据,DELETE(+D)表示删除操作,DataStream<Row>表示行数据的流,Debezium op表示变更操作类型,Row表示行数据,after表示变更后的数据,before表示变更前的数据。
你可以根据这些映射关系,将Debezium CDC的变更记录转换为相应的数据表的事件流。
由于后续使用flink的表视图api,将事件流转为动态表视图,因此,对cdc组件debezium得到的binlog变更转义为面向表的增删改事件流;
然后,将源数据库的流RowKind数据注册为flink table api(flink运行环境提供的api)中的表视图,这个表视图作为所有目标数据库数据同步任务的数据源,实现复用数据源,减少源库IO开销的目的;
然后,根据用于创建数据同步任务的元数据中目标表的配置,在flink table api中创建数据同步的目标表,并在内存catalog注册目标表;
最后,使用flink sql对表视图和注册目标表,以及用于创建数据同步任务的元数据中的映射关系配置,生成insert语句,insert语句用于建立数据来源表和目标表之间的对应关系,使用flink table api将每一个insert语句转换为流水线的Operation算子,从而生成同步任务的数据处理流水线,Operation是执行特定数据操作的概念。它可以代表一个转换或动作,例如从一个表读取数据、将数据写入下游系统或执行聚合操作等。Operation将数据流或数据集上的操作封装为一个可执行的任务或计算单元。
通过将INSERT语句转换为Operation,可以以编程的方式在Flink中执行插入操作,并对结果进行进一步处理和操作。
在Flink中,Operation和流水线(Pipeline)是相关的概念,它们共同构成了数据处理的执行模型。
Operation是指对数据进行具体操作的任务单元,例如数据转换、过滤、聚合等。每个Operation接收输入数据,并对其进行处理后输出结果。Operation可以被组合成一个数据处理流程,形成数据处理的有向图。
而流水线是将不同的操作(Operation)按照顺序组合在一起,形成一个连续的数据处理管道。在流水线中,数据从一个Operation流经下一个Operation,每个Operation在处理数据时执行特定的操作,并将结果传递给下一个Operation。
流水线充分利用了数据流的特性,从而提高了数据处理的效率和吞吐量。在流数据处理场景下,流水线可以实现流水化计算,即在数据流中进行流水线处理,同时保持低延迟和高吞吐量。
在Flink中,流数据处理通常以流处理任务为单位,可以将多个操作(Operation)组合成一个流水线,使得数据能够按照指定的顺序经过一系列的操作进行处理。
操作(Operation)和流水线(Pipeline)在Flink中紧密配合,共同实现了高效的数据处理和计算模型,能够以并行、流水化的方式处理大规模的数据流。通过构建合理的操作和流水线,可以充分发挥Flink的分布式处理能力,提升处理性能和效率。
在Flink中,Catalog是一种用于管理和组织数据源以及相关元数据的概念,它提供了一个抽象层,使得用户可以对不同类型的数据源进行统一的操作和管理;具体地说,Catalog是一个存储有关数据源和表的元数据的容器。它可以包含多个数据库,每个数据库可以包含多个表或视图。每个表可以定义其架构、位置、格式以及其他属性。通过使用Catalog,用户可以在Flink中注册和访问数据源,而无需直接编写底层的连接和查询逻辑。Flink提供了内置的Catalog实现,例如默认的内存Catalog(In-Memory Catalog),以及支持各种外部系统的Catalog,如Hive Catalog、MySQL Catalog等。使用Catalog,用户可以更加方便地管理和操作数据,并且可以在不同的作业之间共享和复用表的定义。通过将表的元数据存储在Catalog中,可以实现对表的统一管理和查询。
Flink SQL是Apache Flink提供的一种用于在Flink上执行SQL查询和操作的编程接口。它提供了一种声明式的方式来描述数据处理逻辑,使得用户可以使用类似SQL的语法来操作和查询数据。
Flink SQL支持标准的ANSI SQL语法,以及一些扩展和优化,用于处理流数据和批数据。它可以与Flink的流处理和批处理引擎紧密集成,以实现低延迟、高吞吐量和容错性。
以下是使用Flink SQL的一些主要特点和功能:
声明式查询语言:使用类似SQL的语法描述查询和操作数据,提供了简洁、直观的编程接口。
支持流和批处理:Flink SQL提供了对无界流数据和有界批数据的处理支持,并可以根据需求进行转换和整合。
支持窗口和处理时间:Flink SQL提供了对事件时间和处理时间的支持,可以实现基于时间和窗口的数据处理和聚合操作。
丰富的内置函数和操作符:Flink SQL提供了大量的内置函数和操作符,用于处理和转换数据,例如聚合函数、数学函数、字符串函数等。
底层优化和查询优化:Flink SQL在底层利用Flink的优化器进行查询优化和执行计划生成,以实现高性能和高效的数据处理。
通过使用Flink SQL,用户可以以一种更简单和直观的方式来编写和组合查询和操作,而无需直接编写复杂的流处理或批处理代码。它提供了更高级别的抽象,使得开发者可以更专注于业务逻辑的实现而不需要关注底层的技术细节。
上述技术方案中,任务执行模块执行同步任务的数据处理流水线的具体方法为:将得到的多个Operation一起提交到flink执行环境。
一种基于Flink的跨库数据实时同步任务管理方法,它包括如下步骤:
步骤1:从用户输入的数据来源库与数据目标库中获取数据连接信息,并根据数据连接信息从数据来源库和数据目标库中读取对应元数据;
步骤2:根据业务需要,设定字段间的对应关系,并根据设定的字段间对应关系将数据来源库和数据目标库中对应的字段进行关联,形成用于创建数据同步任务的元数据;
步骤3:使用flink集群中提供的API程序接口对用于创建数据同步任务的元数据进行解析,生成同步任务的数据处理流水线。
上述技术方案的步骤3的具体方法为:
步骤3.1:根据创建数据同步任务的元数据中的源数据库连接信息构建cdc官方库的数据源算子DataStreamSource,实现了订阅源数据库binlog变更事件,来进行数据库表的增量同步;
如果数据库表是分库分表,对于原始的cdc数据源,分库分表的信息,被看作是不同的表,需要将分库分表的数据变更,合并成逻辑表的数据变更,得到面向逻辑表的变更数据的旁路输出流;
步骤3.2:根据开源cdc组件监听数据库的binlog转换为数据表记录的增删改动作映射关系,将面向逻辑表的变更数据的旁路输出流流转为源数据库的流RowKind数据;
步骤3.3:将源数据库的流RowKind数据注册为flink table api中的表视图,这个表视图作为所有目标数据库数据同步任务的数据源;
步骤3.4:根据用于创建数据同步任务的元数据中目标表的配置,在flink tableapi中创建数据同步的目标表,并在内存catalog注册目标表;
步骤3.5:使用flink sql对表视图和注册目标表,以及用于创建数据同步任务的元数据中的映射关系配置,生成insert语句,insert语句用于建立数据来源表和目标表之间的对应关系,使用flink table api将每一个insert语句转换为流水线的Operation算子,从而生成同步任务的数据处理流水线;Operation operator=customTableEnvironment.getParser().parse(cdcSqlInsert);
modifyOperations.add(operator);
上述代码中cdcSqlInsert为生成的insert语句文本;
customTableEnvironment.getParser().parse是flink运行时提供的api,将flink sql转换为可执行的算子Operation;
modifyOperations:是一个List集合,将多个算子打包成一个集合;
步骤4:执行同步任务的数据处理流水线,流水线转换成执行计划提交给flink集群生成数据同步任务,维护数据来源库的源表与数据目标库的目标表在业务层面保持准实时同步;
List<Transformation<?>>trans=
customTableEnvironment.getPlanner().translate(modifyOperations)
上述代码表示将步骤3的算子集合转换为执行计划集合执行计划是一个由底层操作符和转换器组成的有向无环图(DAG),它描述了如何对输入的数据进行处理以及如何计算出最终的结果。
通过将查询转换为执行计划,可以进一步对其进行优化和调整。例如,可以基于统计信息和优化规则来重新排序操作符,选择适当的并行度,选择合适的连接策略等等。最终,可以将生成的执行计划提交给Flink的执行引擎进行实际的数据处理和计算。
对于主数据分发的业务场景下,会存在从一个源数据库分发数据到多个目标数据库的情况。使用在步骤3中flink sql的默认实现,对于每一个目标数据库都会创建一个数据源算子(DataStreamSource)。每一个DataStreamSource都会占用源数据库的一个连接数,当目标数据库增加时,会占用主库的大量数据源链接并且binlog的重复读取会增加源数据库的资源压力。通过实现DataStreamSource,将数据库变更cdc事件流经过转换最终形成flink表视图TemporaryView,达到复用数据源链接和合并分库分表的目的。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如上述方法的步骤。
本说明书未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种基于Flink的跨库数据实时同步任务管理系统,其特征在于,它包括元数据读取模块、元数据创建模块和同步任务创建模块;
所述元数据读取模块用于从用户输入的数据来源库与数据目标库中获取数据连接信息,并根据数据连接信息从数据来源库和数据目标库中读取对应元数据;
元数据创建模块用于根据业务需要,设定字段间的对应关系,并根据设定的字段间对应关系将数据来源库和数据目标库中对应的字段进行关联,形成用于创建数据同步任务的元数据;
同步任务创建模块用于使用flink开发框架提供的可扩展接口对用于创建数据同步任务的元数据进行解析,转换为用于生成同步任务的数据处理流水线。
2.根据权利要求1所述的基于Flink的跨库数据实时同步任务管理系统,其特征在于:它还包括任务执行模块,任务执行模块用于执行同步任务的数据处理流水线,流水线转换成执行计划提交给flink集群生成数据同步任务,维护数据来源库的源表与数据目标库的目标表在业务层面保持准实时同步。
3.根据权利要求1所述的基于Flink的跨库数据实时同步任务管理系统,其特征在于:所述数据连接信息包括ip端口和协议。
4.根据权利要求1所述的基于Flink的跨库数据实时同步任务管理系统,其特征在于:所述用于创建数据同步任务的元数据包括源数据库和目标数据库的连接信息、每个目标数据库表与源数据库表的字段对应关系,json格式的文本。
5.根据权利要求1所述的基于Flink的跨库数据实时同步任务管理系统,其特征在于:所述同步任务创建模块使用flink集群中提供的API程序接口对用于创建数据同步任务的元数据进行解析,生成数据处理流水线,flink集群利用数据处理流水线创建数据来源库与数据目标库之间的数据同步任务的具体方法为:
首先,根据创建数据同步任务的元数据中的源数据库连接信息构建cdc官方库的数据源算子DataStreamSource,实现了订阅源数据库binlog变更事件,来进行数据库表的增量同步;
如果数据库表是分库分表,对于原始的cdc数据源,分库分表的信息,被看作是不同的表,需要将分库分表的数据变更,合并成逻辑表的数据变更,得到面向逻辑表的变更数据的旁路输出流;
然后,根据开源cdc组件监听数据库的binlog转换为数据表记录的增删改动作映射关系,将面向逻辑表的变更数据的旁路输出流流转为源数据库的流RowKind数据;
然后,将源数据库的流RowKind数据注册为flink table api中的表视图,这个表视图作为所有目标数据库数据同步任务的数据源;
然后,根据用于创建数据同步任务的元数据中目标表的配置,在flink table api中创建数据同步的目标表,并在内存catalog注册目标表;
最后,使用flink sql对表视图和注册目标表,以及用于创建数据同步任务的元数据中的映射关系配置,生成insert语句,insert语句用于建立数据来源表和目标表之间的对应关系,使用flink table api将每一个insert语句转换为流水线的Operation算子,从而生成同步任务的数据处理流水线。
6.根据权利要求2所述的基于Flink的跨库数据实时同步任务管理系统,其特征在于:任务执行模块执行同步任务的数据处理流水线的具体方法为:将得到的多个Operation一起提交到flink执行环境。
7.一种基于Flink的跨库数据实时同步任务管理方法,其特征在于,它包括如下步骤:
步骤1:从用户输入的数据来源库与数据目标库中获取数据连接信息,并根据数据连接信息从数据来源库和数据目标库中读取对应元数据;
步骤2:根据业务需要,设定字段间的对应关系,并根据设定的字段间对应关系将数据来源库和数据目标库中对应的字段进行关联,形成用于创建数据同步任务的元数据;
步骤3:使用flink集群中提供的API程序接口对用于创建数据同步任务的元数据进行解析,生成同步任务的数据处理流水线。
8.根据权利要求7所述的基于Flink的跨库数据实时同步任务管理方法,其特征在于:所述步骤3的具体方法为:
步骤3.1:根据创建数据同步任务的元数据中的源数据库连接信息构建cdc官方库的数据源算子DataStreamSource,实现了订阅源数据库binlog变更事件,来进行数据库表的增量同步;
如果数据库表是分库分表,对于原始的cdc数据源,分库分表的信息,被看作是不同的表,需要将分库分表的数据变更,合并成逻辑表的数据变更,得到面向逻辑表的变更数据的旁路输出流;
步骤3.2:根据开源cdc组件监听数据库的binlog转换为数据表记录的增删改动作映射关系,将面向逻辑表的变更数据的旁路输出流流转为源数据库的流RowKind数据;
步骤3.3:将源数据库的流RowKind数据注册为flink table api中的表视图,这个表视图作为所有目标数据库数据同步任务的数据源;
步骤3.4:根据用于创建数据同步任务的元数据中目标表的配置,在flink table api中创建数据同步的目标表,并在内存catalog注册目标表;
步骤3.5:使用flink sql对表视图和注册目标表,以及用于创建数据同步任务的元数据中的映射关系配置,生成insert语句,insert语句用于建立数据来源表和目标表之间的对应关系,使用flink table api将每一个insert语句转换为流水线的Operation算子,从而生成同步任务的数据处理流水线。
9.根据权利要求7所述的基于Flink的跨库数据实时同步任务管理方法,其特征在于:所述步骤3后还包括步骤4:执行同步任务的数据处理流水线,流水线转换成执行计划提交给flink集群生成数据同步任务,维护数据来源库的源表与数据目标库的目标表在业务层面保持准实时同步。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求7~9中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311178730.6A CN117349368A (zh) | 2023-09-13 | 2023-09-13 | 基于Flink的跨库数据实时同步任务管理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311178730.6A CN117349368A (zh) | 2023-09-13 | 2023-09-13 | 基于Flink的跨库数据实时同步任务管理系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117349368A true CN117349368A (zh) | 2024-01-05 |
Family
ID=89356495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311178730.6A Pending CN117349368A (zh) | 2023-09-13 | 2023-09-13 | 基于Flink的跨库数据实时同步任务管理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117349368A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648388A (zh) * | 2024-01-29 | 2024-03-05 | 成都七柱智慧科技有限公司 | 一种可视化的安全实时的数据仓库实现方法及其系统 |
-
2023
- 2023-09-13 CN CN202311178730.6A patent/CN117349368A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648388A (zh) * | 2024-01-29 | 2024-03-05 | 成都七柱智慧科技有限公司 | 一种可视化的安全实时的数据仓库实现方法及其系统 |
CN117648388B (zh) * | 2024-01-29 | 2024-04-12 | 成都七柱智慧科技有限公司 | 一种可视化的安全实时的数据仓库实现方法及其系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983967B2 (en) | Creation of a cumulative schema based on an inferred schema and statistics | |
US10007698B2 (en) | Table parameterized functions in database | |
CN102982075B (zh) | 支持访问异构数据源的系统和方法 | |
US7917463B2 (en) | System and method for data warehousing and analytics on a distributed file system | |
CA2843459C (en) | Low latency query engine for apache hadoop | |
US10095732B2 (en) | Scalable analysis platform for semi-structured data | |
CN109614413B (zh) | 一种内存流式计算平台系统 | |
US9665620B2 (en) | Managing data queries | |
CA2967328C (en) | Processing queries containing a union-type operation | |
EP3901781A1 (en) | Background format optimization for enhanced sql-like queries in hadoop | |
US20070061318A1 (en) | System and method of data source agnostic querying | |
Sellami et al. | Complex queries optimization and evaluation over relational and NoSQL data stores in cloud environments | |
CN103430144A (zh) | 数据源分析 | |
CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
CN107622055B (zh) | 一种快速实现数据服务发布的方法 | |
CN117349368A (zh) | 基于Flink的跨库数据实时同步任务管理系统及方法 | |
EP3948564A1 (en) | Systems and methods for generating, deploying, and managing data infrastructure stacks | |
US10521431B2 (en) | Relational conversion of multiprovider operations in a calculation scenario for executing a query | |
Böhm | Cost-based optimization of integration flows | |
Schildgen et al. | Transformations on Graph Databases for Polyglot Persistence with NotaQL | |
Wang et al. | The research of multi-source heterogeneous data integration based on LINQ | |
US20230281213A1 (en) | System and method for data warehouse workload transformation | |
Liang et al. | Design and Implementation of A Cross-Database Query Tool on Multi-Source Databases. | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
Garcia-Alvarado et al. | Democratization of OLAP DSMS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |