viernes, 19 de octubre de 2012

Herramientas para comparar bases de datos PostgreSQL

Normalmente, cuando se trabaja en un proyecto web, se tiene una base de datos en local  local (desarrollo) y luego la base de datos en el servidor (tanto preproduccion como producción). A medida que se van produciendo avances en desarrollo se van anotando los scripts que se tienen que meter en la base de datos de prerproducción y producción para que todo quede homogéneo. Pero cuando se producen muchos avances o el equipo es grande, en ocasiones, se puede perder el control del estado en el que se encuentran las tres bases de datos. Entonces se necesitan herramientas que permitan comparar como se encuentran estas para poder igualarlas y proseguir con el desarrollo. Yo he encontrado y probado un poco un par de ellas: apgdiff y EMS DB Comparer. Voy a contaros un poco sobre cada una de ellas.
  1. Apgdiff se trata de una herramienta online, no tenemos que descargarla, si no que accedemos a ella a través de la url y le cargamos los archivos de las bases de datos. Yo solamente lo he probado pasándole los archivos de creación del esquema, es decir, lo que generar la exportación de un pg_dump --schema-only. Y funciona de maravilla!! Obtienes en una pantalla las diferencias entre la base de datos origen y la destino, de forma que si metemos el script tal cual en la base de datos dejamos las bases de datos exactamente iguales. Una imagen de como es el resultado: 


  2. Te indica cuales son las instrucciones que tienes que ejecutar en la base de datos destino para que queden exactamente iguales, incluyendo secuencias, tablas, foreing_key y permisos.

  3. EMS DB Comparer se trata de una solución instalable pero que con Wine se me ha instalado en Ubuntu sin problemas. Esta herramienta no es gratuita sino que se trata de una herramienta de pago. Pero te puedes descargar desde la web una versión gratuita que dura 30 días. Seguramente  la siguiente vez que la tenga que usar ya se haya caducado :( Se trata de una herramienta más potente que la anterior y con alguna funcionalidad muy interesante. Ahora no tenemos que subir los archivos de creación sino que directamente la conectamos con nuestras bases de datos. Podemos indicarle parámetros de conexión tanto para bases de datos locales como para bases de datos funcionando en servidores remotos. Yo la probé para dos bases de datos locales. Una vez se le suministra los parámetros de conexión incluyendo usuario y contraseña realiza la comparación entre las bases de datos y te devuelve cuales son las instrucciones que diferencian una de otra. Las diferencias te las indica tanto en un sentido como en otro simplemente pinchando en cada una de las pestañas con la flecha y los nombres de las bases de datos.


    Además te permite ejecutar las instrucciones que te ha devuelto. Estas se pueden ejecutar de una en una o todas seguidas, así como poner primero o detrás cada una de las instrucciones que queremos ejecutar. Por lo tanto podemos ordenar las instrucciones que queremos ejecutar y con solo un botón dejar las dos bases de datos exactamente iguales. 


    Como os decía al principio esta herramienta es bastante potente y completa, encontrándose versiones desde los 45 €  hasta los 4060 €. La verdad es que no he podido encontrar en la web a que se debe cual es la diferencia de precio entre las distintas versiones porque hay bastante!

1 comentario :

  1. Todavía puedo agregar a esta lista dbForge Data Compare para el PostgreSQL https://www.devart.com/dbforge/postgresql/datacompare/
    Una buena herramienta para comparar datos

    ResponderEliminar