O SSDT é comparável ao Liquibase / Flyway, pois ele faz o que faz, mas adotando uma abordagem diferente. Com o SSDT, você tem o ambiente de desenvolvimento para obter coisas como definição, encontrar referências e inteligência, bem como a capacidade de compilar um projeto em um dacpac e, em seguida, implantar esse dacpac em um banco de dados.
A maneira SSDT (e a maneira de comparação do redgate sql) de fazer um incômodo é declarar o que você deseja, se quiser alterar uma tabela com a seguinte aparência:
create table a(id int)
para uma tabela que se parece com:
create table a(id int, another_column varchar(12))
com o SSDT, você apenas altera sua definição de tabela para a segunda e deixa o SSDT se preocupar com como atualizá-la (pode fazer uma alteração na tabela, adicionar uma coluna ou alterar a ordem da coluna para que você precise reconstruir a tabela etc).
Com o Liquibase (DbUp, ReadyRoll, métodos manuais, etc), o que você faz é, nesse caso, escrever a tabela de alteração e certificar-se de executar os scripts na ordem correta, considere este cenário:
- Release 1 - crie um olá para a coluna na tabela
- Release 2 - renomeie a coluna hello para joe_blogs
- Release 3 - renomeie a coluna joe_blogs para hello
- Release 4 - criar coluna joe_blogs
Se algum dos lançamentos estiver ausente, nenhum dos próximos poderá continuar.
Benefícios dos scripts de atualização (Liquibase, DbUp, etc):
- Você tem controle completo sobre os scripts
- DBAs / Desenvolvedores estão acostumados a isso
Benefícios da comparação / mesclagem (SSDT, Redgate SQL Compare):
- Não precisa escrever scripts de atualização
- É fácil chegar a qualquer versão específica, basta comparar e mesclar essa versão
Desvantagens dos scripts de atualização:
- Deve ser executado em ordem
- Confie nos humanos sem cometer erros
- Pode ser lento, especialmente se você tiver muitas alterações
- A menos que sua equipe tenha bancos de dados muito disciplinados em ambientes diferentes (dev, test, staging, prod etc.), muitas vezes ficam fora de sincronia, invalidando qualquer teste
- Fazer o downgrade de uma liberação significa escrever o reverso de todos os scripts que você já escreveu
Desvantagens do uso de comparação / mesclagem:
- As ferramentas não são 100% confiáveis, talvez injustamente
- O SSDT requer um projeto funcional, muitos bancos de dados possuem código que não é compilado ou executado (pense em tabelas eliminadas, mas não em procedimentos etc.), eu já vi isso em cerca de 8/10 bancos de dados que herdei :)
- Muitos DBAs / desenvolvedores hesitam em desistir do desenvolvimento no SSMS / bloco de notas
Pessoalmente, eu realmente acho que o SSDT é um ambiente de desenvolvimento profissional e isso significa que posso me concentrar em escrever códigos e testes úteis, em vez de escrever scripts de atualização que, por si só, são apenas um meio para atingir um fim.
Você pediu opiniões, então lá vai você :)
ed