Presentant KafkaDB
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.
Articles relacionats
ERP i Negoci
Presentació de KafkaDB
La presentació mostra KafkaDB, una tecnologia creada per facilitar la migració de dades entre sistemes basats en PostgreSQL. Resumeix els orígens i els objectius del projecte i il·lustra visualment el funcionament i la configuració de l’aplicació.
Desenvolupador
Python i Tryton
Python has grown rapidly because it is simple, open source, compatible with other languages, and highly modular. Tryton has been built on Python since its creation in 2008, combining both technologies to provide a robust, adaptable ERP with strong technical capabilities.
Tryton
Presentació de Tryton ERP
La participació de NaN·tic a les V Jornades OpenERP de Donostia va acabar amb una presentació de Tryton. El contingut compara diferències per a usuaris i programadors, repassa l’estat de la localització espanyola i presenta les línies de treball actuals i futures del projecte.