2010-12-29 17 views
7

Cuál es la mejor base de datos de objetos de valor de Java por ahí que tiene:¿Cuál es la mejor base de datos de objetos Java?

  • Facilidad de uso: una línea de código a tienda de cualquier objeto.
  • Uso eficiente de la memoria: es decir, solo carga las cosas que se requieren, no el objeto completo todo el tiempo (es decir, "Activación transparente").
  • Cambia automáticamente los objetos cuando se manipula (es decir, "Transparente persistencia").
  • consulta nativa (sin necesidad de SQL, JDOQL etc.)
  • gratuito

donde alguien ha conseguido lo siguiente:

  • NeoDatis
  • db4o
  • JODB
  • joafip
  • MyOODB

?

+2

db4o .... tiene todo lo que ha enumerado. Además, cuenta con el respaldo de una empresa pública, por lo que no desaparecerá y está siendo utilizado por muchas empresas ... Sony, Savi, CISCO, etc ... más de 100.000 miembros de la comunidad. – Robert

Respuesta

0

Tome un vistazo a Redis:

http://redis.io/clients

Tiene clientes de Java y de la experiencia personal, objetos Java mapa mejor a las bases de datos basada en una clave-valor que relacional DB, pero tu caso es distinto en función de sus patrones de uso y tipos de datos.

Nota: Puede que no cubra todos sus requisitos anteriores, pero es probable que pueda agregar dicha funcionalidad usted mismo con bastante facilidad.

Actualización:https://github.com/xetorthio/johm

+1

No creo que sea un software de base de datos de objetos, ¿o sí? – Navigateur

+0

No es estrictamente un Object DB, pero con soporte de hash y buen software de cliente, puede comportarse como uno solo. –

+0

@Navigateur: en realidad eso no es realmente un problema visto que el 99% de los programas Java no son programas OO;) Piense en esto: * equals * y * hashCode * están presentes en la parte superior de la jerarquía de Java OO y sin embargo, son fundamentalmente incompatibles con la herencia (esto está muy bien demostrado en Joshua Bloch * "Effective Java" *). La cosa es: las personas usan "objetos" Java, pero no hacen OO. Es por eso que colecciones como mapas y conjuntos funcionan (no lo harían si la herencia estuviera involucrada, porque * es igual a * y * código hash * son incompatibles con la herencia) y es por eso que la clave/valor almacena rocas ... – SyntaxT3rr0r

4

sólo puedo responder por db4o. No tengo suficiente experiencia con las otras bases de datos que ha nombrado.

  • Facilidad de uso: creo que db4o es muy fácil de usar en muchos escenarios. Agregue el jar db4o a su proyecto, abra la base de datos y start storing and querying objects.
  • Uso eficiente de la memoria: Sí, db4o puede hacer eso. Es compatible con transparent activation. En ese modo, db4o carga solo los objetos que está usando en realidad.
  • Cambia automáticamente objetos cuando se manipula: También es supported.
  • Consulta nativa: Sí db4o supports eso. Las consultas nativas son geniales y potentes. Sin embargo, en la práctica, las consultas nativas complejas a menudo no se pueden optimizar y ejecutar de forma lenta. En tales casos, debe recurrir a consultas SODA menos elegantes.
  • Es gratis bajo una licencia GPL.

Otra ventaja de db4o que tiene una comunidad que puede ayudar y compartir conocimientos.

¿Tiene un escenario de caso de uso particular para la base de datos? Creo que debes escoger la base de datos que mejor se adapte a tu aplicación.

+0

No olvide que el optimizador de consultas de tiempo de compilación ofrece excelentes comentarios sobre si un NQ es demasiado complejo para ser optimizado. –

1

Recientemente he usado HyperGraphDB, que cumple todos sus requisitos. Estoy impresionado con esto: "HyperGraphDB es un mecanismo de almacenamiento de datos de código abierto y de propósito general basado en un poderoso formalismo de gestión del conocimiento conocido como hipergramas dirigidos. Mientras es un modelo de memoria persistente diseñado principalmente para gestión del conocimiento, AI y proyectos de web semántica, también se puede utilizar como una base de datos incrustada orientada a objetos para proyectos Java de todos los tamaños. O una base de datos de gráficos o una base de datos relacional (no SQL) ".

+0

También recomiéndelo, solo agregue el contenedor de la biblioteca y comience a usar la base de datos de gráficos sin la necesidad de ejecutar un proceso de servidor de base de datos por separado. –

Cuestiones relacionadas