Cada objeto de base de datos debe almacenarse en un archivo separado en el sistema de control de versiones. sistema de control de versiones podría contener archivos como en este ejemplo:
|- tables
|- employees.sql
|- contracts.sql
|- packages
|- contract_api.sql
|- functions
|- get_employee_name.sql
...etc...
Siempre que modifique algún objeto DB, entonces también debe modificar el archivo de SQL adecuado (DDL) en el sistema de control de versiones. Por ejemplo, si modifica el paquete contract_api, actualiza el archivo contract_api.sql. Como este archivo ha sido modificado, puede ser instalado, por ejemplo, mediante un motor de integración continua.
PERO, como usted sabe, hay scripts DDL, que no se pueden ejecutar dos veces. Por ejemplo, la secuencia de comandos 'CREATE TABLE mytable ...' se puede ejecutar solo una vez. Y si su sistema ya está en producción, entonces no puede permitirse la declaración 'DROP TABLE mytable' en el encabezado de su script 'CREATE TABLE ...'. Por lo tanto, para los sistemas de producción necesita crear los llamados delta delta que solo entregarán cambios. En este caso, simplemente podría crear un nuevo archivo llamado employees_upd01.sql que contenga la declaración 'ALTER TABLE mytable ADD COLUMN ...'.
Después de algún tiempo su repositorio podría tener este aspecto:
|- tables
|- employees.sql
|- employees_upgr20091001.sql
|- employees_upgr20091004.sql
|- contracts.sql
|- packages
|- contract_api.sql
|- functions
|- get_employee_name.sql
...etc...
Y esto está bien, porque: 1) cuando se necesita para entregar los cambios incrementales de hoy a la base de datos - implementar los archivos que fueron modificados hoy 2) si necesita implementar una instalación limpia de su sistema - ejecuta todos los scripts en orden, por ejemplo primera employees.sql, entonces employees_upgr20091001.sql, etc.
Como cada objeto de base de datos está en un archivo separado en el sistema de control de versiones, que tiene un buen control sobre todos los cambios.
¿Cómo se pone un DB bajo SC? –
Si echas un vistazo al Asistente que mencioné, crea un script con todo lo que contiene, incluidos los datos. Eso incluye SP, pero tenemos archivos separados para que sea más manejable. Usamos TortoiseSVN para controlar esos archivos. Si miras el artículo de Jeff, hay mejores maneras ... –
Te recompraría un montón de veces si pudiera, me sorprende la cantidad de gente que no trata los cambios SQL como cualquier otro código. – HLGEM