¿Qué es la gestión de esquemas?
¿Por qué es importante?
Tipos de enfoques para la gestión de esquemas
Imperativo
CREATE TABLE, ALTER TABLE o DROP COLUMN en archivos. Luego, la herramienta ejecuta los archivos en orden y lleva un registro de cuáles se han aplicado. En esta categoría, se define el SQL exacto que se debe ejecutar.
Ejemplos: Golang Migrate, Goose y Flyway.
Declarativo
Qué tener en cuenta al elegir una herramienta
¿Qué herramientas usa ya tu equipo?
¿Cuál es el proceso que quieres seguir?
- Un flujo de trabajo sencillo de “escribir SQL, ejecutarlo en CI y listo”, como Goose o Golang Migrate.
- Flujos de aprobación gestionados, registros de auditoría y RBAC, como Bytebase o Liquibase.
- Definir tu esquema de forma declarativa y dejar que la herramienta determine los cambios, como Atlas.
Herramientas recomendadas
Atlas
- Tipo: Declarativo
- Lenguaje: Go, distribuido como un único binario
- Licencia y disponibilidad: Open Core; Atlas CLI tiene una edición comunitaria con licencia Apache 2.0, pero la compatibilidad con ClickHouse requiere el plan Pro o un periodo de prueba
- Compatibilidad con clústeres: Sí
Golang Migrate
schema_migrations de tu base de datos ClickHouse.
Por qué funciona bien con ClickHouse: Es sencilla y flexible. Escribes exactamente el DDL de ClickHouse que quieres ejecutar. Es un único binario de Go sin dependencias en tiempo de ejecución, lo que facilita integrarlo en una pipeline de CI/CD o en un contenedor Docker.
Qué tener en cuenta: Si un archivo de migración contiene varias Sentencias y una falla a mitad del proceso, la base de datos puede quedar en un estado parcialmente aplicado que requiera intervención manual. Esto se puede gestionar siguiendo la disciplina de una Sentencia por archivo.
Ideal para: Equipos que buscan simplicidad y control total sobre el SQL exacto que se ejecuta en su instancia de ClickHouse.
- Tipo: Imperativo
- Idioma: Go
- Licencia: código abierto, MIT
- Compatibilidad con clústeres: Sí
Goose
- Tipo: Imperativo
- Idioma: Go, distribuido como un único binario
- Licencia: Código abierto, MIT
- Compatibilidad con clústeres: No