为什么我又构建了另一个SQL客户端(并且开源了它)

发布: (2025年12月12日 GMT+8 20:46)
6 min read
原文: Dev.to

Source: Dev.to

封面图:为何我构建了另一个 SQL 客户端(并开源)

问题

以下是我作为开发者的典型工作流:

  1. 需要在数据库中检查某些内容
  2. 打开 SQL 客户端
  3. 等待……等待……(为什么它在加载插件?)
  4. 在 47 个菜单选项中寻找查询窗口
  5. 编写一个简单的
SELECT * FROM users LIMIT 10;
  1. 结果被工具栏、状态栏和我从不使用的面板埋在下面

每一次,都是如此。

我并不需要企业级的数据库管理工具。我需要的是:

  • 打开快 – 在 2 秒内,而不是 20 秒
  • 不妨碍我 – 查询编辑器居中显示
  • 支持多种数据库 – PostgreSQL、MySQL 和 SQL Server
  • 有键盘快捷键Cmd+Enter 运行,Cmd+K 切换
  • 外观不错 – 暗色模式在凌晨 2 点也不刺眼

现有选项

工具快吗?简单吗?多库支持?价格
pgAdmin免费
DBeaver免费
DataGrip$229/年
TablePlus$89
Postico$50

模式:

  • 免费工具 = 缓慢且臃肿
  • 快速工具 = 收费(有时仍然臃肿)
  • 简单工具 = 仅单一数据库

我想要四者兼备:快速、简洁、多库且免费(个人使用)。

迎接 data‑peek

于是我自己动手做了一个。它的哲学很简单:

简洁胜于功能堆砌。键盘优先。打开和查询都快。

它的外观

┌─────────────────────────────────────────────────────────────┐
│ [Connection ▾]                              [Settings] [AI] │
├──────────────┬──────────────────────────────────────────────┤
│              │                                              │
│  Schemas     │   SELECT * FROM users                        │
│  └─ public   │   WHERE created_at > '2024-01-01'            │
│     └─ users │   ORDER BY id DESC                           │
│     └─ posts │   LIMIT 100;                                 │
│     └─ ...   │                                              │
│              │   [Cmd+Enter to execute]                     │
│              ├──────────────────────────────────────────────│
│              │   id │ name  │ email          │ created_at   │
│              │   ───┼───────┼────────────────┼────────────  │
│              │   42 │ Alice │ alice@test.com │ 2024-03-15   │
│              │   41 │ Bob   │ bob@test.com   │ 2024-03-14   │
│              │                                              │
└──────────────┴──────────────────────────────────────────────┘

data‑peek 截图

就是这样。左侧是模式浏览器,上方是查询编辑器,下方是结果。

核心特性

包含的功能

  • 多标签查询编辑器,使用 Monaco(VS Code 的编辑器引擎)
  • 支持 PostgreSQL、MySQL、SQL Server
  • 模式资源管理器,展示表、视图、列和存储过程
  • 查询历史,记录执行时间和行数
  • 已保存查询,便于常用 SQL
  • 数据导出为 CSV 与 JSON
  • 内联编辑——直接在结果表中编辑行
  • ER 图可视化——查看表之间的关系
  • AI 助手——自然语言转 SQL(自行提供 API Key)
  • 暗色模式——因为这本该有

故意不包含的功能

  • 数据库管理工具
  • 用户管理界面
  • 备份/恢复向导
  • 47 个工具栏按钮
  • 插件系统
  • 启动闪屏
  • 功能臃肿

为什么开源?

1. 我每天都在使用开源

我的职业生涯建立在 PostgreSQL、React、TypeScript、Node.js、Linux…回馈社区很自然。

2. 透明带来信任

数据库客户端会处理凭证和数据。开源让你能够:

  • 审计代码
  • 看清凭证是如何存储的
  • 确认没有遥测或数据收集
  • 如有偏执可自行编译源码

3. 社区让它更好

已有的 Pull Request 修复了我未曾发现的 bug,并加入了我未想到的功能。

4. 可持续的商业模式

data‑peek 对个人使用 免费。商业使用需购买许可证,这使得:

  • 个人开发者可以永久免费使用
  • 受益的公司可以提供资金支持
  • 项目得以持续维护和改进

技术栈(预览)

  • Electron – 跨平台桌面(macOS、Windows、Linux)
  • React 19 – 使用现代 Hook 与并发特性构建 UI
  • TypeScript – 严格模式,因为运行时错误是我的克星
  • Zustand – 不会让我哭泣的状态管理
  • Monaco – 为 VS Code 提供动力的编辑器
  • Tailwind CSS 4 – 无需繁杂 CSS 文件的样式方案

接下来会做什么?

这是系列文章的第一篇,后续我将分享:

  • 技术栈的抉择及原因
  • 多库支持的数据库适配器模式
  • 如何在不锁厂商的前提下加入 AI
  • 使用碰撞检测实现 ER 图可视化
  • 跨方言的 SQL 解析(比想象中更难)

试一试

data‑peek 已经发布:

  • GitHub:
  • 下载: macOS、Windows、Linux 二进制文件均在 Release 中
  • 许可证: MIT(个人使用免费)

如果你尝试了,欢迎反馈。可以提交 Issue、开启讨论,或者如果觉得有用就给仓库点星。

下一篇:data‑peek 背后的技术栈——2025 年的现代桌面开发

Back to Blog

相关文章

阅读更多 »

第71天 我的学习之旅!

使用即将到来的星期三逻辑 今天的挑战是逻辑与 SQL 日期函数的有趣混合。创建一个包含姓名和预约日期的表,然后…