Snaplake - バックアップ復元なしで過去のDBデータを参照できるセルフホスティングツール
(snaplake.clroot.io)会社で1人開発者として複数のサーバーやサービスを管理しているのですが、ときどき「先月末時点ではこのデータはどうなっていた?」という質問を受けます。
そのたびに pg_dump バックアップを探し、臨時DBを立ち上げて、復元して、クエリを投げて、後片付けする工程を繰り返すのがとても面倒だったので、自分で作りました。
Snaplakeは、DBテーブルを定期的にParquetファイルとしてスナップショットし、バックアップを復元せずにDuckDBで直接SQL参照できるセルフホスティングツールです。
主な機能
- スナップショット取得 — PostgreSQL、MySQLのテーブルをApache Parquetファイルとして保存。Cronベースの自動スナップショットと保持ポリシー(日次/月次)をサポート
- SQLクエリ — DuckDBベースで、どの時点のスナップショットでもそのままSQL参照可能。テーブル結合、集計、CSV/JSONエクスポートに対応
- スナップショット比較 — 2時点のスナップショットを並べて行単位でdiffを確認。追加/削除/変更された行を色分け表示
- 柔軟なストレージ — ローカルファイルシステムまたはS3互換ストレージ(AWS S3、MinIOなど)
技術スタック
- Backend: Kotlin, Spring Boot 3.4, Java 21
- Query Engine: DuckDB (Parquetファイルを直接クエリ)
- Frontend: React 19, TypeScript, Vite
- メタデータ保存: SQLite
- 認証: JWT + Argon2
Dockerの1行でそのまま始められます。
docker run -d --name snaplake -p 8080:8080 -v snaplake-data:/app/data abcdkh1209/snaplake:latest
高価なデータ観測ツールの導入が難しい小規模チームや1人開発者にとって有用だと思います。フィードバック歓迎です!
- ランディング: https://snaplake.clroot.io
- GitHub: https://github.com/clroot/snaplake
- Docker Hub: https://hub.docker.com/r/abcdkh1209/snaplake
1件のコメント
シンプルだけど確かですね。面白いです!