Tag Archive: DDBB


Db4o-logo.gifDespués de mucho tiempo, he podido dar con un proyecto donde esta herramienta a dado muy buenos resultados.

Estoy hablando de DB4O,  un motor de bases de objetos. o sistema de administracion de bases orientada a objetos. La idea de es eliminar el problema de impedancia, que se genera entre el paradigma de objetos y el relacional.

Un gráfico nos permitirá entender rápidamente. EL dibujo de la izquierda muestra como los objetos que pueden llegar a ser complejos, deben mapearse a una RDBMS o Sistema de Administración de Base de Datos Relacional entre las distintas tablas de la misma, muchas veces con el cuidado que se merece la normalización de ellas, el diagrama E/R, la escritura de las sentencias SQL, etc.

En el dibujo de la derecha, parece demasiado simple para ser verdad. Pero es así. Simplemente guardamos nuestros objetos Java (también esta para .NET) desde un Entidad que persistirá nuestros objetos.

Su uso mas extendido es en la modalidad embebida, pero se puede trabajar en modo Cliente-Servidor.

En el caso particular, que debí resolver, recurrí a una solución muy simple del tipo Lote (BATCH, desde la consola se ejecutaba o desde Eclipse mismo). La  Secretaria de Hacienda Nación ofrece un sistema llamado UEPEX, para las Unidades Ejecutoras de Prestamos Externos (generalmente dolares estadounidenses). Con el cual lleve adelante tres implementaciones que generan 3 libros mayores en Excel.

 Si bien es Excel, debemos pensar que son hoja de cálculo para imprimir como reportes, asi que hay logos, títulos y demas. Con un simple BOT en  java, se rastrea cada hoja de cálculo, analiza cada linea, y de ahí cada Celda, tomando solo las que indican un movimiento contable. Cada registro Impacto Contable es en realidad un objeto (la clase se llama así), se persiste el objeto en una base única y se lleva a cabo un proceso de consolidación, todo sobre DB4O (todo porque no tengo acceso SQL, obvio, así que era la única posibilidad)

Entonces, sin ORM, sin Stored, sin SQL, sin Tablas, sin nada mas que JAVA y el JAR de DB4O. Termine generando un reporte en HTML que me permita jugar con estilos y demás antes de generar un PDF.

Todo esto, luego fue sometido a una prueba para un aproximado millón de objetos, que terminó generando un archivo de 300 MB en solo 180 segundos. ¿Parece rápido? Pues sí.
Hay que tener en cuenta que hablamos de un montón de operaciones para con ese millón de objetos, manejar los ZIP, rastear, indexar, ordenar, consolidar, sumarizar, etc. Pero si solo instanciasn en un FOR un millón de objetos de una clase simple de dos o tres atributos y a cada uno lo van persistiendo (nada de jugar con perfomace), podrán comprobar que dependiendo de su hardware y JAVA, la operación en segundos va de 75 a 90.

Otro de los aspectos interesantes, es la posibilidad de combinar las soluciones con un enfoque de Inteligencia de Negocios, a través de BIRT. Realmente, con solo jugar con scripts (javascript) podemos generar reportes en HTML, Planilla de Cálculo y en PDF.

 

DataNucleus16-300.jpgSi buscamos una estrategia de administración de la información, una forma unificada de encarar el desafío de persistir datos, DataNucleus es una de las alternativas a considerar.

Es un proyecto libre, open source, con licencia Apache. Derivado de JPOX (o simplemente renombrado) proporciona las herramientas para trabajar con APIs como JDO (2, 2.1 u 2.2 ), JPA (1 y 2), REST y contra motores de servidores de bases de datos relacionales (RDBMS), de objetos (DB4O), XML, soluciones de Cloud Computing (Amazon, Google, etc), OpenOffice, Excel, JSON, HBase, LDAP, etc. También hay casos con MongoDB

Los lenguajes son JDOQL, JPQL, SQL, db4o Native, NeoDatis Native, NeoDatis Criteria…. y requiere JRE 1.5 o superior

Entre los usos actuales, destaca ser la capa para las soluciones Google App Engine  en Java, o JFire (un ERP libre), por sobre estos casos.

Obviamente se conjuga con nuestro querido Eclipse del que ya hemos hablado y seguiremos haciéndolo.

La arquitectura es simple y muy clara

 

Debo reconocer que en parte doy con esta solución o mejor dicho me inclino por ella, por el buen soporte. Como saben, estoy usando DB4O, como base de objetos y esta muy bien documentada la opción

Teorema CAP

Bueno, estas son de las cosas que a veces uno le gustaria haberse enterado hace algunas decadas…

Damas y Caballeros

EL TEOREMA CAP, también llamado Brewer’s theorem, establece que es imposible para un sistema de computo distribuído dar simultaneamente las siguientes tres garantías:

Consistency (Consistencia :todos los nodos ven la misma información al mismo tiempo)

Availability (Disponibilidad: la falla de un nodo no impedirá al resto de los nodos seguir funcionando)

Partition Tolerance (Tolerancia a Fallos: El sistema sigue funcionando a pesar de la pérdida de información)

Segun el teorema, solo se pueden satisfacer dos de estas tres carasterísticas al mismo tiempo, pero nunca las tres.