Humanética

http://weblogs.javahispano.org/ricardo/date/20060926 Tuesday September 26, 2006

db4o

Bueno, y después de escuchar tanto de sobre db4o y sus maravillas he decidido probarlo. Estoy leyendo la documentación (con la idea adicional de buscar un proyecto real en el cual utilizarlo; algo pequeño, para comenzar).

Qué fácil es persistir objetos y realizar las operaciones asociadas, incluso con objetos estructurados. También es sencillo realizar consultas, utilizar filtros con diferentes criterios, y manejar la herencia. Hay soporte para transacciones y se puede trabajar de forma embebida o como un servidor.

Los problemas que hasta ahora he encontrado (ya sea por ignorancia o porque realmente es una limitación de db4o) son los siguientes:

  • Si se envía una orden de borrar a un objeto que es referenciado por otro, se borra sin más, quedando objetos que referencian a uno que ya no existe. Es decir, no hay una restricción tipo Foreign Key de una base de datos relacional.
  • Para identificar un objeto, hay que recuperarlo. Al parecer no existe una forma de generar identificadores únicos para los mismos (bueno, tal vez esta no sea una limitación, sino mi forma de pensar).
  • No encuentro una forma de establecer una regla en la que solo exista un objeto con un valor en una de sus propiedades (por decir algo, no pueden existir dos ciudadanos con el mismo documento de identidad).
  • Los cálculos matemáticos sobre propiedades de los objetos no parece tan sencillo. El sql siempre me maravilló por su capacidad de crear "miles" de consultas distintas, algunas de las cuales pueden incluir cálculos verdaderamente complejos.
  • Tampoco veo claro como realizar consultas que abarquen varios objetos de forma masiva (algo así como consultas con join en una rdbms).
Si alguno de los lectores de este post sabe como (o tiene un enlace) hacer las cosas que menciono en la lista, por favor hagame llegar la información.