Snaplake - herramienta self-hosted para consultar datos históricos de la DB sin restaurar respaldos
(snaplake.clroot.io)En la empresa administro varios servidores/servicios como desarrollador individual, y a veces me hacen preguntas como: "¿Cómo estaba este dato a finales del mes pasado?"
Cada vez, tener que buscar un respaldo de pg_dump, levantar una DB temporal, restaurarla, lanzar consultas y luego limpiar todo era demasiado engorroso, así que terminé creándolo yo mismo.
Snaplake es una herramienta self-hosted que toma snapshots periódicos de tablas de DB en archivos Parquet y permite consultarlos directamente con SQL usando DuckDB, sin restaurar respaldos.
Funciones principales
- Captura de snapshots — Guarda tablas de PostgreSQL y MySQL como archivos Apache Parquet. Soporta snapshots automáticos basados en Cron y políticas de retención (diarias/mensuales)
- Consultas SQL — Basado en DuckDB, permite consultar por SQL al instante snapshots de cualquier punto en el tiempo. Se pueden hacer joins de tablas, agregaciones y exportar a CSV/JSON
- Comparación de snapshots — Coloca lado a lado snapshots de dos momentos y muestra diff por filas. Distingue con colores las filas agregadas, eliminadas o modificadas
- Almacenamiento flexible — Sistema de archivos local o almacenamiento compatible con S3 (AWS S3, MinIO, etc.)
Stack técnico
- Backend: Kotlin, Spring Boot 3.4, Java 21
- Query Engine: DuckDB (consulta directa sobre archivos Parquet)
- Frontend: React 19, TypeScript, Vite
- Almacenamiento de metadatos: SQLite
- Autenticación: JWT + Argon2
Puedes empezar de inmediato con una sola línea de Docker.
docker run -d --name snaplake -p 8080:8080 -v snaplake-data:/app/data abcdkh1209/snaplake:latest
Parece que puede ser útil para equipos pequeños o desarrolladores individuales a quienes les resulta difícil adoptar herramientas costosas de observabilidad de datos. ¡Se agradece el feedback!
- Landing: https://snaplake.clroot.io
- GitHub: https://github.com/clroot/snaplake
- Docker Hub: https://hub.docker.com/r/abcdkh1209/snaplake
1 comentarios
Es simple, pero contundente. ¡Está interesante!