GitHub Explorer
📰 公众号已发布 2026-06-01

73K stars 反超 Airflow:Apache Superset 凭 50+ 数据库适配稳坐 ASF 数据栈门面

GitHub: https://github.com/apache/superset

一句话总结

Apache Superset 是一套”对数据库友好的开源数据可视化与探索平台”——同时具备无代码图表构建器、SQL IDE、轻量语义层和嵌入式 Dashboard,并以 50+ 种数据库方言适配作为十年来最深的护城河,是 ASF(Apache 软件基金会)数据栈对外的第一门面。

值得关注的理由

  • ASF 数据栈门面担当:73,108 stars 超越同属 Apache 的 ECharts(66.4k)、Airflow(45.6k)、Spark(43.3k),是 Apache 数据生态最显眼的招牌项目。
  • 「一人双 TLP」的稀缺起源:创始人 Maxime Beauchemin 同时是 Apache Airflow 和 Apache Superset 的缔造者——罕见的产品哲学连贯性,Preset 商业化反哺开源形成”半公开 PMC”治理。
  • AI 时代的早期卡位:2025 年末推出开源 BI 领域首个完整 MCP Service(Model Context Protocol,模型上下文协议),把 dashboard/chart/dataset 暴露给 LLM Agent 消费,是所有 OSS BI 工具里最前卫的 AI-native 尝试。

项目展示

superset-video-1080p — 官方项目概览视频(来自 README 顶部)

Gallery(可视化画廊) — 40+ 图表类型一览,体现”Rich visualizations”卖点

Dashboard(仪表板) — 仪表盘布局与原生 filter 体验

Explore(无代码图表构建) — 拖拽式无代码图表构建

SQL Lab(SQL 编辑器) — Web IDE 风格 SQL 编辑器(异步查询走 Celery + WebSocket)

项目画像

维度数据
GitHubhttps://github.com/apache/superset
Star / Fork73,108 / 17,439
Watcher / Open Issues / Open PRs1,532 / 641 / 623
主语言 / 次语言TypeScript 50%(含 TSX 27.4%)/ Python 35.2%
真实可维护代码~88 万行(剔除 i18n 与 mdx 后)
文件数8,575
项目年龄131 个月(2015-07-21 首次 commit)
LicenseApache-2.0
开发阶段繁荣期(2026-05 月均 474 commit,当前第 4 个增长高峰)
贡献模式社区驱动 + 商业化公司主导维护(Preset 7 名核心 + dependabot 2,054 次 commit)
热度定位大众热门(ASF 全项目 Star 第一)
质量评级代码 良好 / 文档 优秀 / 测试 基本(0.79 测试/源码比)

作者视角:为什么存在这个项目

创始人/作者背景

Maxime Beauchemin(GitHub: mistercrunch),2014 年在 Airbnb 担任数据基础设施负责人时,从 0 到 1 设计了内部 BI 工具 panoramix(Superset 前身)。Airbnb 的 PB 级数据栈(Airflow + Druid + Hive + Presto)和分析师协作痛点直接催生了 Superset 的功能集合。Max 的两个关键背景塑造了项目:

  1. 数据栈消费者的视角——他不是从 BI 厂商侧思考,而是从「我们这种数据团队要怎么消费自己的数据」出发,这决定了 Superset 的「不内嵌查询引擎」原则。
  2. Airflow 同源哲学——Max 同时是 Apache Airflow 的创始 PMC member(项目管理委员会成员),带来「以代码为配置、Python 优先、plugin 体系」的一致哲学,Superset 的核心抽象(plugin 三件套、Extension SDK)都能看到 Airflow 的影子。

他后来创办了 Preset(preset-io),提供 Superset 商业化 SaaS 托管和企业插件,承担了 50%+ 核心维护量(villebro 856、betodealmeida 786、michael-s-molina 784、rusackas 680 等 Preset 员工)。这种「先开源、后公司」的顺序是 Superset 社区权威的来源。

问题判断

2014 年的 BI 市场被三个选项垄断:Tableau(重客户端、单机部署、价格贵)、Looker(重实施 + LookML 闭源)、Pentaho(老旧 Java 栈)。这些工具对 Airbnb 这种「数据团队 = 数据栈消费者」的场景来说都太重、太贵、定制空间太小。Max 看到的机会窗口是:「用现代 Web 栈自研、Apache 协议开源、把 SQL 当一等公民、把宽数据库适配作为头等卖点」——一个 Tableau 太贵、Looker 太重、Pentaho 太旧的清晰市场缝隙。

