使用 DuckDB 构建本地优先数据探索工具
Source: Dev.to
什么
我正在构建 streaksight,一款基于 GUI 的数据分析工具,可在本地机器上运行。
该项目是开源的,代码托管在 GitHub 上。
目标是尽量缩短将数据转化为洞见所需的时间。streaksight 让你能够在单一的本地应用中加载、分析和可视化数据。
注意: streaksight 仍在开发中,尚未正式发布。
您可以做什么
数据导入
只需选择文件,streaksight 即可自动检测模式并将数据导入其嵌入式数据库。目前支持 CSV 和 JSON 格式。未来计划支持以下数据来源:
- 如 AWS S3 的对象存储
- 如 MySQL 的数据库
- 如 Google Analytics 的 SaaS 平台
使用节点进行查询构建和可视化
查询可以通过连接节点来构建。执行结果实时显示,使您能够迭代探索数据、交互式获取洞察,并在此过程中不断优化查询。
Who
streaksight 最适合处理相对较小的数据集。
- 独立开发者和运营自有产品的小团队
- 想在本地分析小到中等规模日志或事件数据的人
- 想在构建全规模数据平台之前验证其数据价值的团队
为什么
我第一次在工作中调查日志时遇到了 DuckDB。它的执行速度出乎意料地快,给我留下了深刻的印象。
在那次经历之后,我开始更密切地关注 DuckDB 生态系统,特别留意 MotherDuck 和 DuckLake 等项目。
与此同时,我负责运营 BigQuery,包括成本优化工作。通过这项工作,我对构建和运营数据平台背后的技术产生了浓厚兴趣。在探索与数据基础设施相关的各种 SaaS 和 OSS 项目时,我注意到几个反复出现的问题。
问题 1:设置复杂性
大多数数据基础设施 OSS 项目专注于单一职责,并设计为可以相互组合。
- ETL:Airbyte、Apache NiFi、…
- 查询引擎:DuckDB、ClickHouse、…
- 可视化:Redash、Metabase、Apache Superset、…
这种分离提升了可扩展性和稳定性,但也增加了设置和维护成本。选择合适的工具并将它们串联起来会带来显著的额外开销,尤其是对于小规模的数据分析而言。
问题 2:构建正确查询的难度
随着 AI 的兴起,编写 SQL 查询变得更加容易。然而,调试这些查询并验证它们是否真正产生预期结果仍然困难重重。
查询是一系列集合操作和连接的组合。为了快速验证 AI 生成的查询,我觉得迫切需要一种界面,让用户能够检查中间结果,例如子查询和连接输出。
streaksight 通过在本地环境中实现快速、迭代的查询实验和结果检查,解决了这些问题,而无需组合多个工具。
技术栈
设计原则: 在单机上高效运行
- DuckDB – 一个面向 OLAP 的数据库,在单机上提供卓越性能。
- Tauri – 支持构建跨平台桌面应用;生成轻量级二进制文件,并允许前端使用网页技术构建。
- Deno.js – 一个与 Rust 项目良好集成的 JavaScript 运行时;用于让用户在无需重新构建应用的情况下添加自定义 JavaScript 插件。
- Singer.io – 在设计 ETL 插件接口时作为参考。
路线图
由于数据源差异巨大,连接器的灵活性是关键关注点。接下来的步骤是增加支持的连接器数量并完成插件接口的制定。最终目标是让用户能够使用 JavaScript 编写自定义连接器,从而直接连接各种数据源。
此外,正在探索以下功能:
- 共享洞察
- 仪表盘
- AI 集成
- 模型上下文协议
- 云集成
这些功能的范围和方向将根据实际使用案例进行细化。
结束语
如果您觉得这个项目有趣,恳请您在 GitHub 上给它点个星星,我将不胜感激。
如果您对该项目有任何疑问或反馈,请随时在此发起讨论:
https://github.com/whtsht/streaksight/discussions



