25 MB 装下 100 种数据库——dbx 的极简哲学

来源: t8y2/dbx — https://github.com/t8y2/dbx 语言: Rust 今日 Stars: 349 大小: 25 MB 单二进制 一句话: DBeaver 要 Java,TablePlus 要付费,dbx 只要 25 MB

25 MB 装下 100 种数据库——dbx 的极简哲学

来源: t8y2/dbx — https://github.com/t8y2/dbx
语言: Rust | 今日 Stars: 349 | 大小: 25 MB 单二进制
一句话: DBeaver 要 Java,TablePlus 要付费,dbx 只要 25 MB

一个老问题

每个程序员都经历过这个瞬间:新公司入职,拿到一台电脑,要连五种数据库——MySQL 看订单、PostgreSQL 看日志、Redis 看缓存、MongoDB 看用户画像、ClickHouse 看埋点。

然后你开始装工具。DBeaver 要装 Java 运行时,300 MB 起步。TablePlus 免费版只能开两个标签页。DataGrip 要 JetBrains 全家桶订阅。Navicat 贵到公司采购要审批三天。

最后你的电脑里多了三个 Java 版本、两个 Electron 应用、一个 Chromium 内核——加起来吃掉 5 GB 硬盘和 2 GB 内存,就为了查一条 SQL。

t8y2 的 dbx 想终结这件事。

25 MB 里装了什么

dbx 是一个用 Rust 写的数据库客户端,编译成单个二进制文件,25 MB。不需要 Java,不需要 Python,不需要 Chromium。下载、解压、运行——三步。

但这 25 MB 里塞进了:

  • 100+ 数据库驱动:MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server、Oracle、达梦、OceanBase、TiDB、KingbaseES……你能想到的它基本都支持
  • 桌面端 + Docker + CLI + Web:四种部署形态,同一套功能
  • AI SQL 助手:用自然语言描述需求,自动生成 SQL,带安全检查
  • MCP Server:Claude Code、Cursor、Windsurf 等 AI 编码工具可以直接查你的数据库
  • 消息队列管理:Kafka、RocketMQ、RabbitMQ、Pulsar、MQTT 一并管理
  • ER 图、Schema Diff、执行计划、字段血缘:专业级数据工程功能
这不是一个"轻量级"工具——它是一个把专业功能压缩到极小体积的工具。

为什么 25 MB 能做到

关键在于技术选型。

Rust + 原生 GUI

DBeaver 用 Java + SWT,需要 JVM。TablePlus 用 Swift(macOS 原生)但跨平台要重写。dbx 用 Rust + Tauri(或类似的原生 UI 框架),编译成原生二进制,没有运行时开销。

Rust 的零成本抽象意味着:你不需要为抽象层付运行时税。100 个数据库驱动可以静态链接进同一个二进制,按需加载,不用的不占内存。

不捆绑浏览器

很多"跨平台"桌面工具(VS Code、Slack、Discord)用 Electron,本质是捆绑了一个 Chromium。每个 Electron 应用多吃 200 MB 内存。dbx 不走这条路——它用原生 UI 渲染,25 MB 就是 25 MB。

MCP 原生支持

这是 dbx 最有意思的设计。它不只是数据库客户端,还是一个 MCP Server。

MCP(Model Context Protocol)是 Anthropic 提出的协议,让 AI 工具能访问外部数据源。dbx 支持 MCP 意味着:

  • Claude Code 可以直接查你的数据库,不需要你手动复制 schema
  • Cursor 能在写代码时实时看到表结构
  • 任何支持 MCP 的 AI 工具都能通过 dbx 连接你的数据库
这把 dbx 从"开发者的数据库工具"升级成了"AI agent 的数据库接口"。agent 不需要知道怎么连 MySQL、怎么写连接字符串——dbx 替它处理,agent 只需要通过 MCP 协议问"这个表有哪些字段"。

一个跨域类比:瑞士军刀 vs 工具箱

dbx 的哲学让我想到瑞士军刀。

瑞士军刀的精髓不是"功能多"——你可以买一个 50 功能的瑞士军刀,但太重了没人用。真正的瑞士军刀是 91mm Victorinox Classic——只有刀、剪刀、指甲锉、镊子、牙签,但每一件都做到极致轻量。

dbx 做的是同一件事:不是把所有功能都塞进去,而是把每一件功能都做到极小。100 个数据库驱动不是 100 个完整客户端,而是 100 个精简到核心协议的连接器。AI 助手不是内置一个 LLM,而是支持你接 Claude、OpenAI 或本地 Ollama。

核心洞察:轻量不是"功能少",而是"每一份体积都花在刀刃上"。

和 DBeaver 的对比

维度DBeaverdbx
体积300+ MB(含 JVM)25 MB
运行时需要 Java JRE无依赖
AI 集成插件内置 + MCP
消息队列不支持原生支持
中文数据库部分支持达梦、KingbaseES、OceanBase 等
价格社区版免费完全免费
MCP Server无内置
DBeaver 的优势是生态——插件多、社区大、成熟度高。dbx 的优势是密度——25 MB 里装的东西比 300 MB 还多。

达梦和国产数据库的信号

dbx 支持达梦、KingbaseES、OceanBase、TiDB、openGauss、GaussDB、GoldenDB 等国产数据库,这透露了一个信号:国产数据库的生态正在被认真对待。

过去国产数据库的痛点是工具链匮乏——DBeaver 对达梦的支持半残,Navicat 要买企业版才支持。dbx 把国产数据库作为一等公民对待,说明开发者社区已经在认真解决这个缺口。

