easydb_app
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否遇到过这样的场景:运营同学甩来一份 800MB 的 CSV,需要从里面筛出特定条件的用户数据;或者数据分析师丢来一个 Excel 文件,里面有 20 个工作表,想按某个字段汇总统计。这时候大多数人要么打开 Excel 等待卡顿,要么写个 Python 脚本临时处理。
EasyDB 提供了第三种可能:直接在本地文件上跑 SQL 查询,拖拽文件进去,自动生成查询语句,点击执行,结果直接导出——整个过程不到两分钟。
图1:EasyDB 拖拽查询操作演示
在日常工作和数据分析中,数据分散在不同格式、不同来源是常态。CSV、Excel、JSON、Parquet……每一种格式都可能承载着关键的业务数据。但要将这些数据汇聚到一起分析,往往意味着漫长的 ETL 流程:导入数据库、格式转换、字段清洗……光准备工作就耗掉了大半精力。
传统方案有几条路:
EasyDB 的作者 Cangsheng Shen 在开发 EasyDB Server(服务器版)时意识到,很多个人用户并不需要 Web 服务,他们只需要在本地电脑上快速查询本地文件。于是基于相同的 DataFusion 查询引擎,开发了 EasyDB App 桌面版。
EasyDB 桌面版的核心架构分为两层:
前端:React 18 + TypeScript + Vite 构建,使用 HeroUI 组件库提供现代化的桌面 UI。左侧是文件列表,中间是 SQL 编辑器(基于 Ace Editor,支持语法高亮和智能补全),右侧是结果展示区(基于 TanStack Table,支持虚拟滚动)。
后端:Rust + Tauri v2 构建原生桌面应用。查询引擎使用的是 Apache DataFusion(版本 50.3),这是 Apache Arrow 生态中的明星项目,最初由 Dremio 公司贡献,现已是 Apache 顶级项目。DataFusion 完全用 Rust 实现,利用 Arrow 的列式存储和向量化执行引擎,在处理 GB 级数据时依然能保持低内存占用。
值得注意的是,EasyDB 在 v1.0 版本曾使用 Polars 引擎,后来因为复杂 SQL 支持的限制,在 v2.0 切换回了 DataFusion。Polars 在流式计算方面表现更好,但 DataFusion 的 SQL 兼容性(多表 JOIN、子查询、窗口函数)更加完善,更适合通用场景。
Rust 的内存安全保证和 Tauri 的轻量级打包(相比 Electron 小很多),让 EasyDB 的安装包可以控制在很小的体积,同时运行时资源消耗极低。
EasyDB 最大的价值主张是让所有数据说同一种语言——无论数据来自 CSV、Excel 还是 MySQL,查询语法都是标准 SQL。
| 格式 | 读取函数 | 典型场景 |
|---|---|---|
| CSV | read_csv() | 业务导出的数据文件 |
| TSV | read_tsv() | Tab 分隔的实验数据 |
| Text | read_text() | 自定义分隔符的日志 |
| Excel | read_excel() | 财务/运营的多 sheets 数据 |
| JSON | read_json() | API 响应、日志 |
| NDJSON | read_ndjson() | 逐行 JSON 日志 |
| Parquet | read_parquet() | 大数据数仓导出 |
| MySQL | read_mysql() | 直连已有数据库 |
| PostgreSQL | read_postgres() | 直连已有数据库 |
最实用的功能是跨数据源 JOIN。比如你可以把一个 Excel 文件和一个 MySQL 表做联合查询:
SELECT t1.name, t2.order_total
FROM read_excel('/data/sales.xlsx', sheet_name => '2024') AS t1
INNER JOIN
read_mysql('orders', conn => 'mysql://user:pass@localhost:3306/shop') AS t2
ON t1.user_id = t2.user_id
WHERE t1.region = '华东';
这种跨格式、跨来源的统一 SQL 查询能力,是 EasyDB 与简单 CSV 查看器的根本区别。
Ace Editor 提供了专业级的 SQL 编辑体验:
read_ 系列函数名、函数参数名、查询结果列名)拖拽文件到编辑器,会自动生成对应的 read_xxx() 语句,直接修改路径即可使用。
EasyDB 是桌面应用,不提供服务器部署方案。安装非常傻瓜:
.dmg 文件,拖到应用程序文件夹即可.exe 安装包,一路下一步需要注意 macOS Gatekeeper 的安全提示,首次运行需要执行:
xattr -r -d com.apple.quarantine /Applications/EasyDB.app
如果想参与开发或基于源码定制,需要:
克隆仓库后:
yarn # 安装前端依赖
cargo tauri dev # 启动开发模式(Tauri 自动编译 Rust)
构建发布版:cargo tauri build。
作者推荐的最低配置是 4GB 内存、100MB 磁盘空间。DataFusion 引擎在处理大文件时内存占用可控——相比把整个文件加载到内存的 Pandas 方案,DataFusion 的向量化执行更省内存。
EasyDB 代表了一个趋势:数据工具的民主化。它把只有数据库才有的 SQL 能力,下沉到了普通用户日常接触的文件层面。
类似定位的工具还有:
相比这些竞品,EasyDB 的优势是多数据源 + 图形界面 + 跨表 JOIN,在易用性和功能性之间取得了较好平衡。
从增长看,625 stars 作为一个相对细分场景的工具,已经说明了它的实用价值。开源社区(尤其是 Rust 生态)的活跃,也让 DataFusion 引擎持续进化,EasyDB 可以从中受益。
路线图上值得关注的特性:
图2:项目贡献者墙
EasyDB 适合谁?
不适合谁?
核心价值一句话:把文件当数据库表,用 SQL 查询本地数据,无需安装任何数据库。
图3:EasyDB 作者 Cangsheng Shen