Imposible procesar la plantilla:FreemarkerTemplate: poll/activa.html Page: poll/activa.html. Expression poll is undefined on line 7, column 8 in default/poll/activa.html.

Destacados Agenda

Más eventos |

(1)

Artículo introductorio a db4o

31/08/2007 13:01 ecamacho

Los argentinos Germán Viscuso, administrador de la comunidad de usuarios de db4o, y Hernán Morales, experto en programación orientado a objetos, nos presentan este gran artículo introductorio al uso de esta famosa base de datos orientada a objetos.

El artículo viene con ejemplos de código tanto en C# como en Java y con explicaciones paso a paso acerca de la instalación y uso de db4o. La tecnlogía de base de datos orientadas a objetos estaban pensadas para romper la impedancia objeto-relacional que sucede con bases de datos relacionales, pero por una u otra razón no han terminado de ser adoptadas por los desarrolladores. Si estás pensando empezar a utilizar estas herramientas este artículo es perfecto para ti.

Volver a actualidad

Etiquetas: otro, otro

Comentarios: 15

  • anonimo 31/08/2007 00:00

    El problema que yo tuve, (al igual que con la arquitectura de EJB en memoria) son las consultas con agrupaciones (group by), especialmente cuando hay que ordenar o filtrar consultas por datos agrupados (el equivalente SQL a order by sum(XXX), o usar los having..., ahí, para colecciones medianas ya el rendimiento era una pena...

    En fin, supongo que se irá arreglando...

    Saludos,

    Asertus

  • anonimo 31/08/2007 00:00

    Yo en realidad lo he utilizado para cosas simples.
    Lo use como una especie de cache para correr una aplicacion que leia informacion de una base de datos oracle, lo que hacia era almacenar un objeto con el query, los parametros como un multikey de apache commons collections y asociado al resultado de la consulta.
    El objetivo era poder correrlo de forma off-line, leyendolo de la base de datos.
    La aplicacion basicamente realizaba las mismas consultas a la base de datos para generar jsps con velocity, a veces solo se necesitaba cambios en la estructura del html, era tonto volver a leer todo de la base de datos, mejor usar la ultima fuente del archivo yap, este es un buen escenario para una base de datos objetual.

    Lo que si he notado es q han mejorado con el tiempo de las consultas, lo que no se si han arreglado es el lenguaje de consultas (SOA creo se llama), aparte que no es muy estandar, se queda atras comparandolo con un lenguaje de consulta de una base de datos relacional.

    salu2

  • anonimo 31/08/2007 00:00

    Alguno habeis utilizado esta base de datos alguna vez? que tal va?

  • asanzdiego 31/08/2007 00:00

    Yo utilicé db4o en mi proyecto de fin de carrera y me dió más problemas que soluciones.

  • atesti 31/08/2007 00:00

    db4o parece justificarse en casos como aplicaciones standalone. Creo que hay que darle tiempo, pero me parece que va por un buen camino. En otras palabras, me gustaría creer que el futuro viene de la mano de este tipo de base de datos, y no del clásico ORM (seguro que recaerá sobre mí una lluvia de insultos luego de esta afirmación )
    Me gustaría ver un port para utilizar sobre Google Gears. ¿Alguien se anima a desarrollarlo?

  • belmond 31/08/2007 00:00

    Pues la verdad es que mi experiencia fue bastante mala. Es verdad que fue hace un año o así, pero el rendimiento de las consultas cuando se pedían resultados ordenados era simplemente inaceptable.

    No sé si esos problemas ya estarán resueltos, en su momento publiqué varias entradas en los foros y nadie me contestó.

  • anonimo 01/09/2007 00:00

    Llega tarde, ahora cuando se dispone de JDO, Hibernate, JPA, EJB 3 etc además en cualquier momento se liberará ObjectStore, Objectivity, Versant etc muchísimo más maduras y con muchos años a sus espaldas de usos reales y exigentes.

    En los finales de los 90 o principios de esta década hubiera tenido un gran impacto, ya no. No nos acordamos de que algunas bases de datos tradicionales son objeto-relacionales (Oracle, DB2 ...) y por tanto Hibernate, JPOX, OpenJPA etc pueden aprovecharse en cualquier momento de esas características y reducir fuertemente la "impedancia" objeto relacional.

  • anonimo 01/09/2007 00:00

    Yo si la he usado y actualmente estoy haciendo un proyecto con ella.

    Muchos se quejan que es lenta y las consultas son pobres, pero hay que pensar de forma diferente a las bases de datos relacionales. Las consultas pueden ser poderosas ya que en la propia base de datos esta la lógica del sistema. Puedes recorrer el arbol de objetos sin tener que realizar consultas.

    Belmond, respecto al rendimiento de las consultas ordenadas, quizas es que no hayas activados los indices en los campos de interés. Como cualquier motor de bases de datos, sino no "indexas" los campos que vas a utilizar para una busqueda y que esta sea ordenada, obtendras una respuesta lenta.

    En general el rendimiento es mejor, y siempre mejorable, que hacer complejas transformaciones entre objetos y tablas, y viceversa, atacando una RDBMS para realizar la consulta.

    Bajo mi opinion tiene muchisimo potencial, aunque tambien se puede mejorar bastantes aspectos y añadir mas funcionalidades.

    Un saludo,

    Tito

  • afanjul 01/09/2007 00:00

    Yo utilicé la base de datos db4o para hacer el proyecto ATS-Interactiva, y me siento afortunado de haber sido nombrado como dVP del 2008 por la firma db4o. La verdad es que no soy ningún experto en programación pero creo que ha sido una buena experiencia el hacer uso de db4o. German si que es un genio de las bases de datos orientadas a objetos y espero tener la suerte de conocerlo en persona en el proximo ICOODB de marzo del 2008 en Berlín al que me han invitado a ir.
    Os dejo también el enlace a una de las presentaciones que hice sobre la base de datos que seguramente no es tan buena como el artículo de German pero que puede ser de utilidad para todos aquellos que quieran saber de que va esto de las OODBMS.

  • belmond 02/09/2007 00:00

    Créeme, lo probé todo, creé los índices correspondientes, etc. Si buscas por los foros de db4o seguramente encontrarás los hilos que abrí (creo que 2). No sé si ahora habrá alguna pregunta a mis respuestas... probablemente lo que más me desanimó fue que no hubiera nadie dispuesto a echar un cable con este tema. Todo el que trabaja en software sabe que los proyectos pueden tener fallos y puntos débiles, y que se van solucionando con el tiempo.
    Simplemente el equipo no estuvo a la altura en aquella ocasión.

  • Anónimo 03/09/2007 18:19

    y el Link correspondiente al tutorial?? :|

  • Anónimo 04/09/2007 00:10

    Estuvo on-line hace unos días, puede ser que no esté ahora porque están remodelando el sitio y todavía no lo tienen a punto.

  • gviscuso 04/09/2007 04:46



    Hola!

    Gracias por los comentarios sobre el articulo (ambos, positivos y negativos, son buenos y nos ayudan a mejorar db4o).

    Quería pasarles algunos links para los que preguntaron: Los tutoriales están aquí:
    http://developer.db4o.com/Resources/view.aspx/Documentation/Documentation_List#Tutorials
    http://www.db4o.com/community/testdrive/formulaonetutorial.aspx

    La documentación de referencia aquí:
    http://developer.db4o.com/Resources/view.aspx/Reference

    Y la página de recursos para desarrolladores aquí:
    http://developer.db4o.com/Resources/view.aspx

    Con respecto al sistema de consultas que soportamos (SODA) ha pasado a ser nuestro sistema de consultas de bajo nivel y, desde hace un tiempo ya, estamos soportando Native Queries (Consultas Nativas) que permiten expresar las consultas en el propio lenguaje de programación. Un ejemplo (recuperar los pilotos cuyo puntaje es igual a 100):

    private static void primitiveQuery(ObjectContainer container) {
        List pilots = container.query(new Predicate() {
          public boolean match(Pilot pilot) {
            return pilot.getPoints() == 100;
          }
        });
      }

    Para más información sobre NQs:
    http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Querying/Native_Queries

    Con respecto al comentario de consultas lentas de Belmond, quisiera decir que en los foros la respuesta no está garantizada y a veces pasa que alguna pregunta no tenga una respuesta satisfactoria. Pido disculpas pero a veces es así (recuerden que también necesitamos atender el servicio de soporte comercial (dDN)).
    De todas maneras, si mal no recuerdo, Belmond tu estabas intentando lograr una buena performance en consultas para un newsreader RSS, verdad? Si hechas un vistazo a este proyecto: http://www.rssowl.org veras que allí tienen un newsreader open source de calidad que utiliza db4o donde las consultas tienen una buena performance. Por lo tanto deberiamos descartar que el problema se trate de alguna falla en el sistema de consultas de db4o.

    db4o se encuentra en una posición donde al no ser tan popular como otras tecnologías (ej Hibernate) y ser fundamentalmente distinto en cuanto a paradigma es vulnerable a muchos ataques de parte de desarrolladores que no han tenido la oportunidad de comprender el manejo (y no estoy hablando de comentarios en este thread ya que todos han sido muy respetuosos). Esto no es culpa de la tecnología en si (y ciertamente no la desmerece) pero quizá si sea culpa de que gente como yo no este logrando transmitir las ventajas de la tecnología. Por ello es que quiero compartir los articulos y todo el material que pueda con Ud., porque sinceramente creo que db4o es una alternativa válida al paradigma ORM (no estamos obligados a utilizar una relacional como motor de persistencia de bajo nivel, o si? Y quien dijo que una base relacional constituye la mejor alternativa de bajo nivel para persistir objetos?) y porque día a día db4o mejora y evoluciona escuchando las necesidades que nos manifiestan los desarrolladores (leemos todos los foros, revisamos páginas de internet, leemos sus blogs si tienen que decir algo sobre db4o, etc).

    Bueno, les agradezco a todos y los aliento a darle una oportunidad a db4o y probarlo (antes de crusificarlo)!

    (No se si están usando algo nuevo para la presentación del sitio pero la verdad se ve espectacular (felicitaciones para los webmasters de javaHispano)).

    Cordiales saludos a todos!

    German Viscuso

  • Anónimo 17/11/2007 02:32

    El problema es que muchos de uds. piensan en db4 como una base de datos relacional .... no es lo mismo ... es un camtbio radical de paradigma, yo lo he usado en un proyecto .... de un hospital ... carge 320.000 obejtos (Pacientes ) y todo funcionó bastante bien ... considerando "Transaciones" ...

    Igual en Postgresql si ingreso Pacientes en modo de transaciones automaticas (es decir por cada sentencia insert hace una transacion .. el perfomance de db4 no es nada lento .muy comparable ...

    La ventaja de usar db4 es cuando tenemos que trabajar con objetos que tienen un grafo complejo de otros objetos asocioados, se gana mas tiempo cargando el objeto completo .. que si tuviera que hacer "Selects " de diferentes tablas usando SQL.

    Otra ventaja muy buena es que la seguridad de los datos, solo en el contexto de los objetos del sistema a desarrollar se puede modifcar los datos (por lo menos las asociaciones ).

    Al fin y al cabo una vehiculo puede ser una motocicleta o un automovil, pero los dos objetos tienen un uso diferente ...

  • Anónimo 28/02/2008 18:59

    basta de bases de datos relacionales..por favor.. es una tecnología que tiene casi 50 años.y los orm? me parecen un parche para aydarnos a soportar el cambio de tecnologia de almacenamiento.. para q sirven? para mejor tiempos de desarrollo no para mejorar la calidad de una aplicacion....

    que tiene que ver una clase con una tabla? que tiene que ver una columna con un atributo? que tiene q ver el c*lo con la camiseta? 

    esta farsa no da para mas.. tamos en el 2008..

    saludos!

    DBAs.. no hay nada personal.. :) 

    esteban 

     

Escribe tu comentario

Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano