2010-06-07 13 views
5

Ahora tengo un proyecto de PHP y rastreo todos los cambios en el código por SVN. También me gustaría hacer un seguimiento de los cambios realizados en la estructura de la base de datos.Herramienta correcta para rastrear cambios en la estructura de DB

¿Cuál es la herramienta correcta para usar?

+0

¡Buena pregunta! Sería útil tener un script estándar para eso. – powtac

+0

Para un RDBMS específico, en caso afirmativo, ¿cuál? ¿O uno genérico? He utilizado un script PHP para PostgreSQL en el pasado (pero no puedo recordar el nombre), solo cubría nuevas columnas y cambios de columnas a través de IIRC, pero no eliminé los eliminados. – wimvds

+1

Ok, solo eché un vistazo a mi archivo: p. El script en cuestión era [Zongle] (http://zongle.sourceforge.net/), y no cubría los cambios de columnas, solo las adiciones a columnas ... ¿Es algo similar que estás buscando? – wimvds

Respuesta

1

Existen diferentes tipos de herramientas para rastrear cambios en la estructura de la base de datos.

uno muy bueno es Workbench mysql: http://www.mysql.com/products/workbench/

se puede modelizar su base de datos con esta herramienta para poder actualizarlo con la sincronización a.

Un otro tipo de herramienta que mi ser perfecto para SVN: PHP migraciones

http://code.google.com/p/mysql-php-migrations/

Con esta herramienta se crean diferentes guiones: 001_initial.php 002_changes.php por ejemplo.

y cuando se ejecuta la herramienta, se aplicará los archivos que no se aplicaron para hacer su esquema hasta la fecha.

Espero que esto te ayude.

1

Normalmente tengo un script php que uso para crear la estructura de la base de datos durante el proceso de instalación y la fase de prueba.

Me resulta muy útil tener la derecha por el repositorio SVN que realizar un seguimiento de todo el proyecto (que tiene los cambios relacionados con los cambios de código base de forma automática).

2

por lo general resolver esto con la base de datos con guión vertederos, que contiene las definiciones de tabla y todas las otras cosas que podría estar interesado. Esto incluso manejar los datos en sí, si su base de datos no es demasiado grande.

Para un enfoque más sistemático, se puede echar un vistazo a Liquibase. No lo he probado por mi mismo, así que no puedo comentar sobre la usabilidad práctica, pero parece que podría ser una herramienta muy valiosa para el control de versiones de DB.

0

Para los cambios de base de datos, hemos (tenía, ya no trabaja allí) un directorio en el VCS:

+ dbchanges 
|_ 01_database 
|_ 02_table 
|_ 03_data 
|_ 04_constraints 
|_ 05_functions 
|_ 06_triggers 
|_ 07_indexes 

Cuando se realiza un cambio en la base de datos se pone el cambio en un archivo .sql, en el directorio correcto con la fecha y hora actual como el nombre del archivo. Cuando desee actualizar su base de datos, ejecute el script de integración, que pasa por estos directorios en orden, e importe cada cambio en el db.

Los directorios se nombran de esta manera, para asegurarse de que el orden en que se ejecutan los scripts es correcto. (Entonces, la secuencia de comandos que intenta insertar datos en una tabla, no se ejecutará antes de la secuencia de comandos que crea dicha tabla)

Los archivos sql tienen que tener que comenzar con un comentario, que se muestra al usuario cuando la integración script importa el cambio, describiendo lo que hace. Registra cada nombre de archivo SQL importado en un archivo, por lo que cuando ejecute el script la próxima vez, no volverá a aplicar el mismo cambio.

Los inconvenientes son que esto no admite retrocesos, ya que tendría que almacenar las inversas de las operaciones, y para algunas operaciones esto no es posible, como DELETE.El otro inconveniente es que si de alguna manera pierde el archivo que rastrea los cambios ya aplicados, debe volver a crear su base de datos desde cero.

0

Eche un vistazo a Liquibase.

Es un muy buen software de gestión de cambio de base de datos. Aunque es un poco difícil de implementar.

- Irshad.

Cuestiones relacionadas