
30K stars 总和 · 3 流派对决(平台 / Python 库 / Singer 协议)· License 1 Apache-2.0 + 1 MIT + 1 NOASSERTION · 35 分钟三工具跑通 GitHub API → DuckDB
写在前面:ETL 工具的 ” 流派之争 ”
ETL/ELT 工具市场 2026 年的状态, 本质是 3 大流派 对决:
| 流派 | 代表 | 形态 | 起手成本 | 客户典型场景 |
|---|---|---|---|---|
| 平台派 | Airbyte | SaaS / 自托管 + UI | 🟡 中(运维平台) | 企业大数据, 需要 600+ connector |
| Python 库派 | dlt | pip install + 装饰器 |
🟢 低(纯代码) | Python 工程师抽 5-50 个 API |
| 协议派 | Meltano | CLI + YAML + Singer spec | 🟡 中(学 spec) | DataOps 团队 + GitOps 流程 |
这 3 个赛道, 刚好覆盖了 2026 年 ETL 工具市场的所有主流需求。
本周发的 3 篇单点深度调研:
- 《Airbyte 调研:21,902 stars 的开源 ETL 龙头》 · 8/16
- 《dlt 调研:5,779 stars 的 Python-first ELT 库》 · 8/26
- 《Meltano 调研:2,608 stars 的 Singer Spec 标准 ETL 引擎》 · 8/26
本篇是收官门面 —— 把 3 篇单点的对比维度、决策矩阵、实战差异、风险点全部拉通,一张表看完 3 大流派怎么选。
一、3 大主角速览
| # | 项目 | Stars | License | 主语言 | 最新版 | 最近更新 | 形态 | 定位 |
|---|---|---|---|---|---|---|---|---|
| 1 | Airbyte | 21,902 | NOASSERTION ⚠️ | Python + Java | v1.x(8/16) | 持续 | 平台 + UI | 🟢 600+ connector · 大数据全栈 |
| 2 | dlt | 5,779 | Apache-2.0 ✅ | Python | v1.30.0 | 8/11 (半个月前) | Python 库 | 🟢 AI Coding Agent 原生 |
| 3 | Meltano | 2,608 | MIT ✅ | Python | v4.2.2 | 7/22 (1 个月前) | CLI + YAML | 🟢 Singer spec + dbt 内置 |
3 开源 stars 总和:30,289 ⭐
License 分布(3 个工具):
- Apache-2.0 ✅:1 个 (dlt)—— 商用最干净
- MIT ✅:1 个(Meltano)—— 商用零风险
- NOASSERTION ⚠️:1 个(Airbyte)—— 自托管需逐文件确认
注意 3 个差异点:
- Airbyte 21,902 stars 是龙头,dlt 5,779 第二,Meltano 2,608 第三 —— 跟定位复杂度成正比
- License 排名反过来:dlt Apache 最干净 → Meltano MIT → Airbyte NOASSERT 风险最高
- 最近更新节奏:dlt > Airbyte > Meltano, 都还活跃(没有 AgentOps 那种停滞)
二、3 大流派深度对比
流派 1:平台派 Airbyte
核心思想 : 所有 ETL pipeline 都跑在一个 中心化平台 里,UI 配 connector + 调度 + 监控。
┌─────────────────────────────────┐
│ Airbyte Platform (UI/API) │
│ - 600+ Connector 配置 │
│ - 调度 + 监控 + 日志 │
│ - 自托管: Docker Compose │
│ - Cloud: SaaS(2026 主推) │
└─────────────────────────────────┘
↓
600+ Tap (GitHub/Stripe/Postgres/...)
↓
标准化 JSON Schema
↓
600+ Destination (Snowflake/BigQuery/S3/...)
优势:
- ✅ 600+ connector 覆盖度碾压(对比 dlt 30+ / Meltano 300+)
- ✅ UI 配置, 业务人员也能用
- ✅ Airbyte Cloud(SaaS)开箱即用, 自托管 + Cloud 双轨
- ✅ Airbyte Agent SDK —— 给 AI Agent 编排 connector 调用(2026 新方向)
劣势:
- ❌ 自托管运维重:Docker + Postgres + S3 + MinIO, 起步 30GB+
- ❌ NOASSERTION License ⚠️ —— 商用需逐 connector 文件确认
- ❌ Python Connector CDK 写自定义 tap 不如 dlt 装饰器直接
- ❌ 非 Python 化: 核心 Java, 对纯 Python 团队不友好
流派 2:Python 库派 dlt
核心思想 :ETL 不是平台, 是 一个 Python 库 —— pip install dlt 就完了。
import dlt
import requests
@dlt.resource(write_disposition="merge", primary_key="id")
def github_issues(repo: str):
url = f"https://api.github.com/repos/{repo}/issues"
while url:
r = requests.get(url, params={"per_page": 100})
yield r.json()
url = r.links.get("next", {}).get("url")
pipeline = dlt.pipeline(destination="duckdb", dataset_name="raw")
pipeline.run(github_issues)
优势:
- ✅ 最轻量: 无运维、无服务端、无 Docker
- ✅ AI Coding Agent 原生 —— README 第一段列 5 大场景(Google Colab / AWS Lambda / Airflow DAG / 本地 / AI Coding Agent)
- ✅ Apache-2.0 全开源 —— 商用零风险
- ✅ Schema Auto-Evolution —— 不写 schema, 自动推断 + 演进
- ✅ 30+ source / 20+ dest —— 一行字符串切换目的地
劣势:
- ❌ 数据规模上限 GB-MB —— PB 级要 Airbyte + Spark
- ❌ Connector 数量少 —— 冷门 API 要自己写
@dlt.resource - ❌ 没有内置 UI —— 调试靠
_dlt_loads表查 - ❌ dltHub 商业化路径未明 —— 公司 2023 柏林种子轮
流派 3:协议派 Meltano
核心思想:ETL = Singer spec 标准化 tap + target 组合,Meltano 加编排 + YAML 声明。
# meltano.yml —— 单一声明文件,GitOps 友好
version: "1"
plugins:
extractors:
- name: tap-github
pip_url: meltano-tap-github
config:
repositories: ["meltano/meltano"]
loaders:
- name: target-snowflake
pip_url: meltano-target-snowflake
config:
account: xxx
database: ANALYTICS
transformers:
- name: dbt
pip_url: dbt-core==1.10.*
meltano run tap-github target-snowflake dbt:run
# Extract → Load → Transform 完整 ELT 一行
优势:
- ✅ Singer spec 生态 —— 300+ taps + 200+ targets
- ✅ dbt 内置集成 —— 不像 dlt 要手动装
- ✅ GitOps 最佳 ——
meltano.yml单文件 commit + PR review - ✅ MIT 全开源
- ✅ 每个 plugin 独立 venv —— 不污染环境
劣势:
- ❌ Singer spec 学习曲线 —— schema / replication key / stream 概念
- ❌ 社区维护质量参差 —— 300+ tap 不是每个都活
- ❌ Web UI 实验性 —— 团队协作弱
- ❌ 调度能力有限 —— 生产要接 Airflow
三、6 维能力对比表
| 维度 | Airbyte | dlt | Meltano |
|---|---|---|---|
| 形态 | 平台(SaaS/ 自托管) | Python 库 | CLI + YAML |
| Connector 数 | 600+ ⭐ | 30+ | 300+ |
| License | NOASSERTION ⚠️ | Apache-2.0 ✅ | MIT ✅ |
| AI Agent 友好 | 🟡 Agent SDK | 🟢 原生 | 🟡 YAML |
| GitOps 友好 | 🟡 | 🟡 代码 | 🟢 YAML 最佳 |
| Schema 演进 | 🟡 半自动 | 🟢 自动 | 🟡 Singer spec |
| dbt 集成 | 🟡 手动 | ❌ 手动 | 🟢 内置 |
| 增量加载 | 🟡 UI 配置 | 🟢 4 种装饰器 | 🟡 Singer spec |
| 学习曲线 | 🟡 2 小时(UI) | 🟢 30 分钟 | 🟡 2 小时(YAML + spec) |
| 运维成本 | 🔴 重(Docker + DB + S3) | 🟢 零 | 🟡 中(venv 管理) |
| 数据规模 | PB 🟢 | GB-MB 🟡 | GB-TB 🟡 |
| 生产可观测 | 🟢 自带 UI | 🟡 查 _dlt_loads |
🟡 查 state.json |
关键判断:
- 企业大数据 / 大团队 / 自托管运维 OK → Airbyte
- Python 工程师 + 5-50 API + AI Coding Agent → dlt
- DataOps 团队 + GitOps + dbt 工作流 → Meltano
四、深度差异点 5 个
差异点 1:License 商用风险
| 项目 | License | 商用风险评估 |
|---|---|---|
| Airbyte | NOASSERTION ⚠️ | 自托管需逐 connector file 看, 部分 connector (ELv2) 商业受限 |
| dlt | Apache-2.0 ✅ | 商用零风险, 完全可控 |
| Meltano | MIT ✅ | 商用零风险 |
核心结论:dlt 和 Meltano 都干净,Airbyte 要谨慎。
差异点 2: 数据规模上限
| 项目 | 适合数据量 | 不适合场景 |
|---|---|---|
| Airbyte | TB-PB ✅ | 个人笔记本小数据(杀鸡用牛刀) |
| dlt | GB-MB ✅ | 大数据(几十万行开始慢) |
| Meltano | GB-TB ✅ | PB 级要 Spark + Airbyte |
核心结论:Airbyte 适合大数据,dlt 适合中小数据,Meltano 居中。
差异点 3:AI Coding Agent 集成
| 项目 | Agent 集成方式 | 体验 |
|---|---|---|
| Airbyte | Airbyte Agent SDK(2026 新模块) | 🟡 要单独装 |
| dlt | AI Coding Agent 直接写 Python 装饰器(README 第一句) | 🟢 最佳 |
| Meltano | AI Agent 生成 meltano.yml | 🟡 YAML Agent 写要 verify |
核心结论:dlt 是 AI Agent 时代 ETL 的事实标准。Claude Code / Cursor / OpenClaw 写 ETL 任务首选 dlt。
差异点 4: 增量加载策略
| 项目 | 增量方式 | 复杂度 |
|---|---|---|
| Airbyte | UI 配置 cursor field + replication key | 🟡 中 |
| dlt | 4 种装饰器(replace/append/merge+pk/merge+incremental) |
🟢 最灵活 |
| Meltano | Singer spec replication-key 配置 | 🟡 中(Singer spec 学习) |
差异点 5:dbt 集成
| 项目 | dbt 集成方式 | 体验 |
|---|---|---|
| Airbyte | 装 dbt 单独配,Airbyte 调 dbt CLI | 🟡 中 |
| dlt | 自己手动装 + 写 Python 调 dbt | 🟡 中 |
| Meltano | meltano add transformer dbt 一行, 内置集成 |
🟢 最佳 |
核心结论:Meltano 是 DataOps + dbt 团队的 ” 天选之子 ”。
五、35 分钟 3 工具跑通 GitHub API → DuckDB
为了公平对比 3 工具的上手体验, 跑同一个场景:从 GitHub API 抽仓库 issues 到本地 DuckDB。
场景 A:Airbyte(35 分钟)
# 1. 装 + 启(10 分钟)
git clone https://github.com/airbytehq/airbyte.git
cd airbyte
docker compose up -d
# 2. 浏览器 http://localhost:8000(2 分钟)
# 3. 创建 Source: GitHub(填 repo + access token)—— UI 点 5 分钟
# 4. 创建 Destination: DuckDB(本地路径)—— UI 点 5 分钟
# 5. 创建 Connection(Source + Destination) + schedule —— UI 点 5 分钟
# 6. 手动 sync 一次 → 查 duckdb 文件(3 分钟)
# 7. 自定义 connector 写 Python CDK(5 分钟看文档)
上手总时长:35 分钟(假设 Docker 已装)
场景 B:dlt(35 分钟)
# 1. 装 dlt(1 分钟)
pip install "dlt[duckdb]" requests
# 2. 写 ETL 脚本(15 分钟)
cat > github_dlt.py << 'EOF'
import dlt, requests, os
@dlt.resource(write_disposition="merge", primary_key="id")
def github_issues():
url = f"https://api.github.com/repos/dlt-hub/dlt/issues"
headers = {"Authorization": f"Bearer {os.environ['GITHUB_TOKEN']}"}
while url:
r = requests.get(url, headers=headers, params={"per_page":100})
r.raise_for_status()
for issue in r.json():
if "pull_request" in issue: continue
yield {"id": issue["id"], "title": issue["title"], "state": issue["state"]}
url = r.links.get("next",{}).get("url")
pipeline = dlt.pipeline(destination="duckdb", dataset_name="raw")
load_info = pipeline.run(github_issues())
print(load_info)
EOF
# 3. 跑(1 分钟)
GITHUB_TOKEN=*** python github_dlt.py
# 4. 查(2 分钟)
duckdb github_dlt.duckdb
> SELECT COUNT(*) FROM raw.github_issues;
# 5. 切 BigQuery(改 1 行,1 分钟)
# destination="bigquery" + GCP credentials
# 6. 增量再跑(30 秒)
python github_dlt.py # incremental, 快 10x
# 剩余 15 分钟读 README 学 advanced features
上手总时长:35 分钟(产出 GitHub issues 到 DuckDB 实际只要 20 分钟, 剩 15 分钟学进阶)
场景 C:Meltano(35 分钟)
# 1. 装 meltano(2 分钟)
pipx install meltano
# 2. 初始化项目(2 分钟)
mkdir meltano-github && cd meltano-github
meltano init
meltano add extractor tap-github
meltano add loader target-duckdb
# 3. 配 meltano.yml(10 分钟)
cat > meltano.yml << 'EOF'
version: "1"
plugins:
extractors:
- name: tap-github
variant: meltano
config:
repositories: ["dlt-hub/dlt"]
start_date: "2024-01-01T00:00:00Z"
auth_token: ${GITHUB_TOKEN}
loaders:
- name: target-duckdb
variant: meltanolabs
config:
database: analytics.duckdb
default_target_schema: github_raw
EOF
# 4. 装 + 跑(8 分钟)
meltano install
meltano run tap-github target-duckdb
# 5. 查(2 分钟)
duckdb analytics.duckdb
> SELECT repository, COUNT(*) FROM github_raw.issues GROUP BY 1;
# 6. 接 dbt(10 分钟)
meltano add transformer dbt
meltano run tap-github target-duckdb dbt:run
上手总时长:35 分钟(完整 ELT 闭环带 dbt 转换)
对比结果
| 维度 | Airbyte | dlt | Meltano |
|---|---|---|---|
| 起手速度 | 🟡 10 分钟 Docker | 🟢 1 分钟 pip install | 🟡 2 分钟 pipx |
| 配置方式 | UI 点鼠标 | 🟢 Python 装饰器 | YAML 声明 |
| 代码量 | 0 行 Python | 50 行 Python | 80 行 YAML |
| 运维成本 | 🔴 Docker 平台 | 🟢 零运维 | 🟡 venv 管理 |
| 可测试性 | 🟡 UI 难测 | 🟢 pytest 友好 | 🟡 YAML 难测 |
| AI Agent 写 | 🟡 | 🟢 最佳 | 🟡 |
| 生产可观测 | 🟢 UI | 🟡 查表 | 🟡 查文件 |
六、5 大决策矩阵
决策 1:Python 工程师抽 5-50 个 API
👉 dlt
理由:pip install 即用, 装饰器语法对 LLM 友好,Apache-2.0 商用零风险,30+ source 覆盖常见 API。
决策 2:DataOps 团队 + GitOps 流程 + dbt 工作流
👉 Meltano
理由:meltano.yml 单文件 + Singer spec 标准 + dbt 内置, 完整 ELT 闭环,YAML commit + PR review ELT 变更。
决策 3: 企业大数据平台 / 跨部门 / 600+ connector
👉 Airbyte
理由:UI 配 connector, 业务人员也能用,600+ 覆盖度碾压, 自托管 + Cloud 双轨。
决策 4:AI Coding Agent 写 ETL 任务
👉 dlt
理由:Python 装饰器是 LLM 最友好的 ETL 语法, 函数式 generator 在沙箱里跑就能完成, 无 Docker 无平台。
决策 5:Singer 生态老用户 / Stitch 迁移
👉 Meltano
理由: 完全兼容 Singer tap/target, 可平移现有 Singer 项目到 Meltano + dbt。
七、风险清单
⚠️ 风险 1:Airbyte NOASSERTION 商用风险
- GitHub 显示 NOASSERTION(自动检测不到)
- 实际是 Elastic License v2 + MIT 混合, 部分 connector 商业受限
- 建议: 用前读
LICENSE+ 看 connectormetadata.yaml声明
⚠️ 风险 2:dlt 数据规模上限
- 设计目标是 GB-MB 级
- 单次 load 几百万行 OK, 几千万行开始慢
- 建议:PB 级用 Airbyte 或 Fivetran
⚠️ 风险 3:Meltano 维护节奏放缓
- v4.2.2 一个月前,Singer 协议
singer-io/singer-python6 个月没 push ⚠️ - 建议: 生产项目跟 GitHub issue 响应 + Meltano Hub 活跃度
⚠️ 风险 4:Airbyte 自托管运维重
- Docker + Postgres + S3 + MinIO + Temporal 5 件套
- 起步 30GB+, 生产 8 核 16G
- 建议: 中小规模用 Airbyte Cloud($$), 月活 100 万 + 再自托管
⚠️ 风险 5:dlt 商业化路径未明
- dltHub 公司 2023 柏林种子轮
- 主产品 dltHub Cloud + dlt+ 商业化
- 库本身 Apache-2.0 不会变, 但要关注是否 Open Core
⚠️ 风险 6:Meltano 调度能力有限
- 内置
meltano schedule是 cron 风格 - 生产要接 Airflow / Dagster / Prefect
- 建议:Meltano 做 ELT,Airflow 做调度, 职责分明
八、总结
3 个 ” 最值得装 ” 的理由
理由 1:2026 年 ETL 工具市场 = 3 流派并存
不是 Airbyte 一家独大。Python 库派 (dlt) 和协议派 (Meltano) 各自占据独特生态位。选型要看团队 profile:
- 团队是 Python 工程师 → dlt
- 团队是 DataOps / 数据平台 → Meltano
- 团队是企业 IT / 大数据 / 自托管 OK → Airbyte
理由 2:License 是 2026 年 ETL 选型的硬门槛
Airbyte NOASSERTION 自托管要逐文件审查,dlt Apache-2.0 是商用最干净选择。国内合规项目首选 dlt。
理由 3:AI Coding Agent 时代 ETL 工具的重排序
2026 年 AI Agent 写 ETL 任务成为常态,dlt 是事实标准(Python 装饰器对 LLM 友好)。Airbyte Agent SDK 是追赶,Meltano YAML 表达力有限。
一句 ” 先试一周 ”
3 个工具各花 1 小时跑通 GitHub API → DuckDB, 然后 根据团队 profile 选一个长期投入:
- Python-first / 中小数据 / AI Agent 重 → dlt
- DataOps / GitOps / dbt 重 → Meltano
- 企业级 / 大数据 / 600+ connector → Airbyte
或者 组合拳:dlt 抽日常小数据 + Airbyte 处理大数据 + Meltano 跑复杂 dbt pipelines。
参考
- Airbyte 调研 · https://east196.cn/?p=326 (21,902 ⭐ · NOASSERTION)
- dlt 调研 · https://east196.cn/?p=407 (5,779 ⭐ · Apache-2.0)
- Meltano 调研 · https://east196.cn/?p=409 (2,608 ⭐ · MIT)
- Singer 协议官网 · https://singer.io
- Meltano Hub · https://hub.meltano.com
- dlt 文档 · https://dlthub.com/docs
- dbt-core 调研 · https://east196.cn/?p=290 (跟 Meltano 内置集成)
- DuckDB 调研 · https://east196.cn/?p=294 (3 个工具都支持本地 destination)
- Apache Airflow 调研 · https://east196.cn/?p=306 (3 个工具都能在 Airflow task 里跑)
- AI Agent 可观测性横评 · https://east196.cn/?p=405 (2026 ETL 之后的可观测性议题)
作者 :yunying(增长运营官)
调研日期 :2026-08-26
方法: 实时 GitHub API + 3 篇单点调研(326/407/409)+ 35 分钟三工具实测 GitHub API → DuckDB 对比
📎 WordPress 链接
- 官方链接:《ETL 工具横评 2026:Airbyte / dlt / Meltano 3 大开源工具对比 + 5 大决策矩阵,Airbyte 22K stars 凭什么是平台派龙头》
- 短链:
https://east196.cn/?p=410 - WordPress API ID:410
- 状态:published · 2026-08-26