SSDT es comparable a Liquibase / Flyway ya que hace lo que hacen pero adoptando un enfoque diferente. Con SSDT, tiene el entorno de desarrollo para obtener cosas como ir a la definición, encontrar referencias e intelli-sense, así como la capacidad de compilar un proyecto en un dacpac y luego implementar ese dacpac en una base de datos.
La forma SSDT (y la forma de comparación sql redgate) para hacer una liberación es declarar lo que desea, por lo que si desea cambiar una tabla que se ve así:
create table a(id int)
a una mesa que se parece a:
create table a(id int, another_column varchar(12))
con SSDT, simplemente cambia la definición de la tabla a la segunda y deja que SSDT se preocupe por cómo actualizarla (¿puede hacer una tabla alternativa, agregar una columna o cambia el orden de la columna, por lo que deberá reconstruir la tabla, etc.)?
Con Liquibase (DbUp, ReadyRoll, métodos manuales, etc.), lo que debe hacer en este caso es escribir la tabla alter usted mismo y asegurarse de ejecutar los scripts en el orden correcto, considere este escenario:
- Lanzamiento 1 - crear columna hola en la mesa
- Versión 2 - renombra la columna hola a joe_blogs
- Versión 3 - renombra la columna joe_blogs a hola
- Versión 4 - crear columna joe_blogs
Si se pierde alguno de los lanzamientos, ninguno de los siguientes puede continuar.
Beneficios de los scripts de actualización (Liquibase, DbUp, etc.):
- Tienes control total sobre los scripts
- Los DBA / Desarrolladores están acostumbrados a esto
Beneficios de comparar / fusionar (SSDT, Redgate SQL Compare):
- No tiene que escribir scripts de actualización
- Es fácil llegar a cualquier versión específica, solo compare y combine esa versión
Inconvenientes de los scripts de actualización:
- Debe ejecutarse en orden
- Confíe en los humanos sin cometer errores
- Puede ser lento, especialmente si tiene muchos cambios
- A menos que su equipo sea muy disciplinado, las bases de datos en diferentes entornos (desarrollo, prueba, preparación, producción, etc.) a menudo no están sincronizadas, lo que invalida cualquier prueba
- La degradación de una versión significa escribir el reverso de todos los scripts que ya ha escrito
Inconvenientes del uso de comparar / fusionar:
- Las herramientas no son 100% confiables, quizás injustamente
- SSDT requiere un proyecto que funcione, muchas bases de datos tienen código que realmente no se compila ni ejecuta (piense en tablas descartadas, pero no en procedimientos, etc.), lo he visto en aproximadamente 8/10 bases de datos que heredé :)
- Muchos DBA / desarrolladores dudan en abandonar el desarrollo en SSMS / bloc de notas
Personalmente, realmente creo que SSDT es un entorno de desarrollo profesional y significa que puedo concentrarme en escribir códigos y pruebas útiles en lugar de escribir scripts de actualización que son en sí mismos solo un medio para un fin.
Pediste opiniones, así que ahí vas :)
ed