Desarrollador

Presentando KafkaDB

3 min de lectura

Resumen rápido

KafkaDB es una herramienta modular para migrar bases de datos entre versiones de OpenERP y, potencialmente, entre aplicaciones basadas en PostgreSQL. El artículo explica los requisitos de reutilización, rapidez y facilidad para compartir transformaciones, y describe cómo la búsqueda de una solución ETL llevó a una propuesta basada en Kettle que aún estaba en desarrollo.

Contenidos

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.

Enlaces destacados

Preguntas frecuentes

¿Para qué sirve KafkaDB?

Su objetivo es simplificar la migración de bases de datos entre versiones de OpenERP y poder extenderse a otras aplicaciones basadas en PostgreSQL.

¿Qué requisitos debía cumplir la herramienta?

Debía ser modular para reutilizar transformaciones, suficientemente rápida para bases de datos grandes y fácil de compartir entre quienes contribuyeran.

¿Qué alternativas ETL se valoraron?

Se probaron o estudiaron openetl, Brewery, Scriptella y Kettle. Las limitaciones de las primeras opciones llevaron a explorar Kettle, que podía cubrir los requisitos planteados.

¿KafkaDB ya estaba terminado?

No. El artículo indica que todavía no estaba terminado, aunque se consideraba una buena base para un sistema de migraciones flexible.