OpenERP: ERP Open Source / Software Libre
Archivo categoría Kettle – OpenERP
Nueva solución para la Migración entre versiones de OpenERP
Por Ana Juaristi Olalde - Comunidad Española OpenERP, Kettle - OpenERP, Nuevas versiones OpenERP - 7 noviembre 2011
Como siempre… Albert Cervera de Nan-tic, nos sorprende con esta buenísima noticia. Os paso íntegro el post en castellano, que creo que merece la pena. Aquí el link original al artículo. Incluyo también links a las traducciones en inglés y catalán.
Castellano: http://www.nan-tic.com/es/presentando-kafkadb
Inglés: http://www.nan-tic.com/en/presenting-kafkadb
Catalá: http://www.nan-tic.com/ca/presentant-kafkadb
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 se podría extender para permitir la migración entre versiones entre otras aplicaciones basadas en PostgreSQL. En la página principal del proyecto, podéis encontrar información detallada sobre el diseño y como utilitzarla, pero ahora quería haceros cinco céntimos de cómo hemos llegado hasta aquí.
Los requerimientos
Desde que OpenERP SA anunció que las herramientas de migración no formarían parte del software público empezamos a dar vueltas en cómo podríamos implementarlas de forma reutilizable. Algunas empresas buscaron soluciones a corto plazo, simplemente mirando de solucionar el problema para uno o dos clientes que querían pasar de la 4.2 o la 5.0 a la 6.0 y posponiendo la búsqueda de una solución real. Nosotros estábamos convencidos que de la misma manera que la herencia había permitido a OpenERP tener centenares de módulos hechos y liberados por muchos desarrolladores, podríamos conseguir lo mismo con las migraciones.
Así que básicamente teníamos que implementar algo que solucionara los siguientes requerimientos:
- Modular: tenía que proveer un mecanismo mediante el cual se pudieran reutilizar las transformaciones de datos de una base de datos a otra.
- Rápido: dada la medida de las bases de datos de algunos de nuestros clientes, sabíamos que tendríamos que mover la información a nivel de base de datos.
- Fácil de compartir: además de ser modular, queríamos asegurarnos que sería sencillo para todo el mundo compartir sus transformadas. Dado que la información sobre la migración no estaría incluida en los módulos, necesitábamos que fuera sencillo de compartir, así cómo de encontrar qué transformadas había disponibles.
Búsqueda y desarrollo
Nos ha costado un cierto tiempo hasta llegar al diseño actual de KafkaDB. El proceso empezó con una pequeña prueba de concepto utilizando Python y openetl, un ETL creado por OpenERP SA, pero abandonado este mes de junio. Descartamos esta opción, no tan sólo porqué estaba abandonado, sino también porqué la API no era intuitivo. Además, a pesar de que no llegamos a hacer pruebas, parecía que podía ser relativamente lento.
La primera alternativa fue buscar otro ETL basado en python. Esta vez el candidato fue el Brewery. Éste tenía una API bastante mejor pero no disponía de algunas funcionalidades básicas que necesitábamos y a pesar de que habríamos podido contribuir al proyecto, necesitábamos centrarnos en solucionar los problemas que teníamos, no a implementar un ETL desde cero.
Habríamos querido que fuera en python, especialmente para hacer más sencillo que la gente contribuyera, pero empezamos a buscar alternativas en otros lenguajes. Scriptella fue el primer candidato y éste basa su configuración en un fichero XML, así que nos pareció atractivo. Ya sabíamos que el sistema que escogiéramos acabaría teniendo un fichero de configuración, así que a primer vistazo parecía que esta podía ser una buena opción porque el sistema ya dependía de uno. A pesar de esto, no nos convenció el comportamiento por defecto de algunas opciones del sistema, además del hecho que el XML parecía que podría ser poco práctico puesto que fácilmente podíamos llegar a las 400 tablas.
Así que Àngel, uno de mis socios y nuestro experto en Kettle y grandes migraciones de datos, empezó a jugar con la API de Kettle y mirar a ver qué se podía hacer con transformadas manuales y algunos automatismos. Pronto se dio cuenta, que no tan sólo podía cumplir todos los requerimientos que teníamos, sino que además, permitíamos que personas que no fueran desarrolladores también se podían migrar su base de datos. Por ejemplo, varios de nuestros clientes se lo podrían hacer ellos mismos si lo desearan!
Además, Kettle es probablemente el ETL estándar de facto y especialmente entre la comunidad OpenERP (gracias a Terminatooor, un conector para Kettle creado por Akretion, especialmente diseñado para funcionar con OpenERP).
En resumen, a pesar de que KafkaDB no está acabado del todo todavía, estamos convencidos que constituye una buena base para el sistema de migraciones flexible que necesitamos, no tan sólo para migrar información entre versiones de OpenERP, sino también entre aplicaciones diferentes siempre y cuando se necesite reutilizar el proceso para diferentes bases de datos con estructuras parecidas.
Instalando la herramienta de migración de datos Kettle integrada con OpenERP
Por Ana Juaristi Olalde - Integración OpenERP otras herramientas, Kettle - OpenERP, Manuales técnicos OpenERP - 24 junio 2010
Buenas… como ya todos sabeis OpenERP trae de base un importador de datos CSV en cada una de las pantallas, pero para cargar un csv, este tiene que estar organizado “de la forma” que OpenERP entiende. Es decir, nombradas las cabeceras con los nombres de los campos exactamente tal cual están en base de datos. También hemos tenido algún problema con la nomenclatura de los campos en castellano por acentos y ñ, por lo que alguna vez hemos tenido que realizar la carga seleccionando como idioma del usuario el inglés.
Sabeis que en aulaerp tenemos un curso con ejemplos de archivos csv que utilizamos para cargar datos en varios de nuestros clientes. Ahora bien, esta forma de migrar es muy manual, hay que hacer las transformaciones prácticamente de forma artesanal y es bastante laborioso. Por lo tanto, alrededor de la temática de migración de datos a OpenERP, existen varias herramientas que he testeado una a una durante todo el día. Aquí os paso mis conclusiones al respecto:
- openETL: Es la herramienta de migración de OpenERP SA. Es un módulo stand alone, o ejecutable desde el cliente openerp que se descarga de launchpad, aquí: https://launchpad.net/openobject/openetl No sé si por no buscar bien, o no existir, no he encontrado una documentación a nivel de usuario que me permita utilizarlo. Hay documentación pero me ha parecido muy técnica. Tiene buena pinta pero lo dejo para técnicos de sistemas y programadores que se dedican a ello. Nhomar es fan acérrimo de OpenETL y lo utiliza habitualmente.
- Terminatooor de rvalyi: He pedido a mis compañeros de ting que me hagan una introducción a la herramienta y me muestren su funcionalidad en acción. He decidido que tampoco la usaré ya que la parte de carga de datos de Kettle a OpenERP se realiza mediante sentencias programando en Ruby. También muy potente y flexible, pero para técnicos programadores con conocimientos en ruby o ganas de aprender un nuevo lenguaje.
- El conector de NAN kettle-openerp: Facil de instalar, tiene una pinta estupenda y no es necesario programar. El plugin te “trae” a Kettle la estructura de tablas de OpenERP de forma visual por lo que a priori, me parece muchísimo más sencillo que las otras 2 opciones.
Aquí os pongo los pasos que he seguido para instalar el conector de NAN casi a la primera y sin mucho problema:
- He seguido este manual para instalar el kettle con el interfaz visual spoon (haced caso primero al comentario que tiene. Instalad todas las librerías que dice porque son necesarias. Si no, cascan algunos puntos. http://blog.foobaria.com/2010/05/install-pentaho-data-integration-aka.html#setup_kettle
- Leeros la presentación de Angel del año pasado en Vilanova. http://www.slideshare.net/raimonesteve/migracin-de-datos-con-openerpkettle En las páginas 18 y 19 teneis algunas instrucciones para instalarlo. Yo he intentado lo de copiar los archivos en las rutas que pone en la presentación, pero no atinaba. Por lo que, he ejecutado el install.sh que viene en el modulo.
ana@ana-laptop:~/openerp/
openerp-kettle$ ./install.sh $HOME/opt/kettle
Kettle Dir: /home/ana/opt/kettle
- Por último, he copiado a mano (porque el enlace no me funcionaba) el directorio TinyOuputForDeploy en %HOME/opt/plugins/steps
- Y claro… arrancar spoon (meted usuario admin pwd admin si estais en pruebas en la pantalla de entrada al Kettle)
Y listo… si vais a transformaciones / sortida vereis el plugin. Si haceis doble click, os permite configurar una conexión a una BBDD de OpenERP y obtener los modelos, sus tablas y sus campos de forma totalmente automática y transparente. Por lo que ya podeis iniciar la configuración del modelo de carga para el caso concreto.
Por si seguís adelante. Os recomiendo que os veais todos los puntos de este manual antes de empezar el primer proyecto:
Esperando sea de vuestro interés, cordiales saludos!!
Ana
Nueva tecnología para conectar OpenERP con casi todo…
Por Ana Juaristi Olalde - Kettle - OpenERP, Migracion de Datos OpenERP - 12 enero 2010
Ultimamente nos preguntan sobre la integración de OpenERP con prestashop o tiendas online que no sean Oscommerce o Magento. Por lo que sabemos hasta ahora, no existe ningún otro conector publicado, pero sí que os paso un enlace muy interesante al blog de Raphaël Valyi y un fragmento de conversación que mantuvimos ayer por chat.
Raphaël: Currently busy packaging OOOR + Kettle you’ll see, this is a revolution.
ETL that can just do anything in OpenERP pull/push data, access workflow, composed objects, do anything along with the flow of data… and Kettle can connect to about anything Excell, Access, ODBC, JDBC, Salesforce…
Ana: I think we need a list of problems solved with your solution to have an idea of what it is
Raphaël: the reason we are using it now is:
importing bank paiment files and exporting account move lines but it will solve any integration problem for instance integration with OpenbravoPOS
Ana: With online stores? prestashop?
Raphaël: yes, it’s doable for online shops too, provided Kettle can eeficiently connect to them which was not the case with magento(Kettle does no generic XMLRPC)for OpenERP, OOOR does the XML/RPC specifically for OpenERP
Auí el link por si quereis saber más:
http://github.com/rvalyi/jripple
OpenERP + Kettle OOOR + JRuby
Esperando os sea de utilidad:
Ana
