BerryDB:用 Swift 和 AppKit 编写的开源 macOS 数据库客户端
Show HN: BerryDB – Open-source macOS database client written in Swift and AppKit
BerryDB 是一款用 Swift 6、SwiftUI 和 AppKit 原生构建的开源 macOS 数据库客户端,冷启动约 0.85 秒,流式读取 100 万行峰值内存约 5.5MB。
📖 概述
BerryDB 是一款超快速、轻量且现代的数据库管理工具,专为 macOS 开发者、数据工程师和 DBA 打造。它使用 Swift 6、SwiftUI 和 AppKit 100% 原生构建,彻底消除了基于 Electron 的客户端的臃肿、卡顿和高内存占用。
无论你是在查询生产环境的 PostgreSQL 数据库、检查 Redis 缓存、管理 MongoDB 集合、探索 Qdrant 向量空间,还是在本地查询 SQLite 文件,BerryDB 都能凭借 Apple Keychain 安全隔区提供即时响应。
✨ 主要功能
⚡ 纯原生速度(零 Electron 臃肿)
- 快速启动:冷启动后约 0.85 秒窗口即出现在屏幕上——没有 Chromium 运行时,没有 NodeJS 后端开销。
- 内存不随数据增长:流式处理 1,000,000 行数据峰值内存约 5.5MB——与 200,000 行时相同。
- AppKit 虚拟化数据网格:原生
NSTableView引擎,可滚动和流式加载 1,000,000+ 行,而无需将它们全部保存在内存中。
在 Apple M1(16GB,macOS 26.6.2)上使用 release 构建测得。运行
scripts/measure-performance.sh可在你自己的机器上复现这些数据——它会分别报告进程启动和首个窗口的时间,因为这两个数字并不相同。
🗄️ 多引擎数据库支持
在统一的原生工作区中连接 SQL、NoSQL、键值和向量数据库:
- Relational / SQL:
- PostgreSQL:原生线协议(
PostgresNIO),通过pg_cancel_backend取消查询,SSL/TLS。 - MySQL & MariaDB:原生驱动(
MySQLNIO),完整支持caching_sha2_password和mysql_native_password,SSL/TLS,KILL QUERY。 - SQLite:通过
libsqlite3直接嵌入式驱动,支持 WAL 模式,即时文件检查。 - Microsoft SQL Server:通过动态链接的 FreeTDS(
libsybdb)实现高兼容性 TDS 协议桥接。
- PostgreSQL:原生线协议(
- In-Memory & Key-Value:
- Redis & Valkey:高速 Valkey-Swift 驱动、键浏览器、实时 TTL 检查,以及针对 Strings、Hashes、Lists、Sets 和 Sorted Sets 的交互式查看器。
- Document & Cloud NoSQL:
- MongoDB:集合浏览器、JSON 文档编辑器、自定义过滤语法,以及副本集支持。
- AWS DynamoDB:通过 PartiQL 语法查询、条目检查,以及 AWS SigV4 身份验证。
- Vector & Full-Text Search:
- Elasticsearch:集群健康监控、索引浏览器,以及搜索查询执行。
- Qdrant:向量集合浏览器和距离度量检查器。
🔒 Apple Keychain 安全隔区与企业级安全
- 硬件安全隔区:所有密码、令牌和 SSH 密钥都直接存储在 macOS Keychain 中。磁盘上无明文凭据。
- 内置 SSH 隧道:由 Citadel(纯 Swift SSH 客户端)提供支持,无需依赖外部终端会话即可安全连接堡垒机跳板主机。
- TLS/SSL 加密:完整加密支持,可自定义 CA、客户端证书和验证选项。
🤖 智能 AI SQL Copilot
- 上下文感知 SQL 生成:通过自动注入数据库 schema,将自然语言转换为优化的 SQL 查询。
- 查询解释与调优:即时
EXPLAIN分析、瓶颈检测和索引建议。 - 与你的数据库对话:直接在集成的 AI 面板中询问有关 schema、表和关系的问题。
📊 数据库智能与 ER 图
- Mermaid.js ER 图:根据你的数据库 schema 自动生成可交互的实体关系可视化图。
- 表分析与健康度:实时表大小、索引使用统计和行数估算。
- 持久化查询历史:可搜索的查询日志,包含执行时长、行数和一键重新运行。
✏️ 专业查询编辑器与内联数据编辑
- 原子内联编辑:直接在网格中编辑表格单元格,支持暂存差异审阅和原子提交。
- 代码编辑器:SQL 语法高亮、关键字自动补全、行号和多个标签页会话。
- 查询取消:安全取消长时间运行的查询,不会挂起或导致应用崩溃。
📊 数据库兼容性矩阵
| 数据库引擎 | 驱动 / 协议 | 直连 | SSH 隧道 | 内联网格编辑 | Schema / ERD |
|---|---|---|---|---|---|
| PostgreSQL(12–16+) | 纯 Swift(PostgresNIO) |
✅ | ✅ | ✅ | ✅ |
| MySQL / MariaDB(5.7、8.x) | 纯 Swift(MySQLNIO) |
✅ | ✅ | ✅ | ✅ |
| SQLite(3.x) | 嵌入式(libsqlite3) |
✅ | 不适用 | ✅ | ✅ |
| Microsoft SQL Server(2017+) | FreeTDS(libsybdb) |
✅ | ✅ | ✅ | ✅ |
| Redis / Valkey(6.x–8.x) | 纯 Swift(valkey-swift) |
✅ | ✅ | ✅(KV 编辑器) | ✅(键空间) |
| MongoDB(5.x–7.x) | 纯 Swift(MongoWireClient) |
✅ | ✅ | ✅(JSON 编辑) | ✅(集合) |
| AWS DynamoDB | AWS REST + SigV4 | ✅ | ✅ | ✅ | ✅(表) |
| Elasticsearch(7.x–8.x) | REST 客户端 | ✅ | ✅ | 👁️(读取/搜索) | ✅(索引) |
| Qdrant | REST 客户端 | ✅ | ✅ | 👁️(读取/搜索) | ✅(集合) |
🚀 安装与快速开始
方式 1:通过 Homebrew 安装(推荐)
使用官方 Homebrew tap,一条命令即可安装 BerryDB:
brew install --cask berry-apps/tap/berrydb
或者先添加 tap 再安装:
brew tap berry-apps/tap brew install --cask berrydb
方式 2:下载预构建 DMG
- 从 download-db.berryhub.app/BerryDB-latest.dmg(或从 GitHub Releases)下载最新版本
.dmg。 - 打开
.dmg文件,将 BerryDB.app 拖入你的 Applications 文件夹。 - 从 Spotlight(⌘Space)或 Launchpad 启动 BerryDB。
系统要求:macOS 15.0(Sequoia)或更高版本。仅支持 Apple Silicon(M1/M2/M3/M4)。
方式 3:从源码构建
BerryDB 使用标准的 Swift Package Manager(SPM)和 make。
前置条件
- macOS 15.0 或更高版本
- Xcode 16.0+(含 Swift 6 工具链)
- FreeTDS 库:
brew install freetds(FreeTDS / SQL Server C 头文件所需)
构建步骤
# 1. Clone repository git clone https://github.com/berry-apps/berrydb-desktop.git cd berrydb-desktop # 2. Setup local development configuration cp .env.example .env # 3. Build debug bundle and launch application make run
可用的 Make 命令
| 命令 | 说明 |
|---|---|
make run |
构建调试版应用包,打包为 dist/BerryDB.app,并启动。 |
make watch |
监听文件变更,自动重新构建并重新加载应用。 |
make test |
运行完整的 Swift 单元测试和集成测试套件。 |
make app |
在 dist/BerryDB.app 中构建优化后的发布版应用包。 |
🎯 用户指南
1. 添加数据库连接
- 点击 New Connection(⌘N),或选择侧边栏中的
+按钮。 - 选择你的数据库类型(PostgreSQL、MySQL、SQLite、Redis、MongoDB、SQL Server 等)。
- Enter your connection credentials (Host, Port, User, Password, Database).
- 可选:开启 SSH Tunnel,通过跳板服务器转发流量。
- 可选:开启 SSL/TLS 以实现安全加密连接。
- 点击 Test Connection 验证连通性,然后点击 Save。密码会安全加密保存在你的 macOS 钥匙串中。
2. 浏览 Schema 与 ER 图
- 使用侧边栏的 schema 树浏览表、视图、列、键和索引。
- 右键点击任意表并选择 Show ER Diagram,查看通过 Mermaid.js 渲染的外键关系。
3. 编写查询与使用 AI Copilot
- 按 ⌘T 打开新的查询编辑器标签页。
- 输入 SQL 查询时会提供关键字补全,然后按 ⌘Return 执行。
- Open the AI Assistant panel (or press ⌘J):
- 输入自然语言提示,例如 "显示本月收入排名前 10 的客户" 或 "查找慢查询并建议索引优化"。
- 查看生成的 SQL,然后点击 Run 或 Insert to Editor。
4. 直接在网格中编辑数据
- 双击
NSTableView数据网格中的任意单元格即可就地编辑值。 - 已编辑的行会以琥珀色高亮显示。点击 Apply Changes 以原子方式提交,或点击 Discard 还原。
☕ 支持本项目(捐赠)
BerryDB 的所有本地数据库管理功能完全免费且开源。如果 BerryDB 为你节省了时间、提升了工作流程,或替代了昂贵的订阅工具,不妨请创作者喝杯咖啡:
👉 https://ko-fi.com/dautay
你的支持有助于支付 Apple Developer 计划费用、维护服务器基础设施,并推动功能的持续开发!
🤝 贡献
欢迎贡献、提交问题和功能请求!
- Fork 该仓库。
- 创建你的功能分支(
git checkout -b feature/AmazingFeature)。 - 提交你的更改(
git commit -m 'feat: add amazing feature')。 - 推送到该分支(
git push origin feature/AmazingFeature)。 - 发起 Pull Request。
📄 许可证与第三方声明
BerryDB 是根据 Apache License 2.0 许可的开源软件——可免费用于个人和商业用途。
有关详细的第三方归属和合规信息(包括 FreeTDS 的 LGPL-2.1 动态链接合规),请参阅 THIRD-PARTY-NOTICES.md。
来源:Hacker News · github.com