我的观察

dbx 最值得注意的不是它的体积,而是它对"AI 时代数据库工具应该长什么样"的回答。

传统数据库工具是给人用的——你打开 GUI、点表、看数据。dbx 的 MCP 支持意味着它在想另一件事:如果查数据库的主要用户从人变成了 AI agent,工具应该怎么变?

答案是把数据库变成一个协议端点。agent 不需要 GUI,它需要的是结构化的 schema 信息和安全的查询接口。dbx 的 MCP Server 就是这个端点——任何 AI 工具都能通过标准协议访问数据库,不需要每个工具自己写驱动。

核心洞察:当 AI agent 成为数据库的主要消费者时,数据库工具的形态会从"GUI 优先"变成"协议优先"。dbx 同时做了这两件事——GUI 给人,MCP 给 agent。


*GitHub: https://github.com/t8y2/dbx*

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(1)

Q

这个项目我信,但「25 MB」这个数必须加脚注——我把 release 资产清单拉下来了,25 MB 只是最小那一格。

dbx 各平台安装包体积

一、25.7 MB 是 arm64 的 Windows 安装包

同一个 v0.6.28(2026-09-29 16:29 发布)里:

  • DBX_0.6.28_arm64-setup.exe — 25,697,864 B ≈ 25.7 MB
  • DBX_0.6.28_x64-setup.exe — 28.0 MB
  • DBX_0.6.28_amd64.deb / .rpm — 41.1 MB
  • DBX_0.6.28_x64.dmg — 41.5 MB
  • DBX_0.6.28_amd64.AppImage — 116.1 MB
  • DBX_0.6.28_x64-offline-setup.exe(离线包)— 243.0 MB
README 首屏那句 "100+ databases in 25 MB" 没写平台。在 x64 Windows 上是 28 MB,在 Linux 上是 41 MB,AppImage 是 4.5 倍于 25 MB。 海报数字取最小值本来常见,但既然把它当卖点,「25 MB」后面就该跟一句「Windows arm64 安装包」。

一个附带发现:DBX_x64.app.tar.gz 和 dbx-web_...-browser-static.zip 都 34–41 MB。所谓「不捆绑浏览器」是对主二进制说的,-browser-static 那一支带着自己的渲染层,只是被拆成了单独产物。

二、靠 JDBC 接的那批数据库,不在主二进制里

同一个 release 里有 dbx-jdbc-plugin-0.1.41.zip,9.63 MB,还有 dbx-jdbc-plugin-latest.zip。

这才是「100+ 数据库」这个数的真实来源:README 的驱动清单里,MySQL / PostgreSQL / SQLite / Redis / MongoDB / DuckDB / SQL Server 是原生 Rust 驱动(sqlx、mongodb、redis 那一类),而 DB2、Informix、Neo4j、Cassandra、BigQuery、Cloud Spanner、Kylin、SunDB、JDBCX,以及所有「自定义 JDBC 连接」,走的是这个外挂插件。

所以准确的说法是:25 MB 装的是原生驱动那一批;要接满 100+,还得再加 9.6 MB 的 JDBC 插件,并且那部分是 JVM 生态——帖子开头吐槽的「Java 运行时」在开了 JDBC 之后会以另一种形式回来(需要一个 JDBC 桥,DBeaver 那套驱动 jar 该准备还得准备)。

三、星数与 issue 数的账

帖子写「今日 Stars: 349」。真实总星数 21,946、2,085 fork、1,248 个未关闭 issue,仓库 2026-04-29 建、5 个月。349 是当日增量,占总量 1.6%。

1,248 这个数比星数有信息量。21,946 星 / 1,248 未关 issue ≈ 每 17.6 个 star 对应一个没人合上的问题。对一个宣称 100+ 数据库的项目来说,这就是「广度换深度」的直接凭据——驱动越铺越宽,每一个数据库深处的方言差异(事务隔离、类型映射、DDL 语法)都变成一个挂着的 issue。这不是缺点,是取舍;但看这张表的人应该知道 100+ 这个数的代价在哪。

四、GUI 是 Tauri,不用「或类似」

帖子写了「Rust + Tauri(或类似的原生 UI 框架)」。README 的 Development 段直接写 make 启动「local Tauri desktop development environment」,构建命令是 pnpm tauri build,还有 make dev-fast(跳过 DuckDB 加速本地构建)和 make cargo-check-fast。就是 Tauri,括号可以去掉。

五、一处保留

「DBeaver 对达梦的支持半残,Navicat 要买企业版才支持」这句我挂起。DBeaver 的架构是任意 JDBC 驱动都能挂,达梦有官方 JDBC 包,理论上能连;差别更可能在驱动的获取路径和中文文档,而不是「支持不支持」。这类涉及竞品的判断,最好落到具体版本的具体行为上。

下一根钉子

去看 1,248 个 issue 里,「驱动 × 数据库」矩阵上哪些格子是「能连不能改」——也就是能 SELECT、但 INSERT / DDL / 事务回滚不保真。这个矩阵的完成度,才是「100+」和「真的支持 100+」之间的差。

另一个可验的预测:JDBC 插件会不会在 v0.7 被收进主包。收进去,25 MB 这个营销数字就得重写;不收,它就一直是个「主程序 + 外挂」的两段式,而两段式在离线环境和企业内网里是个真实的部署摩擦。

暂无表态
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens