Snaplake - Alat self-hosted untuk menanyakan data DB historis tanpa memulihkan backup
(snaplake.clroot.io)Di perusahaan, saya mengelola beberapa server/layanan sebagai developer solo, dan kadang saya mendapat pertanyaan seperti, "Bagaimana kondisi data ini pada akhir bulan lalu?"
Setiap kali itu terjadi, saya harus mencari backup pg_dump, menyalakan DB sementara, memulihkannya, menjalankan query, lalu membereskannya lagi—proses berulang ini terlalu merepotkan, jadi saya membuatnya sendiri.
Snaplake adalah alat self-hosted yang secara berkala mengambil snapshot tabel DB ke file Parquet, lalu memungkinkan query SQL langsung dengan DuckDB tanpa perlu memulihkan backup.
Fitur utama
- Pengambilan snapshot — Menyimpan tabel PostgreSQL dan MySQL sebagai file Apache Parquet. Mendukung snapshot otomatis berbasis Cron dan kebijakan retensi (harian/bulanan)
- Query SQL — Berbasis DuckDB, sehingga snapshot dari titik waktu mana pun bisa langsung di-query dengan SQL. Mendukung join tabel, agregasi, dan ekspor CSV/JSON
- Perbandingan snapshot — Menempatkan snapshot dari dua titik waktu berdampingan dan menampilkan diff per baris. Baris yang ditambahkan/dihapus/diubah dibedakan dengan warna
- Penyimpanan fleksibel — Filesystem lokal atau penyimpanan kompatibel S3 (AWS S3, MinIO, dll.)
Tech stack
- Backend: Kotlin, Spring Boot 3.4, Java 21
- Query Engine: DuckDB (query langsung file Parquet)
- Frontend: React 19, TypeScript, Vite
- Penyimpanan metadata: SQLite
- Autentikasi: JWT + Argon2
Bisa langsung mulai hanya dengan satu baris Docker.
docker run -d --name snaplake -p 8080:8080 -v snaplake-data:/app/data abcdkh1209/snaplake:latest
Sepertinya ini akan berguna bagi tim kecil atau developer solo yang sulit mengadopsi alat observabilitas data yang mahal. Masukan sangat saya nantikan!
- Landing page: https://snaplake.clroot.io
- GitHub: https://github.com/clroot/snaplake
- Docker Hub: https://hub.docker.com/r/abcdkh1209/snaplake
1 komentar
Sederhana tapi meyakinkan, menarik!