网站首页 > 技术文章 正文
我们系统的基础数据存放在EBS中,的有个基础数据同步功能,因为变化频率比较低,所以采用定时加手动的方式同步,每日凌晨三点由ETL工具同步到我们中间表,然后存储过程再处理数据。手动则是程序调用Kettle脚本同步数据到中间表没然后执行存储过程。刚开始上线时,量较小,也就几万条数据,手动同步比较快,越到后期,数据量逐渐增多,达到一百多万的基础数据,通过Kettle同步一次得花十多分钟。业务方实在无法忍受,要求我们必须优化。
当初使用Kettle的原因是处于简单、易操作,通过可视化界面先设计好脚本,获取到ktr的脚本文件,然后在程序中引入kettle-engine、metastore、kettle-core这三个kettle相关的包即可在Java程序中执行kettle的ktr脚本。当数据量上来后,Kettle确实有些力不从心了,所以,我们就换成了阿里开源的DataX。那我们就来尝试下如何整合到程序中吧?
我这边的编译环境是:Windows10、JDK1.8、Apache Maven 3.6.3,运行环境是Linux version 3.10.0-957.el7.x86_64 ,Python为Linux自带的2.7.5,JDK为1.8。
先去Github下载源码到本地使用mvn -U clean package assembly:assembly -Dmaven.test.skip=true进行编译.
编译好的压缩包有1.32GB,我们将其上传到服务器上。上传后解压,如果本机有Python环境,则不需上传。先用Python生成同步脚本模版,python datax.py -r {YOUR_READER} -w {YOUR_WRITER},我这里是从Oracle到Oracle,进入到datax->bin目录中执行如下脚本:
|
|
最终会生成如下模版,
我们根据自己的情况,修改即可。接下来,就是在Spring Boot中调用DataX来同步数据了。首先引入Jar
|
|
由于DataX相关的包在Maven仓库中不存在,那么只有上传到个人仓库或者直接引用本地包,我选择了后者,这几个包在编译好的datax目录中可以找到。接下来,我们编写调用代码:
|
|
我来看一下运行效果:
|
|
可以看到1335288条数据,60秒便同步完成。相较之前的Kettle,同步速度提升了8-10倍,而且,可以按不同组织进行同步,每个组织的数据最多也就十多万,通过DataX同步也就十几秒,业务也能够接受这个速度。为什么非要把Kettle换为DataX,这就是我自身原因,不知如何对Kettle进行调优来提升同步速度,有经验的朋友还请告知。
猜你喜欢
- 2025-07-17 每天从外包系统同步百万数据,用什么方案?Java实战讲解
- 2025-07-17 搞懂java同步块(synchronized),避免踩坑
- 2025-07-17 OceanBase 推出单机版 高度兼容MySQL和Oracle
- 2025-07-17 用DataX实现两个MySQL实例间的数据同步
- 2025-07-17 【mykit-data】 数据库同步工具(数据库间数据同步)
- 2025-07-17 从 PostgreSQL 到 DolphinDB:数据实时同步一站式解决方案
- 2025-07-17 什么是实时数据同步?纯干货解读!(什么是实时数据传输)
- 2025-07-17 通过ETL工具完成达梦数据库数据同步至数仓Oracle的具体实现
- 2024-10-22 一键实现 Oracle 数据整库同步至 Apache Doris
- 2024-10-22 Oracle OGG 单向DML同步 oracle的ogg同步
你 发表评论:
欢迎- 633℃几个Oracle空值处理函数 oracle处理null值的函数
- 626℃Oracle分析函数之Lag和Lead()使用
- 614℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 609℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 606℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 599℃【数据统计分析】详解Oracle分组函数之CUBE
- 588℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 574℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- CVE-2025-30762|Oracle(java oracle)
- 低代码可能铲不掉“屎山”,但能让这个它更有「型」
- 科技大事件:新苹果手表可通过击掌或握手来传递信息
- 你的百万级上下文窗口大模型,可能并没有你想象中那么强
- DApp 开发中的安全测试(软件测试过程中安全测试的具体应用场景和测试思路)
- 盘点Java中最没用的知识⑧:这3个过时套路,你还在代码里硬撑?
- 机房硬件设备及Oracle数据库软件维护服务项目竞争性磋商公告
- 微软与甲骨文扩大合作关系,推出Oracle Database@Azure
- JPA实体类注解,看这篇就全会了(java实体类注解)
- Java反射机制最全详解(图文全面总结)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)