miércoles, 17 de octubre de 2012

Comparar y actualizar esquemas de PostgreSQL



"1f y0u c4n r34d 7h15, y0u r34||y n33d 70 637 41d."

Al pasar a producción nuevas versiones de software empresarial necesitamos automatizar la "actualización" del sistema con el objeto de que sea repetible y pueda realizarse lo más rápidamente posible y sin errores. Uno de los elementos críticos es el esquema de nuestra base de datos sobre el cual, en la mayor parte de los casos, descansa la estructura vertebral de nuestro sistema.

Si la comparación y obtención de diferencias (comparison/diffing) entre el esquema antiguo y el nuevo es una tarea tediosa que está sujeta a numerosos errores, la generación de un script SQL de actualización es aún más compleja, ya que requiere un tratamiento inteligente y ordenado de dichas diferencias.

Para ayudarnos en esta tarea con PostgreSQL, me encontré una excelente herramienta: Another PostgreSQL Diff Tool (apgdiff). Agpdiff es una herramienta gratuita de comparación y obtención de diferencias de esquemas de bases de datos (database schema diff tool) específica para PostgreSQL. La he probado y he de decir que quedé realmente impresionado. Tan sólo tuve que añadir las lógicas modificaciones al script de actualización generado relacionadas con los datos (actualización de filas con valores NULL en campos que pasan a ser NOT NULL, etc...).

En el sitio de la herramienta viene información suficiente sobre su funcionamiento y cómo usarlo. Sólo añadir, como recomendación, la utilización de la opción --add-transaction que nos permitirá probarlo con comodidad y corregir los errores.

Una herramienta imprescindible si usas PostgreSQL.

Referencias y más información:
Related Posts Plugin for WordPress, Blogger...
cookieassistant.com