Skip to content

longkeyy/go-datax

Repository files navigation

English | 简体中文

go-datax

Go版本的DataX数据同步工具,100%兼容DataX JSON配置格式。

✨ 核心特性

  • 🚀 高性能: Go语言实现,高并发数据传输
  • 🔧 零依赖: 单二进制文件,无需额外安装
  • 📊 30+数据源: 支持主流数据库和存储系统
  • 100%兼容: 完全兼容DataX Java版配置文件
  • Go优化: 增强的splitPk支持和JSON文件处理

🆕 Go版本增强功能

非数字类型splitPk支持

与Java版本只支持数字类型splitPk不同,Go版本支持:

  • 数字类型: int, bigint, decimal等(与Java版本兼容)
  • 字符串类型: varchar, text等字符串字段分片
  • 日期类型: date, timestamp等时间字段分片
{
  "reader": {
    "parameter": {
      "splitPk": "create_time",  // 支持日期时间字段分片
      "where": "status = 'active'"
    }
  }
}

JSON文件数据源支持

新增专用JSON文件读取和写入插件:

  • JsonFileReader: 读取JSON/JSONL文件
  • JsonFileWriter: 写入JSON格式文件
  • 自动模式识别: 自动检测标准JSON vs JSONL格式
{
  "reader": {
    "name": "jsonfilereader",
    "parameter": {
      "path": ["/data/input.json"],
      "encoding": "UTF-8"
    }
  }
}

🏗️ 架构设计

采用DataX三层架构设计:

Engine Layer (引擎层)
├── JobContainer (作业容器)
└── TaskGroupContainer (任务组容器)
    ├── Reader Task (读取任务)
    ├── Channel (数据通道)
    └── Writer Task (写入任务)

📦 支持的数据源

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。

类型 数据源 Reader(读) Writer(写) 文档
关系型数据库 MySQL
PostgreSQL
Oracle
SQL Server
SQLite
OceanBase
GaussDB
Sybase ASE
大数据存储 ClickHouse
StarRocks
Apache Doris
HDFS
Databend
NoSQL数据库 MongoDB
Cassandra
Neo4j
ElasticSearch
时序数据库 TDengine
文件存储 TXT文件
JSON文件
FTP/SFTP
云存储 OSS
流数据 Stream

🚀 快速开始

安装

方式1: 下载预编译二进制

# Linux x86_64
wget https://github.com/longkeyy/go-datax/releases/latest/download/datax-linux-amd64
chmod +x datax-linux-amd64
sudo mv datax-linux-amd64 /usr/local/bin/datax

# macOS Apple Silicon
wget https://github.com/longkeyy/go-datax/releases/latest/download/datax-darwin-arm64
chmod +x datax-darwin-arm64
sudo mv datax-darwin-arm64 /usr/local/bin/datax

方式2: Docker镜像

docker pull ghcr.io/longkeyy/go-datax:latest

方式3: 源码编译

git clone https://github.com/longkeyy/go-datax.git
cd go-datax
make build

基础使用

  1. 创建配置文件 (config.json):
{
  "job": {
    "setting": {
      "speed": {
        "channel": 3
      }
    },
    "content": [{
      "reader": {
        "name": "postgresqlreader",
        "parameter": {
          "username": "postgres",
          "password": "password",
          "connection": [{
            "jdbcUrl": ["jdbc:postgresql://localhost:5432/source_db"],
            "table": ["user_table"]
          }],
          "column": ["id", "name", "email"],
          "splitPk": "id"
        }
      },
      "writer": {
        "name": "mysqlwriter",
        "parameter": {
          "username": "root",
          "password": "password",
          "connection": [{
            "jdbcUrl": "jdbc:mysql://localhost:3306/target_db",
            "table": ["user_table"]
          }],
          "column": ["id", "name", "email"]
        }
      }
    }]
  }
}
  1. 执行数据同步:
# 本地运行
./datax -job config.json

# Docker运行
docker run --rm -v $(pwd)/config.json:/config.json ghcr.io/longkeyy/go-datax:latest -job /config.json

配置参数说明

性能控制

{
  "job": {
    "setting": {
      "speed": {
        "channel": 4,        // 并发通道数
        "record": 10000,     // 记录数限制
        "byte": 1048576      // 字节数限制
      },
      "errorLimit": {
        "record": 100,       // 错误记录上限
        "percentage": 0.05   // 错误率上限
      }
    }
  }
}

数据过滤和分片

{
  "reader": {
    "parameter": {
      "where": "create_time > '2023-01-01'",
      "splitPk": "user_id",          // 支持数字、字符串、日期类型
      "fetchSize": 1024
    }
  }
}

📋 功能对比 (vs DataX Java版)

核心功能

  • 三层架构: Engine-JobContainer-TaskGroupContainer
  • 插件系统: Reader/Writer工厂模式注册
  • 数据模型: Record/Column类型系统
  • 配置管理: 100% JSON配置兼容
  • 监控统计: 实时传输监控和性能指标
  • 错误控制: errorLimit和容错机制

数据同步

  • 全量同步: 完整表数据同步
  • 增量同步: 基于WHERE条件的业务增量
  • 异构同步: 跨数据源类型同步
  • 分片并发: splitPk分片并行处理
  • 实时同步: 不支持(与Java版一致)

数据转换

  • dx_filter: 数据过滤
  • dx_substr: 字符串截取
  • dx_replace: 字符串替换
  • dx_pad: 字符串填充
  • dx_digest: 数据摘要
  • dx_groovy: 脚本转换(计划支持)

Go版本增强

  • 🚀 非数字splitPk: 支持字符串、日期类型分片
  • 🚀 JSON文件支持: JsonFileReader/Writer
  • 🚀 纯Go驱动: Oracle/Sybase无需客户端
  • 🚀 单二进制: 零依赖部署

数据源支持

  • 关系型数据库 (8个): MySQL, PostgreSQL, Oracle, SQL Server, SQLite, OceanBase, GaussDB, Sybase
  • 大数据存储 (6个): HDFS, ClickHouse, StarRocks, Doris, Databend, TDengine
  • NoSQL数据库 (4个): MongoDB, Cassandra, Neo4j, ElasticSearch
  • 文件存储 (3个): TXT文件, JSON文件, FTP/SFTP
  • 云存储 (1个): OSS
  • 流数据 (1个): Stream
  • 计划支持: HBase, MaxCompute, OTS

总计: 21种数据源,42个Reader/Writer插件

📖 文档

用户文档

开发者文档

🤝 贡献

欢迎提交Issue和Pull Request来帮助改进项目。

📄 许可证

本项目采用MIT许可证 - 详见LICENSE文件。

🔗 相关项目

About

A high-performance data synchronization framework written in Go, inspired by Alibaba DataX

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages