Desenvolupador

Presentant KafkaDB

4 min de lectura

Resum ràpid

KafkaDB és una eina modular per migrar bases de dades entre versions d’OpenERP i, potencialment, entre aplicacions basades en PostgreSQL. L’article explica els requisits de reutilització, velocitat i compartició, i descriu com l’exploració d’ETL va conduir a una solució basada en Kettle, encara en desenvolupament.

Continguts

Avui volem presentar-vos el KafkaDB, la nostra nova criatura que acabem de publicar a bitbucket. KafkaDB és una eina que simplificarà la tasca de migrar bases de dades entre versions d'OpenERP, però també es podria estendre per permetre la migració entre versions d'altres aplicacions basades en PostgreSQL. A la pàgina principal del projecte, podeu trobar informació detallada sobre el disseny i com utilitzar-lo, però ara volia fer-vos cinc cèntims de com hem arribat fins aquí.

Els requeriments

Des que OpenERP SA va anunciar que les eines de migració no formarien part del programari públic, vam començar a donar voltes a com podríem implementar-les de forma reutilitzable. Algunes empreses van buscar solucions a curt termini, simplement mirant de solucionar el problema per a un o dos clients que volien passar de la 4.2 o la 5.0 a la 6.0 i posposant la cerca de la solució real. Nosaltres estàvem convençuts que, de la mateixa manera que l'herència havia permès a OpenERP tenir centenars de mòduls fets i alliberats per molts desenvolupadors, podríem aconseguir el mateix per a les migracions.

Així que bàsicament havíem d'implementar quelcom que resolgués els requeriments següents:

  • Modular: havia de proveir un mecanisme mitjançant el qual es poguessin reutilitzar les transformacions de dades implementades per a una base de dades en una altra.
  • Ràpid: donada la mida de les bases de dades d'alguns dels nostres clients, sabíem que hauríem de moure la informació a nivell de base de dades.
  • Compartible: a més de ser modular, volíem assegurar-nos que fos senzill per a tothom compartir les seves transformacions. Atès que la informació sobre la migració no estaria inclosa en els mòduls, necessitàvem que fos senzill de compartir, així com de trobar quines transformacions hi havia disponibles.

Recerca i desenvolupament

Ens va costar un cert temps arribar al disseny actual de KafkaDB. El procés va començar amb una petita prova de concepte utilitzant Python i openetl, un ETL creat per OpenERP SA, però abandonat el juny de 2011. Vam descartar aquesta opció, no tan sols perquè estava abandonada, sinó també perquè l'API no era gaire intuïtiva. A més, tot i que no vàrem arribar a fer proves, semblava que podia ser relativament lenta.

La primera alternativa va ser buscar un altre ETL basat en Python. Aquesta vegada el candidat va ser Brewery. Aquest tenia una API força millor, però no disposava d'algunes funcionalitats bàsiques que necessitàvem i, malgrat que hauríem pogut contribuir al projecte, necessitàvem centrar-nos a resoldre els problemes que teníem, no a implementar un ETL des de zero.

Hauríem volgut que fos en Python, especialment per fer més senzill que la gent hi contribuís, però vam començar a buscar alternatives en altres llenguatges. Scriptella va ser el primer candidat i basa la seva configuració en un fitxer XML, així que ens va semblar atractiu. Ja sabíem que el sistema que escollíssim acabaria tenint un fitxer de configuració, així que a primer cop d'ull semblava que aquesta podia ser una bona opció perquè el sistema ja depenia d'un. Malgrat això, no ens va convèncer el comportament per defecte d'algunes opcions del sistema, a més del fet que l'XML semblava que podria ser poc pràctic, ja que fàcilment podíem arribar a les 400 taules.

Així que Àngel, un dels meus socis i el nostre expert en Kettle i grans migracions de dades, va començar a jugar amb l'API del Kettle i a fer una ullada per veure què es podia fer amb transformacions manuals i alguns automatismes. Aviat es va adonar que no tan sols podia complir tots els requeriments que teníem, sinó que, a més, permetia que persones que no fossin desenvolupadores també poguessin migrar la seva base de dades. Per exemple, diversos dels nostres clients s'ho podrien fer ells mateixos si ho desitgessin!

A més, el Kettle és probablement l'ETL estàndard de facto, especialment entre la comunitat OpenERP (gràcies al Terminatooor, un connector per al Kettle creat per Akretion, especialment dissenyat per funcionar amb OpenERP).

En resum, tot i que KafkaDB no està acabat del tot encara, estem convençuts que constitueix una bona base per al sistema de migracions flexible que necessitem, no tan sols per migrar informació entre versions d'OpenERP, sinó també entre aplicacions diferents, sempre que es necessiti reutilitzar el procés per a diferents bases de dades amb estructures semblants.

Enllaços destacats

Preguntes freqüents

Per a què serveix KafkaDB?

Serveix per simplificar la migració de bases de dades entre versions d’OpenERP i es planteja que també pugui aplicar-se a altres aplicacions basades en PostgreSQL.

Quins requisits havia de complir l’eina?

Havia de ser modular per reutilitzar transformacions, ràpida per treballar amb bases de dades grans i fàcil de compartir entre les persones que hi contribuïssin.

Quines alternatives ETL es van valorar?

Es van provar o estudiar openetl, Brewery, Scriptella i Kettle. Les limitacions de les primeres opcions van portar a explorar Kettle, que permetia cobrir els requisits plantejats.

KafkaDB ja estava acabat?

No. L’article indica que encara no estava acabat del tot, però que constituïa una bona base per a un sistema de migracions flexible.