Snaplake - Công cụ self-hosted để truy vấn dữ liệu DB trong quá khứ mà không cần khôi phục bản sao lưu
(snaplake.clroot.io)Tại công ty, tôi là lập trình viên solo quản lý nhiều server/dịch vụ, và thỉnh thoảng lại nhận được những câu hỏi như: "Dữ liệu này vào cuối tháng trước trông như thế nào?"
Mỗi lần như vậy, việc phải tìm bản sao lưu pg_dump, dựng một DB tạm thời, khôi phục, chạy truy vấn rồi dọn dẹp lặp đi lặp lại quá phiền phức, nên tôi đã tự làm công cụ này.
Snaplake là một công cụ self-hosted định kỳ chụp nhanh các bảng DB thành file Parquet và cho phép truy vấn SQL trực tiếp bằng DuckDB mà không cần khôi phục bản sao lưu.
Tính năng chính
- Chụp snapshot — Lưu các bảng PostgreSQL, MySQL dưới dạng file Apache Parquet. Hỗ trợ snapshot tự động dựa trên Cron và chính sách lưu giữ (hàng ngày/hàng tháng)
- Truy vấn SQL — Dựa trên DuckDB, có thể truy vấn SQL trực tiếp với snapshot ở bất kỳ thời điểm nào. Hỗ trợ join bảng, tổng hợp và xuất CSV/JSON
- So sánh snapshot — Đặt cạnh nhau snapshot của hai thời điểm để xem diff theo từng hàng. Các hàng được thêm/xóa/thay đổi được phân biệt bằng màu sắc
- Lưu trữ linh hoạt — Hệ thống tệp cục bộ hoặc storage tương thích S3 (AWS S3, MinIO, v.v.)
Stack công nghệ
- Backend: Kotlin, Spring Boot 3.4, Java 21
- Query Engine: DuckDB (truy vấn trực tiếp file Parquet)
- Frontend: React 19, TypeScript, Vite
- Lưu metadata: SQLite
- Xác thực: JWT + Argon2
Có thể bắt đầu ngay chỉ với một dòng Docker.
docker run -d --name snaplake -p 8080:8080 -v snaplake-data:/app/data abcdkh1209/snaplake:latest
Có lẽ sẽ hữu ích cho các nhóm nhỏ hoặc lập trình viên solo khó áp dụng những công cụ quan sát dữ liệu đắt đỏ. Rất mong nhận được phản hồi!
- Landing: https://snaplake.clroot.io
- GitHub: https://github.com/clroot/snaplake
- Docker Hub: https://hub.docker.com/r/abcdkh1209/snaplake
1 bình luận
Đơn giản nhưng chắc chắn, thú vị đấy!