「开源」数据同步ETL工具,支持多数据源间的增、删、改数据同步

2022-04-27 12:40:32 浏览数 (1)

一、开源项目简介

bboss数据同步可以方便地实现多种数据源之间的数据同步功能,支持增、删、改数据同步,本文为大家程序各种数据同步案例。

二、开源协议

使用Apache-2.0开源协议

三、界面展示

四、功能概述

通过bboss,可以非常方便地采集 database/mongodb/Elasticsearch/kafka/hbase/本地或者Ftp日志文件源数据,经过数据转换处理后,再推送到目标库elasticsearch/database/file/ftp/kafka/dummy/logger。

数据导入的方式

  • 支持逐条数据导入
  • 批量数据导入
  • 批量数据多线程并行导入
  • 定时全量(串行/并行)数据导入
  • 定时增量(串行/并行)数据导入
  • 支持记录切割功能

支持各种主流数据库、各种es版本以及本地/Ftp日志文件数据采集和同步、加工处理

支持从kafka接收数据;经过加工处理的数据亦可以发送到kafka;

支持将单条记录切割为多条记录;

可以将加工后的数据写入File并上传到ftp/sftp服务器;

支持备份采集完毕日志文件功能,可以指定备份文件保存时长,定期清理超过时长文件;

支持自动清理下载完毕后ftp服务器上的文件;

支持excel、csv文件采集(本地和ftp/sftp)

支持导出数据到excel和csv文件,并支持上传到ftp/sftp服务器

提供自定义处理采集数据功能,可以自行将采集的数据按照自己的要求进行处理到目的地,支持数据来源包括:database,elasticsearch,kafka,mongodb,hbase,file,ftp等,想把采集的数据保存到什么地方,有自己实现CustomOutPut接口处理即可。

支持的数据库:mysql,maridb,postgress,oracle ,sqlserver,db2,tidb,hive,mongodb、HBase等

支持的Elasticsearch版本:1.x,2.x,5.x,6.x,7.x,8.x,

支持海量PB级数据同步导入功能

支持将ip转换为对应的运营商和城市地理坐标位置信息

支持设置数据bulk导入任务结果处理回调函数,对每次bulk任务的结果进行成功和失败反馈,然后针对失败的bulk任务通过error和exception方法进行相应处理

支持以下三种作业调度机制:

  • jdk timer (内置)
  • quartz
  • xxl-job分布式调度引擎,基于分片调度机制实现海量数据快速同步能力

bboss另一个显著的特色就是直接基于java语言来编写数据同步作业程序,基于强大的java语言和第三方工具包,能够非常方便地加工和处理需要同步的源数据,然后将最终的数据保存到目标库(Elasticsearch或者数据库);同时也可以非常方便地在idea或者eclipse中调试和运行同步作业程序,调试无误后,通过bboss提供的gradle脚本,即可构建和发布出可部署到生产环境的同步作业包。因此,对广大的java程序员来说,bboss无疑是一个轻易快速上手的数据同步利器。

五、技术选型

1.准备工作

1.1 在工程中导入jdbc es maven坐标

代码语言:javascript复制
<dependency>
<groupId>com.bbossgroups.plugins</groupId>
<artifactId>bboss-elasticsearch-rest-jdbc</artifactId>
<version>6.5.2</version>
</dependency>

如果需要增量导入,还需要导入sqlite驱动:

代码语言:javascript复制
<dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.40.0</version>
      <scope>compile</scope>
 </dependency>

如果需要使用xxjob来调度作业任务,还需要导入坐标:

代码语言:javascript复制
<dependency>
      <groupId>com.xuxueli</groupId>
      <artifactId>xxl-job-core</artifactId>
      <version>2.0.2</version>
      <scope>compile</scope>
 </dependency>

本文从mysql数据库表td_cms_document导入数据到es中,除了导入上述maven坐标,还需要额外导入mysql驱动坐标(其他数据库驱动程序自行导入):mysql 5.x驱动依赖包

代码语言:javascript复制
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>

mysql 8.x驱动依赖包(mysql 8必须采用相应版本的驱动,否则不能正确运行)

代码语言:javascript复制
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>

来源:

https://www.toutiao.com/article/7072339727835677214/?log_from=553b3e02b091e_1650937215613

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

 IT大咖说  |  关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

  • 相关推荐
  • 推荐文章
  • 如何使用 SSHGUARD 阻止 SSH 暴力攻击
  • 实时时间序列异常检测
  • [开源]一套BS架构,支持PC、H5端的开源知识管理系统、知识库系统
  • 后端开发常见层式结构设计:跳表、时间轮、LSM-Tree
  • 16 个有用的带宽监控工具来分析 Linux 中的网络使用情况
  • Redis 中的过期删除策略和内存淘汰机制
  • 一个可以测试并发数和运行次数的压力测试代码
  • linux远程桌面管理工具xrdp
  • Android C 系列:NDK 减少 so 库体积方法总结
  • 阿里一面,说说你对Mysql死锁的理解

0 人点赞