解法哲学

做:Python + Flask 全栈自研、无代码 + SQL Lab 双模分析、虚拟数据集 + 轻量语义层、可编程 REST API、云原生横向扩展、插件化图表架构。

明确不做:

  • 不内嵌查询引擎(issue #241 在 2016 年就明确表态:Spark SQL backend 不在 Superset 内部跑,而是连出去)。
  • 不做 ETL/数据摄入层(不复制 Airflow 的领地)。
  • 不做 LookML 那种重量级语义建模语言(语义层是「轻量 Virtual Dataset + Metric + RLS Filter」组合,UI 可视化配置)。
  • 不在前端绑定具体图表库(从 NVD3 迁到 ECharts 是一次大型迁移,证明渲染引擎被视为可替换件)。

战略意图

Preset 提供 SaaS 托管 + 企业级插件(高级权限、审计、合规),Superset 主干保持 Apache-2.0 全部开源。这种「Open-core 边界画在 hosted SaaS + 高级权限」是平衡社区活跃度与商业收入的成熟路径。2025 年末推出的 MCP Service 是 AI 时代的卡位动作——把 dashboard/chart/dataset 暴露为 MCP tools,让 LLM Agent(Claude、Cursor 等)能直接调用 Superset 的能力。

核心价值提炼

创新之处

  1. Type-Class 数据库方言抽象(superset/db_engine_specs/base.py 2,795 行 + 50+ 子类) 把多态从调用方(if engine == "bigquery")下放到数据(每个 EngineSpec 自带 override),新增数据库 = 新增一个文件,PR diff 小、review 简单。 新颖度 ★★★ · 实用性 ★★★★★ · 可迁移性 ★★★★★

  2. 插件三件套约定(transformProps + controlPanel + buildQuery) superset-frontend/plugins/plugin-chart-echarts/ 下每个图表(Timeseries/Pie/BoxPlot…)都遵循同一约定,复制模板 + 改 transformProps 即可新增图表。 新颖度 ★★★ · 实用性 ★★★★★ · 可迁移性 ★★★★★

  3. MCP Service(首个开源 BI 的 AI 时代入场券) superset/mcp_service/ 用 @mcp.tool 把核心资源暴露给 LLM,并采用 <UNTRUSTED-CONTENT> 信任边界标签、动态 prompt 拼装、0-based 内部 / 1-based 对外等工程化 prompt injection 防御。 新颖度 ★★★★ · 实用性 ★★★★ · 可迁移性 ★★★★★

  4. Generic[T] 抽象 ModelListCore 把 8 个 MCP list tools(dashboards/charts/datasets/databases/tags/css_templates/annotation_layers/layer_annotations)的通用逻辑(filtering/select_columns/pagination/排序/隐私过滤)抽到 117 行代码。 新颖度 ★★ · 实用性 ★★★★★ · 可迁移性 ★★★★

  5. shillelagh 库:把 GSheets/CSV/Athena 暴露为 SQL 已独立成 PyPI 库,用 ADBC(Arrow Database Connectivity)抽象数据源,让”非数据库”也能参与 JOIN。 新颖度 ★★★★ · 实用性 ★★★ · 可迁移性 ★★★★

可复用的模式与技巧

  • Type-Class 模式(db_engine_specs/)→ 多 SDK 适配场景(云厂商、AI 模型、消息队列)
  • 插件三件套(plugin-chart-echarts/)→ 配置驱动的可视化/工作流/表单
  • 异步查询 + 独立 WebSocket(superset-websocket/ + Celery)→ 任何”请求-响应 > HTTP 容忍度”的服务
  • 嵌入式 SDK + Guest Token(superset-embedded-sdk/)→ Web 应用变 SaaS
  • 核心抽象先下沉再开源(superset-core/)→ 单体应用 → 平台化
  • MCP 包装现有 CRUD(mcp_service/)→ SaaS → AI-Agent 可调用(1-2 人月可复制)
  • 信任边界标签 → 所有 RAG / Agent pipeline
  • _slugify 函数专为 LLM 行为特征反向优化 → 工程级 prompt engineering

关键设计决策

决策 1:数据库方言抽象层

  • 问题:要支持 50+ 种数据库的 SQL 方言、时间粒度函数、类型映射、认证、错误归一化、SSH tunnel。
  • 方案:db_engine_specs/base.py(2,795 行)定义 BaseEngineSpec,把能力拆成可被子类 override 的 method;Presto/Trino/Snowflake/BigQuery/…各实现子类。
  • Trade-off:新增数据库成本极低,但 base.py 长期膨胀,使用方需熟悉超长基类的”魔法字段”。
  • 可迁移性:高——多后端 / 多方言 / 多 SDK 适配场景都适用。

决策 2:图表插件三件套

  • 问题:BI 工具的图表数量会随时间爆炸,NVD3 时代的硬编码 viz.py 已 488 次 commit 改动。
  • 方案:每个图表遵循 transformProps.ts(chartProps → ECharts option)+ controlPanel.tsx(UI 配置)+ buildQuery.ts(formData → 后端请求)三件套。
  • Trade-off:配置面板的 schema 写在代码里(不是 JSON Schema),动态行为需在 TSX 里手写。
  • 可迁移性:高——「配置面板 + 数据管道 + 渲染管线」解耦是普适模式。

决策 3:异步查询架构(Flask + Celery + 独立 WebSocket)

  • 问题:BI 工具经常需要跑数分钟到数小时 SQL,HTTP 长连接容易断、阻塞 Web server 进程。
  • 方案:Web 层接收请求、把查询序列化到 Redis、立即返回 query_id;Celery worker 执行 SQL、进度回写;独立 superset-websocket/ 订阅 Redis 推送状态。
  • Trade-off:组件多(多一个 worker、多一个 WS 服务、多一个 broker),运维复杂。
  • 可迁移性:高——AI 推理(Diffusion / 视频生成)、ETL 触发、报表生成都适用。

决策 4:MCP Service

  • 问题:传统 REST API 是为人类 UI 设计的;LLM Agent 调用时参数语义不清、缺少 LLM-friendly 元数据。
  • 方案:superset/mcp_service/ 是一套独立 FastMCP server(915+841+846+571+142 行),用 @mcp.tool 暴露核心资源;生成式 system prompt(按 disabled_tools 动态拼装)、<UNTRUSTED-CONTENT> 信任边界、Generic[T] 抽象。
  • Trade-off:MCP service 必须和主 Superset 部署并行启动(superset mcp run),增加部署面。
  • 可迁移性:极高——对所有 SaaS 都有价值的”AI 时代打包”模式,1-2 人月可让任意 SaaS 拥有”AI Agent 可调”能力。

决策 5:嵌入式 Dashboard 架构

  • 问题:第三方 SaaS 应用希望把 Superset Dashboard 嵌入到自己的页面里,但 Superset 主站是 full-page 体验,直接 iframe 会暴露所有 chrome。
  • 方案:独立子仓库 superset-embedded-sdk/(一个 embedDashboard() 方法)+ 独立打包 superset-frontend/src/embedded/(与主站 chunk 分离)+ Guest 角色 + 短期 JWT Token。
  • 可迁移性:高——任何”有完整 chrome 的 Web 应用”做嵌入式打包的标准范式。

决策 6:核心抽象下沉到 superset-core 子包

  • 问题:从 v5.x/6.x 引入”Extensions”概念(第三方可独立打包 Superset extension 而无需 fork 主仓库)。
  • 方案:核心常量、扩展协议、MCP、查询层、REST API 全部移到 superset-core/ 子包,作为独立 PyPI 包发布;superset-extensions-cli/ 提供 superset-extensions build/publish 命令。
  • 可迁移性:高——所有”想从应用变平台”的团队都走过这条路(Notion、Linear、Airtable)。

竞品格局与定位

竞品对比矩阵

维度Apache SupersetMetabaseRedashTableauLooker
广数据库适配★★★★★(50+)★★★(15+)★★★★(30+,偏 SQL)★★★(JDBC)★★★(专用连接器)
轻量化部署★★★★(Docker 一行)★★★★★(最易部署)★★★★★(轻量)★★(重客户端)★★(重服务)
语义层★★★(轻量 Virtual Dataset)★★(自建 Model)✗★★★(计算字段)★★★★★(LookML 重量级)
嵌入式★★★★★(独立 SDK + Guest token)★★★(付费 Pro/Enterprise)✗★★★(JS API)★★★★(Looker Embed)
SQL Lab 体验★★★★★(Web IDE + 异步)★★(原生查询器)★★★★★(SQL Lab 形态)✗★★(LookML 优先)
AI 集成★★★★★(首个开源 MCP)★★(Metabot 实验)✗★★★(Tableau GPT)★★★(Looker 接入 Gemini)
商业化模型Open-core + Preset SaaSOpen-core + Metabase CloudOSS(弱维护)闭源企业版闭源企业版

差异化护城河

  1. 50+ 数据库方言的十年积累——不是图表功能,不是炫酷 UI,而是「我连得上的数据库比对手多」。db_engine_specs/ 50+ 文件就是 10 年沉淀的护城河,竞品短期无法复制。
  2. Apache 治理 + Preset 商业化反哺——Open-core 边界画在 hosted SaaS + 高级权限,平衡社区活跃度与商业收入。
  3. AI-MCP 卡位——2025 末是首个开源 BI 的 AI 时代入场券,1-2 人月可让任意 SaaS 复制,但「先发位置」本身有价值。

竞争风险

  • Metabase——更易上手、社区同样庞大(38k stars),可能在中型企业市场分食 Superset 的份额;但其数据库适配和可编程性明显落后。
  • AI 协议不确定性——MCP 协议 2025 末才标准化,押注的”AI Agent 入口”是否成为主流取决于协议本身的成败。

生态定位

在整个数据技术生态中,Superset 扮演「Apache 数据栈(Kafka → Flink → Druid → Superset)最后一公里的 UI」角色,填补「开源、可商用、宽数据库适配、企业级 RLS/RBAC、嵌入式」五个特性兼具的空白。同 Apache ECharts(66.4k stars,渲染内核)和 Apache Druid/Pinot/Impala/Hive(查询引擎四件套)形成兄弟项目协同。

套利机会分析

  • 信息差:Superset 在中文技术社区关注度相对其地位(73k stars、ASF 第一)严重被低估,是「被低估的高质量基础设施」典型。
  • 技术借鉴:
    • Type-Class 模式可迁移到任何多 SDK 适配场景(云厂商、AI 模型网关、消息队列客户端)
    • 插件三件套可迁移到任何配置驱动的可视化/工作流/表单产品
    • MCP 包装现有 CRUD 是性价比最高的 SaaS AI 化卡位(1-2 人月)
    • 异步查询 + 独立 WebSocket 分离是所有”请求-响应 > HTTP 容忍度”服务的标准解法
  • 生态位:填补「开源 + Apache 协议 + 50+ 数据库 + 企业级 RLS + 嵌入式 + AI 友好」六位一体的 BI 工具空白。
  • 趋势判断:处于第 4 个增长高峰(2026 年月均 350+ commit,2026-05 达到 474 次峰值),AI 时代 MCP 卡位是显著后发优势,比商业 BI 厂商有 6-12 个月的先发窗口。

风险与不足

  • 重构债:superset/views/core.py 769 次 commit 是”接口稳定但内部腐烂”的典型;superset-frontend/webpack.config.js 148 次 commit 表明构建系统长期挣扎。
  • 前端目录分层混乱:superset/assets/(旧 Flask-Assets)与 superset-frontend/(新 npm workspaces)并存,是历史包袱。
  • refactor 占比仅 5.1%——技术债累积偏快,与 Maxime 离开 Lyft 后的”维护驱动”节奏吻合。
  • AI 协议不确定性:MCP 协议标准化时间短,是否成为主流取决于生态采纳速度。
  • Preset 主导维护的双刃剑:单一公司占主导 PMC 让决策快,但也让社区担忧”是否真的中立”。

行动建议

  • 如果你要用它:作为大企业数据平台团队的 BI 基础设施,优势是 Apache 协议可商用、50+ 数据库适配、企业级 RLS/RBAC、嵌入式能力。需要评估团队对 Python 全栈的运维能力(多个独立子服务、依赖管理复杂)。
  • 如果你要学它:
    • 重点关注 superset/db_engine_specs/base.py 2,795 行——Type-Class 模式范本
    • superset-frontend/plugins/plugin-chart-echarts/ ——插件三件套范本
    • superset/mcp_service/ ——AI 时代 MCP 范本
    • superset-core/ 子包——核心抽象下沉范本
  • 如果你要 fork 它:
    • 可以移除 ECharts 依赖改用自研渲染引擎(保留 plugin 三件套接口)
    • 可以精简数据库方言(仅保留 Presto/Trino/BigQuery 三件套)
    • 可以把 MCP Service 抽出来作为独立 SaaS 的”AI 入口包”

知识入口

资源链接
DeepWikihttps://deepwiki.com/apache/superset
Zread.aihttps://zread.ai/apache/superset
关联论文无
在线 Demohttps://superset.apache.org/docs/intro(官方提供的 Demo 部署指引)
官方文档https://superset.apache.org/docs/intro
商业化 SaaShttps://preset.io/

相关报告