开源项目
drawdb-io/drawdb avatar
drawdb-io/drawdb

drawDB:浏览器里的数据库建模工具,能否替代桌面 ERD 软件

drawDB 是免费的浏览器数据库图表编辑器与 SQL 生成器,无需注册即可绘制 ERD、导入导出 SQL 脚本并生成迁移。

39,553 个 Star3,245 个 ForkJavaScriptAGPL-3.0

秒懂

它是什么?
drawDB 是一个开源的在线数据库 ERD 编辑器,支持 SQL 导入导出和迁移生成。本文基于其 README 与仓库信息,分析它的工作机制、部署方式、适用边界,并与桌面端工具做对比。
适合谁用?
drawDB 适合需要快速绘制 ERD、生成 SQL 脚本,且不愿注册账号的开发者。它不适合需要多人实时协作、复杂权限管理或私有化共享服务的团队,因为共享功能依赖独立部署的 drawdb-server,且仓库未提供任何版本发布记录。
能商用吗?
可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
还在维护吗?
在维护。仓库最近一次提交在 2 天前。
用什么语言写的?
主要是 JavaScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

一个不需要账号的在线 ERD 编辑器

drawDB 解决的是数据库设计中的常见痛点:画实体关系图、写 SQL 建表语句、以及生成迁移脚本。传统做法是在桌面软件里画图,再手动敲 SQL,或者反过来从现有数据库逆向生成文档。drawDB 把这两步合并到浏览器里,声称无需创建账号即可使用。它的目标用户是数据库设计者、后端开发者和教学场景中的学生。README 明确强调“Free, simple, and intuitive”,说明它刻意避开复杂建模工具的陡峭学习曲线。但免费和简单往往意味着功能边界有限,这一点在后续章节会展开。

数据流与架构:前端为主,共享靠可选服务

从仓库结构和 README 描述看,drawDB 是一个纯前端应用。核心功能,包括 ERD 绘制、SQL 导出、迁移生成,都在浏览器本地完成,不需要后端参与。这意味着用户的数据默认停留在自己的浏览器里,隐私性较好,但也意味着没有账号体系,无法跨设备同步。共享功能是例外,README 提到“If you want to enable sharing, set up the server”,它指向一个独立的 drawdb-server 仓库。共享需要部署额外的服务端,并配置环境变量,参照 `.env.sample` 文件。这种设计把核心功能与协作功能解耦,好处是核心工具保持轻量,坏处是共享能力不是开箱即用。

从克隆到运行:三种启动方式

本地开发只需三条命令:`git clone https://github.com/drawdb-io/drawdb`,`cd drawdb`,然后 `npm install`,最后 `npm run dev`。构建生产版本则把最后一步换成 `npm run build`。对于不想装 Node.js 环境的用户,Docker 提供了更直接的路径:`docker build -t drawdb .`,然后 `docker run -p 3000:80 drawdb`。容器把应用暴露在 3000 端口,内部映射到 80。需要共享功能时,必须额外部署 drawdb-server,并在环境变量中按 `.env.sample` 设置相关配置。注意 README 没有给出任何版本号或发布历史,仓库的“Recent releases”为空,这意味着你只能从 main 分支获取代码,无法锁定某个稳定版本。

SQL 生成与迁移:核心卖点,但细节未知

README 声称 drawDB 能“export and import SQL scripts”以及“generate migrations”。这是它的核心价值。但仓库里没有提供支持哪些数据库方言的列表,也没有示例 SQL 输出。无法确认它是否支持 MySQL、PostgreSQL、SQLite 等常见数据库,更无法确认方言之间的语法差异如何处理。迁移生成功能尤其需要谨慎对待,因为自动生成的迁移脚本在复杂项目中往往需要人工调整。如果你依赖精确的数据库特性,比如分区表、自定义类型或存储过程,drawDB 可能无法覆盖。在没有官方文档的情况下,建议先在测试库上验证导入导出的往返一致性。

AGPL-3.0 许可与共享服务的边界

drawDB 采用 AGPL-3.0 许可,这是一个强 copyleft 的开源许可。如果你修改了 drawDB 的源码,并通过网络提供服务,那么你有义务公开修改后的源码。对于内部使用,AGPL 通常不构成问题,但如果你打算基于 drawDB 构建商业产品,比如提供在线 ERD 服务的 SaaS,那么你需要仔细评估合规风险。共享功能依赖的 drawdb-server 是独立仓库,其许可协议未在 README 中说明,这增加了不确定性。另一个现实问题是,官方没有提供托管的共享服务,所有协作功能都需要自己部署和维护服务器,这提高了使用门槛。

与桌面 ERD 工具的对比:浏览器优势与离线劣势

与桌面端工具如 DBeaver 的 ERD 插件或专门的建模软件相比,drawDB 的核心差异在于运行环境。浏览器运行意味着无需安装,跨平台一致,且天然支持远程访问。但代价是离线能力受限,依赖浏览器性能,处理大型数据库模型时可能卡顿。桌面工具通常能直接连接数据库,实时同步 schema 变化,而 drawDB 的 README 没有提及数据库连接功能,它更像是一个独立的绘图和 SQL 生成器,而不是数据库客户端。如果你的工作流需要频繁反向工程现有数据库,drawDB 可能不是合适选择。它的定位更接近“设计先行”,而非“现有系统建模”。

维护状态与社区支持:没有发布记录的隐忧

仓库显示“Archived: no”,说明项目仍活跃,但“Recent releases”为空,这暗示项目可能不遵循常规的版本发布节奏。README 提供了 Discord 和 X(推特)链接,但未列出任何贡献者信息或贡献指南。CONTRIBUTING.md 存在,说明项目欢迎外部贡献,但缺乏版本标签意味着你无法追踪功能演进或行为变化。对于企业用户,这种不确定性是实际风险:你无法预期新功能何时到来,也无法评估升级影响。社区支持主要依靠 Discord 和 X,没有邮件列表或论坛,长期维护的可持续性存疑。

编辑结论

drawDB 适合需要快速绘制 ERD、生成 SQL 脚本,且不愿注册账号的开发者。它不适合需要多人实时协作、复杂权限管理或私有化共享服务的团队,因为共享功能依赖独立部署的 drawdb-server,且仓库未提供任何版本发布记录。采用前应先确认:你的数据库类型是否被支持,SQL 导入导出的方言兼容性是否满足需求,以及 AGPL-3.0 许可下,若修改源码并对外提供服务,是否愿意开源衍生作品。若这些条件不满足,建议继续使用桌面端工具或商业云服务。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
社区笔记

社区笔记