Presentant KafkaDB

Albert Cervera i Areny 7 de nov. 2011

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 extendre per permetre la migració entre versions entre 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 de que OpenERP SA va anunciar que les eines de migració no formarien part del programari públic vam començar a donar voltes en com podríem implementar-les de forma que fossin reutilitzables. Algunes empreses van buscar solucions a curt termini, simplement mirant de solventar 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 les migracions.

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

  • Modular: havia de proveir un mecanisme mitjançant el qual es pogués reutilitzar les transformacions de dades implementades per 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 seria senzill per tothom compartir les seves transformades. Donat que la informació sobre la migració no estaria inclosa en els mòduls, necessitàvem que fos senzill de compartir, así com de trobar quines transformades hi havia disponibles.

Recerca i desenvolupament

Ens ha costat un cert temps fins arribar al disseny actual del 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 aquest mes de juny. Vam descartar aquesta opció, no tan sols perquè estava abandonat, sinó també perquè l'API no era intuïtiu. A més, tot i que no vàrem arribar a fer proves, semblava que podia ser relativament lent.

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

Hauríem volgut que fos en python, especialment per fer més senzill que la gent 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 l'À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 a veure què es podia fer amb transformades 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, permetíem que persones que no fossin desenvolupadors també es podien 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 i especialment entre la comunitat OpenERP (gràcies al Terminatooor, un connector pel Kettle creat per Akretion, especialment dissenyat per funcionar amb OpenERP).

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

 

Links destacats

 

Amunt