Presentando KafkaDB
Hoy queremos presentaros KafkaDB, nuestra nueva criatura que acabamos de publicar en Bitbucket. KafkaDB es una herramienta que simplificará la tarea de migrar bases de datos entre versiones de OpenERP, pero también podría extenderse para permitir la migración entre versiones de otras aplicaciones basadas en PostgreSQL. En la página principal del proyecto podéis encontrar información detallada sobre su diseño y uso, pero ahora quería explicar brevemente cómo hemos llegado hasta aquí.
Los requisitos
Desde que OpenERP SA anunció que las herramientas de migración no formarían parte del software público, empezamos a pensar cómo implementarlas de forma reutilizable. Estábamos convencidos de que, del mismo modo que la herencia había permitido a OpenERP disponer de cientos de módulos desarrollados y publicados libremente, podíamos conseguir lo mismo para la infraestructura de migración.
Así que debíamos implementar algo que resolviera estos requisitos:
- Modular: debía permitir reutilizar las transformaciones de datos implementadas para una base de datos en otra.
- Rápido: por el tamaño de las bases de datos de algunos clientes, debíamos mover la información a nivel de base de datos.
- Compartible: además de modular, debía ser sencillo compartir las transformaciones y encontrar cuáles estaban disponibles.
Investigación y desarrollo
Nos llevó un tiempo llegar al diseño actual de KafkaDB. El proceso comenzó con una pequeña prueba de concepto usando Python y openetl, un ETL creado por OpenERP SA y abandonado en junio de 2011. Descartamos esta opción porque estaba abandonada y porque su API no era muy intuitiva; además, parecía relativamente lenta.
La primera alternativa fue buscar otro ETL basado en Python. El candidato fue Brewery, que tenía una API mejor, pero no disponía de algunas funciones básicas que necesitábamos. Aunque podríamos haber contribuido al proyecto, debíamos centrarnos en resolver nuestros problemas y no en implementar un ETL desde cero.
Habríamos preferido Python para facilitar las contribuciones, pero también buscamos alternativas en otros lenguajes. Scriptella fue el primer candidato y basaba su configuración en XML. Sin embargo, no nos convenció el comportamiento predeterminado de algunas opciones y el XML parecía poco práctico para un proceso que podía implicar 400 tablas.
Así que Àngel, uno de mis socios y nuestro experto en Kettle y grandes migraciones de datos, empezó a trabajar con su API. Pronto comprobó que permitía cumplir todos nuestros requisitos y que incluso personas no desarrolladoras podían migrar sus bases de datos.
Además, Kettle es probablemente el estándar ETL de facto, especialmente en la comunidad OpenERP (gracias a Terminatooor, un conector para Kettle creado por Akretion).
En resumen, aunque KafkaDB todavía no está terminado, estamos convencidos de que constituye una buena base para el sistema flexible de migraciones que necesitamos, tanto entre versiones de OpenERP como entre aplicaciones diferentes con estructuras similares.