O que é gerenciamento de schema?
Por que isso é importante?
Tipos de abordagens para gerenciamento de schema
Imperativo
CREATE TABLE, ALTER TABLE ou DROP COLUMN, em arquivos. A ferramenta então executa os arquivos em ordem e acompanha quais já foram aplicados. Nessa categoria, você define exatamente qual SQL deve ser executado.
Exemplos: Golang Migrate, Goose e Flyway.
Declarativo
O que considerar ao escolher uma ferramenta
O que sua equipe já usa?
Qual é o processo desejado?
- Um fluxo de trabalho simples do tipo “escreva SQL, execute no CI e pronto”, como Goose ou Golang Migrate.
- Fluxos de trabalho gerenciados de aprovação, trilhas de auditoria e RBAC, como Bytebase ou Liquibase.
- Definir seu schema de forma declarativa e deixar que a ferramenta determine a diferença, como o Atlas.
Ferramentas recomendadas
Atlas
- Tipo: Declarativo
- Idioma: Go, distribuído como um único binário
- Licença e disponibilidade: Open Core; a CLI do Atlas tem uma edição comunitária Apache 2.0, mas o suporte a ClickHouse exige o plano Pro ou um período de avaliação
- Suporte a clusters: Sim
Golang Migrate
schema_migrations no seu banco de dados ClickHouse.
Por que funciona bem com o ClickHouse: É simples e flexível. Você escreve exatamente o DDL do ClickHouse que deseja executar. É um único binário Go, sem dependências em tempo de execução, o que facilita incorporá-lo a um pipeline de CI/CD ou a um contêiner Docker.
Ponto de atenção: Se um arquivo de migração contiver várias instruções e uma delas falhar no meio do processo, o banco de dados poderá ficar em um estado parcialmente aplicado que exige intervenção manual. Isso é administrável seguindo a prática de usar uma instrução por arquivo.
Melhor para: Equipes que buscam simplicidade e controle total sobre exatamente qual SQL será executado na instância do ClickHouse.
- Type: Imperativo
- Language: Go
- License: Open Source, MIT
- suporte a cluster: Sim
Goose
- Tipo: Imperativo
- Idioma: Go, distribuído como um único binário
- Licença: Código aberto, MIT
- Suporte a cluster: Não