db4o (database for objects) era una base de datos de objetos de código abierto integrable para desarrolladores de Java y .NET . Fue desarrollada, licenciada comercialmente y mantenida por Actian . En octubre de 2014, Actian decidió no continuar promocionando activamente la oferta comercial de db4o para nuevos clientes. [ 1 ]
Historia
El término sistema de base de datos orientado a objetos se remonta a alrededor de 1985, aunque los primeros avances en investigación en este campo comenzaron a mediados de la década de 1970. Los primeros sistemas comerciales de gestión de bases de datos orientadas a objetos se crearon a principios de la década de 1990; estos incorporaron el concepto de persistencia nativa basada en bases de datos al campo del desarrollo orientado a objetos.
La segunda ola de crecimiento se observó en la primera década del siglo XXI, cuando aparecieron en el mercado bases de datos orientadas a objetos escritas completamente en un lenguaje orientado a objetos . db4o es uno de los ejemplos de estos sistemas escritos completamente en Java y C#.
El proyecto db4o fue iniciado en el año 2000 por el arquitecto jefe Carl Rosenberger y lanzado al mercado en 2001. Se utilizó en aplicaciones empresariales y académicas antes de su anuncio comercial en 2004 por la recién creada empresa privada Db4objects Inc.
En 2008, db4o fue adquirido por la corporación Versant , que lo comercializó como software de código abierto con doble licencia: comercial y bajo la Licencia Pública General de GNU (GPL).
Descripción general
db4o representa un modelo de base de datos orientado a objetos . Uno de sus principales objetivos es proporcionar una interfaz sencilla y nativa para la persistencia en lenguajes de programación orientados a objetos . El desarrollo con la base de datos db4o no requiere la creación de un modelo de datos independiente ; el modelo de clases de la aplicación define la estructura de los datos. db4o busca evitar la incompatibilidad entre objetos y relaciones eliminando la capa relacional del proyecto de software. db4o está escrito en Java y .NET y proporciona las API correspondientes. Puede ejecutarse en cualquier sistema operativo compatible con Java o .NET. Se ofrece bajo licencias como la GPL, la Licencia de Compatibilidad de Código Abierto de db4o (dOCL) y una licencia comercial para su uso en software propietario.
Los desarrolladores que utilizan bases de datos relacionales pueden considerar db4o como una herramienta complementaria. El intercambio de datos entre db4o y RDBMS se puede implementar mediante el Sistema de Replicación de db4o (dRS). dRS también se puede utilizar para la migración entre tecnologías orientadas a objetos (db4o) y relacionales ( RDBMS ).
Como base de datos integrada , db4o puede ejecutarse en el proceso de la aplicación. Se distribuye como una biblioteca (jar/dll).
Características
Base de datos de una sola línea de código
db4o contiene una función para almacenar cualquier objeto:
objectContainer.store ( new SomeClass ( )) ;Aquí, SomeClass no requiere la implementación de interfaces, anotaciones ni la adición de atributos. Puede ser cualquier clase de aplicación, incluidas las clases de terceros contenidas en las bibliotecas referenciadas.
Todos los objetos de campo (incluidas las colecciones) se guardan automáticamente. Los casos especiales se pueden manejar escribiendo manejadores de tipo personalizados. [ 2 ]
Integrable
db4o está diseñado para integrarse en clientes u otros componentes de software de forma invisible para el usuario final. Por lo tanto, db4o no requiere un mecanismo de instalación independiente, sino que se presenta como un único archivo de biblioteca con un tamaño aproximado de 670 kB en la versión .NET y de aproximadamente 1 MB en la versión Java.
Modo cliente-servidor
La versión cliente/servidor permite que db4o se comunique entre aplicaciones del lado del cliente y del servidor. Utiliza TCP/IP para la comunicación cliente-servidor y permite configurar el número de puerto. La comunicación se implementa mediante mensajería.
Gracias a una función denominada "Reflexión genérica", db4o puede funcionar sin implementar clases persistentes en el servidor. Sin embargo, este modo tiene limitaciones. [ 3 ]
Evolución dinámica de esquemas
db4o admite la evolución automática del esquema de objetos para los cambios básicos del modelo de clases (eliminación/adición de nombres de campos). Las modificaciones más complejas del modelo de clases, como el cambio de nombre de campo, el cambio de tipo de campo o el movimiento de jerarquía, no se automatizan de forma predeterminada, pero se pueden automatizar escribiendo un pequeño programa de actualización de utilidad (consulte la documentación ).
Esta característica puede considerarse una ventaja sobre el modelo relacional, donde cualquier cambio en el esquema conlleva principalmente una revisión manual del código y una actualización para adaptarlo a los cambios del esquema.
Consultas nativas
En lugar de utilizar API basadas en cadenas (como SQL , OQL , JDOQL, EJB QL y SODA), las consultas nativas (NQ) permiten a los desarrolladores usar directamente el lenguaje de programación (por ejemplo, Java, C# o VB.NET) para acceder a la base de datos y, por lo tanto, evitar un cambio de contexto constante y que reduce la productividad entre el lenguaje de programación y la API de acceso a datos. Las consultas nativas también proporcionan seguridad de tipos y eliminan la necesidad de protegerse contra la inyección de código (véase Inyección SQL ).
LINQ
La compatibilidad con LINQ está totalmente integrada en db4o para .NET versión 3.5. LINQ permite la creación de consultas orientadas a objetos de cualquier complejidad, con la ventaja de la comprobación en tiempo de compilación, la integración con Intellisense del IDE y la refactorización automatizada.
Gracias a su integración con algunas bibliotecas de código abierto, db4o también permite realizar consultas LINQ optimizadas en Compact Framework.
LINQ se puede utilizar tanto con bases de datos relacionales como orientadas a objetos, sirviendo así de puente entre ellas. También puede emplearse como capa de abstracción, lo que permite cambiar fácilmente la tecnología de base de datos subyacente.
Desventajas
Los inconvenientes y dificultades a los que se enfrentan otras bases de datos orientadas a objetos también se aplican a Db4o:
- Otros factores que dificultan el uso de los sistemas de gestión de bases de datos orientadas a objetos (ODBMS) son la falta de interoperabilidad con numerosas herramientas y funcionalidades que se dan por sentadas en SQL, como la conectividad estándar del sector, las herramientas de generación de informes , las herramientas OLAP y los estándares de copia de seguridad y recuperación. Además, las bases de datos orientadas a objetos carecen de una base matemática formal, a diferencia del modelo relacional , lo que genera limitaciones en su soporte para consultas . Sin embargo, algunos ODBMS ofrecen soporte completo para SQL, además del acceso de navegación, como Objectivity /SQL++, Matisse e InterSystems CACHÉ. Su uso eficaz puede requerir concesiones para mantener la coherencia entre ambos paradigmas.
Las desventajas específicas de Db4o pueden incluir:
- Falta de indexación de texto completo , bajo rendimiento en la búsqueda de texto completo [ 4 ]
- Falta de indexación para tipos de cadena , lo que significa que las búsquedas basadas en texto pueden ser potencialmente muy lentas.
- "No existe un lenguaje de consulta general como SQL que pueda utilizarse para el análisis de datos o por otras aplicaciones. Esto impide que db4o sea muy flexible en un entorno heterogéneo" [ 4 ].
- La replicación no se puede realizar administrativamente; es decir, se necesita programar una aplicación para lograr la replicación. "Esto es contrario a la mayoría de los sistemas de gestión de bases de datos relacionales (RDBMS), donde los administradores gestionan los servidores y la replicación entre ellos." [ 4 ]
- Los campos borrados no se eliminan inmediatamente, solo se ocultan hasta la siguiente desfragmentación.
- No incluye soporte integrado para importar/exportar datos desde/hacia archivos de texto, XML o JSON.
Portabilidad e implementación multiplataforma
db4o es compatible con las versiones 1.1.x a 6.0 del JDK de Java y se ejecuta en Java EE y Java SE . También funciona con dialectos de Java ME que admiten reflexión, como CDC , Personal Profile , Symbian OS , SavaJe y Zaurus . Según la demanda del cliente, db4o también se ejecutará en dialectos sin reflexión, como CLDC , MIDP , BlackBerry y Palm OS .
db4o se probó con éxito en JavaFX y Silverlight . db4o se ejecutó en Android .
db4o utiliza una función personalizada llamada "reflector genérico" para representar la información de las clases cuando no se dispone de definiciones de clase, lo que permite su uso en un entorno mixto Java-.NET, por ejemplo, cliente Java - servidor .NET y viceversa. [ 3 ] El reflector genérico también facilita la conversión del proyecto entre entornos, ya que no es necesario convertir la base de datos.
Documentación y soporte
db4o proporciona fuentes de documentación: tutorial, [ 5 ] documentación de referencia, [ 6 ] documentación de la API, [ 7 ] paircasts en línea [ 8 ] y blogs. [ 9 ] También se puede obtener información de foros [ 10 ] y aportaciones de la comunidad [ 11 ] (artículos, fuentes de documentación traducidas, proyectos de ejemplo, etc.).
Para usuarios comerciales, db4o sugiere la suscripción a dDN (red de desarrolladores de db4o) con soporte garantizado las 24 horas y sesiones de emparejamiento en vivo con el cliente : Xtreme Connect. [ 12 ]
Administrador de objetos
Object Management Enterprise (OME) es una herramienta de exploración de bases de datos db4o, disponible como complemento para Eclipse y MS Visual Studio 2005/2008. OME permite explorar clases y objetos en la base de datos, conectarse a un servidor de base de datos, crear consultas mediante la función de arrastrar y soltar y utilizar estadísticas de la base de datos.
OME proporciona algunas funciones administrativas como indexación, desfragmentación y copia de seguridad. Inicialmente, OME se ofreció a los clientes como un producto comercial disponible únicamente para los suscriptores de dDN. A partir de la versión 7.8 de db4o, OME se incluyó en la distribución estándar de db4o y el código fuente se puso a disposición del público en el repositorio svn de db4o. [ 13 ]
Versiones
db4o publica versiones de desarrollo, producción y estables. La versión de desarrollo ofrece las funciones más recientes y se publica para pruebas, comentarios de la comunidad y evaluación. La versión de producción está diseñada para su uso en entornos de producción e incluye funciones que ya han sido evaluadas y probadas con el tiempo. La versión estable está diseñada para su uso en el producto final.
db4o también ejecuta una compilación continua, que se activa con cada nuevo cambio que se añade al repositorio de código SVN. Esta compilación está abierta a la comunidad y puede utilizarse para evaluar los últimos cambios y obtener las funciones más recientes.
El formato del nombre de compilación de db4o está diseñado para proporcionar toda la información necesaria sobre la versión, la hora de compilación y la plataforma compatible:
Por ejemplo: db4o-7.2.30.9165-java.zip
db4o – nombre del producto, es decir, el motor de base de datos db4o
7.2 – el número de lanzamiento
30 – número de iteración, es decir, un número secuencial que identifica una semana de desarrollo.
9165 – Número de revisión SVN, correspondiente al último commit que activó la compilación.
java – Versión Java de db4o. La versión .NET se identifica con “net” para las versiones .NET 2.0 o “net35” para la versión .NET 3.5. La versión .NET incluye la versión correspondiente de Compact Framework.
El repositorio público SVN de db4o también está disponible para que los desarrolladores obtengan el código fuente y compilen versiones localmente con o sin modificaciones personalizadas.
A continuación se presenta un breve resumen de las principales características de las versiones estables, de producción y de desarrollo:
Referencias
- 1 2 "Declaración de Actian sobre DB4O" . Actian . Consultado el 17 de marzo de 2015 .
- ↑ "TypeHandlers" . Archivado del original el 9 de julio de 2011. Consultado el 26 de agosto de 2010 .
- 1 2 "API de reflexión de Db4o" . Archivado del original el 4 de abril de 2011. Recuperado el 26 de agosto de 2010 .
- 1 2 3 "Copia archivada" (PDF) . Archivado del original (PDF) el 06-07-2011 . Recuperado el 11-10-2010 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ "Copia archivada" . Archivado del original el 17 de diciembre de 2010. Consultado el 26 de agosto de 2010 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ "Documentación" . Archivado del original el 6 de noviembre de 2010. Consultado el 26 de agosto de 2010 .
- ↑ "Copia archivada" . Archivado del original el 18 de marzo de 2011. Recuperado el 26 de agosto de 2010 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ "Webcasts" . Archivado del original el 10/10/2010 . Consultado el 26/08/2010 .
- ↑ "Blogs" . Archivado del original el 22/09/2010 . Consultado el 26/08/2010 .
- ↑ "Comunidad de desarrolladores de Db4o - Foros" . Archivado del original el 12 de mayo de 2009. Consultado el 10 de junio de 2009 .
- ↑ "Comunidad de desarrolladores de Db4o - ProjectSpaces" . Archivado del original el 25 de febrero de 2009. Consultado el 10 de junio de 2009 .
- ↑ "Información del producto" . Archivado del original el 2 de marzo de 2009. Consultado el 10 de junio de 2009 .
- ↑ "Revisión 15856: /Trunk/Enterprise" . Archivado del original el 09/07/2011 . Consultado el 26/08/2010 .
- 1 2 "Centro de descargas: Db4o 7.4" . Archivado del original el 8 de febrero de 2009. Recuperado el 10 de junio de 2009 .
- ↑ "Centro de descargas: Db4o 7.10" . Archivado del original el 31 de mayo de 2009. Consultado el 10 de junio de 2009 .
Lecturas adicionales
Enlaces externos
- Artículo sobre RETSCAN, un sistema de escaneo de retina que utiliza db4o . Drdobbs.com.
- Sistemas de gestión de bases de datos orientados a objetos
- Sistemas de gestión de bases de datos gratuitos
- NoSQL
- Software gratuito programado en C#
- Software libre programado en Java.
- Software que utiliza la Licencia Pública General de GNU.