论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析 ...
基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析模块的实战分享 ...
tsx81428
金牌会员
|
2022-8-21 00:38:30
|
显示全部楼层
|
阅读模式
楼主
主题
659
|
帖子
659
|
积分
1977
原文链接:
基于开源流批一体数据同步引擎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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
tsx81428
金牌会员
这个人很懒什么都没写!
楼主热帖
【pandas小技巧】--读取多个文件 ...
MySQL与Redis数据双写一致性工程落地案 ...
【参考】开发工程师职级与职级界定-职 ...
读SQL进阶教程笔记06_外连接
BinaryBombs(二进制炸弹实验) ...
mysql修改表字段长度
WPF自定义控件之消息提示
驱动开发:内核遍历进程VAD结构体 ...
8万中医药方剂数据库检索方剂大全ACCES ...
关于Validation的方法使用
标签云
挺好的
服务器
快速回复
返回顶部
返回列表