Addax-开源的 ETL


该仓库名为 Addax,是一个开源的 ETL(Extract, Transform, Load)工具,其设计初衷是支持多种 SQL 和 NoSQL 数据源,以下是对该仓库的详细介绍:

项目概述

Addax 是一个可扩展的 ETL 工具,它支持 20 多种 SQL/NoSQL 数据源,是在阿里巴巴的 DataX 基础上进行分叉和演进而来的。该工具提供了一个不断发展的插件生态系统,并为数据集成提供了易于遵循的配置方式。

主要特性

  • 多数据源支持:支持 20 多种 SQL 和 NoSQL 数据源,并且易于扩展以支持更多数据源。
  • 配置简单:通过基于简单 JSON 的作业描述进行配置。
  • 积极维护:与 DataX 相比,具有改进的架构和新增功能。
  • 快速部署:提供 Docker 镜像,便于快速部署。

代码结构

仓库的主要文件和目录结构如下:

.gitignore
404.html
CHANGELOG.md
CITATION.cff
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Dockerfile
LICENSE
README.md
README_zh.md
SECURITY.md
build-docker.sh
build-module.sh
difference.md
install.sh
logo-slogan.svg
mkdocs.yml
package.xml
pom.xml
shrink_package.sh
support_data_sources.md
lib/
  addax-rdbms/
  addax-storage/
core/
  package.xml
  pom.xml
  src/
overrides/
  home.html
plugin/
  reader/
  writer/
.github/
  ISSUE_TEMPLATE/
  dependabot.yml
  workflows/
docs/
  assets/
  debug.md
  encrypt_password.md
  ...

主要模块和类

  1. JobContainer:位于 core/src/main/java/com/wgzhao/addax/core/job 目录下,是所有任务的主容器,负责作业的初始化、拆分、调度、运行、回收、监控和报告等工作,但不执行实际的数据同步操作。
  2. TaskGroupContainer:位于 core/src/main/java/com/wgzhao/addax/core/taskgroup 目录下,负责管理和执行任务组,包括任务的分配、重试和状态监控等。
  3. StorageReaderUtil:位于 lib/addax-storage/src/main/java/com/wgzhao/addax/storage/reader 目录下,提供从流中读取数据的工具方法,支持多种压缩格式。
  4. StorageWriterUtil:位于 lib/addax-storage/src/main/java/com/wgzhao/addax/storage/writer 目录下,提供将数据写入流的工具方法,支持多种压缩格式和写入模式。

文档和支持

构建和部署

  • Docker 构建:提供了 build-docker.sh 脚本,用于构建 Docker 镜像。
  • 模块构建:提供了 build-module.sh 脚本,用于构建项目模块。

贡献和反馈

  • 贡献指南:提供了贡献指南 CONTRIBUTING.md,鼓励开发者参与项目贡献。
  • 问题反馈:提供了问题模板 ISSUE_TEMPLATE,方便用户反馈问题和建议。

Github

官网