【技术分享】外部文件同步到数据,都有哪些便捷的技术实现方式?老码告诉你。
1. 定时Python小程序
工作内容:
采用Python脚本编程,设置系统定时任务,每1小时(用户可指定,修改)执行一次。
脚本逻辑
a) 读取指定 FTP 服务器的 Excel 文件,并结构化至内存中。(ftp 文件名称或命名规则 需约定)。
b) 读取DB 指定数据源,并结构化至内存中。
c) 将 a、b 两个内存数据进行差异化比对,分别有三种情况:一是需新增数据,二是需修改数据 ,三是需删除数据。
d) 将比对出的差异化结果,按实际要求执行 新增、修改、删除 SQL 语句,更新至 业务数据库。
优势
开发周期短、平、快。根据文件所在FTP位置,读取内存与DB数据对比差异,再更新(新增、修改或删除)差异数据。
借助系统(Linux/Win均可)定时功能,设定脚本执行周期。
问题
定制化程度高,不支持外部数据格式发生异动。
多FTP/文件,支持开发工作较大。
异常情况、处理过程,人工难介入。
大数据量同步,对内存有一定要求。
2. Kettle + DataX 平台调度
工作内容:
使用Kettle工具,离线编写(拖拽)同步执行逻辑,配置到DataX平台,设置定时任务,如每1小时执行一次。
Kettle处理逻辑
a) 数据输入,FTP连接,读取Excel 表数据;
b) 表输入,获取业务数据库指定业务表数据;
c) 记录集连接;
d)将 b 处理数据集中包含,但 a 数据集不包含的结果记录过滤出,执行 删除;
e) 将 a 数据集包含,但b数据集不包含的结果记录过滤出,执行 插入/更新。
优势
开发周期短、平、快。由Kettle进行配置读取,对比DB数据差异,再更新(处理逻辑大致一致)。
支持扩展,多FTP/多文件。
支持大数据量同步。
异常情况、处理过程,人工可查看和介入(方便配置定时任务、启动、停止及操作日志)。
问题
不支持外部数据格式发生异动。
3. Java + XXL-Job 调度
工作内容:
使用 Java 开发,编码,交由 xxl-job 做任务调度,支持web端设置定时任务规则,启动、停止和人工执行同步任务。
Java 处理逻辑,与Python小程序处理逻辑一致。
优势
自定义开发,FTP读取文件,对比DB数据查询,再更新。
支持扩展,支持多FTP/多文件。
异常情况、处理过程,人工可查看和介入(方便配置定时任务、启动、停止及操作日志)。
部署和使用均方便。
问题
不支持外部数据格式发生异动。
4. 数据平台
工作内容:
平台配置化web页面,分别配置 Ftp连接源及业务数据库数据源,设置同步规则即可。
优势
自定义大多数异构数据源。
支持用户在线配置同步节点。
异常情况、处理过程,人工可查看和介入。
各类数据功能齐全。
问题
费用高
