当前位置:网站首页>基于开源流批一体数据同步引擎 ChunJun 数据还原 —DDL 解析模块的实战分享
基于开源流批一体数据同步引擎 ChunJun 数据还原 —DDL 解析模块的实战分享
2022-07-01 12:36:00 【51CTO】
原文链接: 基于开源流批一体数据同步引擎 ChunJun 数据还原 —DDL 解析模块的实战分享
课件获取:关注公众号 ** “数栈研习社”,后台私信 “ChunJun”** 获得直播课件
视频回放: 点击这里
ChunJun 开源项目地址: github 丨 gitee 喜欢我们的项目给我们点个 STAR!STAR!!STAR!!!(重要的事情说三遍)
一、ChunJun-DDL 解析模块介绍
上一期我们为大家介绍了《ChunJun 支持异构数据源 DDL 转换与自动执行》,其中对 Calcite 解析 DDL 实战的内容做了简要介绍,本期我们将针对这一部分内容做详细分享。在进行 DDL 实战演示前,我们先回顾一下数据还原及 DDL 解析模块的内容。
1、数据还原介绍
ChunJun 支持 mysql oracle postgresql sqlserver 等数据源实时同步,但是同步之后的数据是以日志形式输出,数据还原在此基础上做到源数据的变动在目标表也发生对应变动,包含 DML 以及 DDL 的操作都会在目标表中执行对应的操作,保证源表和目标表 schema 一致、数据一致。
在 ChunJun 中数据还原还会有两种场景:手动执行和自动执行,他们之间的区别在于 ChunJun 是否能解析 Source 端 DDL 语句并转为下游语法对应语句,同时下游会执行对应的 DDL。
2、DDL 解析模块介绍
由于不同的数据源之间的语法不同,在数据还原的异构数据源场景中执行 DDL 是一个难题,如何将 Source 的 DDL 语句转换为符合 Sink 语法的 DDL 语句,成为困扰许多人的问题,ChunJun 也面临着这样一个困境,为了解决这个情况,ChunJun 引入了 DDL 解析模块解决此问题。
DDL 解析模块主要解决 2 个问题
- 解析 Source 的 SQL,将其转为 ChunJun 抽取出来的公共实体类
- 将公共实体类再按照 Sink 端的语法规则转为对应的 SQL

对于 SQL 转换这一部分,我们增加了一个 DDL Convent 接口,这个接口提供了 SQL 转为公共实体类以及公共实体类转回 SQL 的功能,而具体的转换将由对应的数据源插件按照各自语法进行实现。

DDL Data 是我们抽取的一个公共层数据的顶层抽象类,由于各个数据源的语法规则不同,因此我们需要抽取一个公共层,由这个公共层进行不同数据源之间数据的转换。

为了解析 SQL 并转为公共层数据,我们引入了 Calcite 进行 SQL 的解析,不同的数据源按照对应的语法会有对应的 SQL 解析器,通过这个解析器进行 SQL 的解析,将 SQL 语句转为对应的 SQLNode,再将 SQLNode 里的信息转为中间层。
这样我们就解决了数据还原的异构数据源场景中的 DDL 语法不一致的问题。
二、ChunJun-DDL 解析模块实战
上一章节我们介绍了一些基本概念,接下来我们就来为大家实际演示一下如何操作。
- 第一步
在 ChunJun-SQL module 下,执行 mvn clean compile -DskipTest,maven 会打包出基于 Calcite 实现的解析器,各个数据源 DDL 解析模块会生成对应的解析器进行 SQL 的解析。

- 第二步
生成的解析器支持解析的 SQL 语法可以看下对应模块的 test 模块。
- 具体演示
具体的实战演示过程在公众号上不做回顾,各位社区小伙伴们可前往 B 站查看直播回顾视频。
B 站直播回顾地址:
https://www.bilibili.com/video/BV1M3411w7S3?spm_id_from=333.999.0.0
三、Calcite 在 ChunJun-DDL 中的实践应用
我们通过引入 Calcite 进行 SQL 的解析,上一章节我们对 ChunJun-DDL 解析模块进行了实战演示,接下来我们为大家分享 Calcite 在 ChunJun-DDL 中的实践应用。
- 第一步
Mavne 依赖,具体可见 ChunJun-DDL-MySQL Module 的 pom 配置。
- 第二步
Main 工程目录下添加对应的 Codegen 文件夹,里面主要由 config.fmpp(Calcite 的配置文件) 和 FTL 语法文件组成。
- 第三步
按照数据源语法编写 FTL 文件

Calcite 使用 Javacc 作为语法解析器,并且使用 Freemarker 作为模板引擎,在编译的时候,Freemarker 会将配置文件、模板语法文件、附加模板文件整体生成最终的语法文件,并通过 JavaCC 编译,形成 Calcite 的语法文件。
- 具体演示
具体的实战演示过程在公众号上不做回顾,各位社区小伙伴们可前往 B 站查看直播回顾视频。
B 站直播回顾地址:
https://www.bilibili.com/video/BV1M3411w7S3?spm_id_from=333.999.0.0
袋鼠云开源框架钉钉技术交流qun(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址: https://github.com/DTStack
边栏推荐
- Onenet Internet of things platform - mqtts product equipment connected to the platform
- 【20220605】文献翻译——虚拟现实中的可视化:一个系统的回顾
- [JS] interview questions
- Fatal error: execution: there is no such file or directory
- 单点登录SSO与JWT好文整理
- AI抠图工具
- 使用nvm管理nodejs(把高版本降级为低版本)
- 微信小程序 – 80个实用的微信小程序项目实例
- [106] 360 check font - check whether the copyright of local Fonts is commercially available
- Exploration and practice of inress in kubernetes
猜你喜欢

I wish you all a happy reunion

A hole in solder paste

Sort out relevant contents of ansible

How to install php7 and perform performance test using yum

【20211129】Jupyter Notebook远程服务器配置

【脑洞大开】《西潮》及《走向世界丛书》

STM32 project practice (1) introduction and use of photosensitive resistor

Queue operation---

BIM and safety in road maintenance-buildSmart Spain

One year anniversary of bitbear live studio, hero rally order! I invite you to take a group photo!
随机推荐
Four years after graduation: work, resign, get married, buy a house
Ansible Playbook
Chain storage of binary tree
華為面試題: 招聘
Onenet Internet of things platform - mqtt product devices send messages to message queues MQ
题目 1004: 母牛的故事(递推)
Tencent Li Wei: deeply cultivate "regulatory technology" to escort the steady and long-term development of the digital economy
Blocking sockets的读写操作该怎么玩?
Ansible相关内容梳理
MySQL data table creation
微信模拟地理位置_伪装微信地理位置
系统测试UI测试总结与问题(面试)
Teach you to complete the actual battle of image classification hand in hand -- Image Recognition Based on convolutional neural network
单点登录SSO与JWT好文整理
[Yu Yue education] financial management reference materials of Ningbo University of Finance and Economics
Ipv6-6to4 experiment
Onenet Internet of things platform - create mqtts products and devices
栈的应用——括号匹配问题
买卖其实也有风险
Typora adds watermarks to automatically uploaded pictures