java database comparison

java - hsqldb



Comparación de bases de datos incorporadas de Java (18)

Soy un gran admirador de DB4O tanto para .Net como para Java .

El rendimiento se ha vuelto mucho mejor desde las primeras versiones. El modelo de licencia tampoco es tan malo. Particularmente me gustan las opciones disponibles para consultar tus objetos. La consulta por ejemplo es muy poderosa y fácil de acostumbrar.

Tengo la intención de desarrollar una pequeña aplicación (Java) para administrar mis finanzas. Creo que necesito usar una base de datos integrada, pero no tengo experiencia con respecto a este tema. Traté de ver algunos de los productos disponibles , pero no puedo decidir cuál sería más adecuado para mí. H2 , HSQLDB , Derby y Berkeley DB parecen ser buenos candidatos, pero aún no veo cómo se comparan entre sí. Agradezco su ayuda para compararlos y ayudarme a decidir cuál utilizar.

Tengo la intención de utilizar Hibernate para mi aplicación (a menos que recomiende usar la API proporcionada por DBMS), pero también quiero tener la capacidad de editar la base de datos fácilmente usando una herramienta de exploración SQL (modificar el esquema y cambiar los datos).

Gracias.


Usamos HSQLDB en producción como una opción de "no-configuración" para nuestra aplicación. Permite probar a las personas sin la molestia de configurar una base de datos real.

Sin embargo, no lo apoyamos para un uso normal. Las razones son varias:

  1. Se reduce proporcionalmente al tamaño de los datos.
  2. Es difícil acceder fuera de nuestra aplicación (por ejemplo, para informes personalizados).
  3. Transacciones / sincronización de disco es difícil de hacer bien, por lo que es fácil perder datos.

Por lo menos (2) y (3), hay formas de evitarlo, pero es difícil; es mucho más fácil, por ejemplo, instalar MySQL.


Utilizo Apache Derby para casi todas las necesidades de mi base de datos incrustada. También puede usar Sun DB de Java que se basa en Derby, pero la última versión de Derby es mucho más nueva. Admite una gran cantidad de opciones compatibles con las bases de datos comerciales y nativas, pero es mucho más pequeña y fácil de integrar. He tenido algunas tablas de bases de datos con más de un millón de registros sin problemas.

Solía ​​usar HSQLDB e Hypersonic hace 3 años. Tiene algunos problemas de rendimiento importantes en el momento y me cambio a Derby debido a esos problemas. Derby ha sido sólido incluso cuando estaba en incubadora en Apache.


He usado Derby y realmente odio sus funciones de conversión de tipo de datos, especialmente las funciones de fecha / hora. (Tipo de número) <-> Conversión de Varchar es un dolor.

De modo que si planifica usar conversiones de tipos de datos en sus declaraciones de base de datos, considere el uso de otra base de datos integrada, lo aprendo demasiado tarde.

Últimas conversiones de tipos de datos de la versión Derby


neo4j es:

un motor de persistencia de Java embebido, basado en disco y totalmente transaccional que almacena datos estructurados en gráficos en lugar de en tablas

No he tenido la oportunidad de probarlo todavía, pero parece muy prometedor. Tenga en cuenta que esta no es una base de datos SQL, su gráfico de objetos se conserva para usted, por lo que podría no ser apropiado para su aplicación actual.


¿Qué criterios usará para evaluar estos? Si aún no lo sabe, no necesita decidir ahora mismo. Intente hacer que su aplicación sea lo más independiente posible de la implementación de la base de datos, proporcionando los contenedores adecuados, los objetos de acceso a los datos, etc., y tome esta decisión cuando tenga todos los datos a mano y tenga que decidir.

Si está utilizando bases de datos relacionales y SQL, lo anterior no debería ser demasiado difícil (usando JDBC, etc.). Asegúrese de tener muchas pruebas en el entorno para que, cuando desee cambiar de una base de datos a otra, pueda determinar si la funcionalidad de la aplicación sigue siendo la misma.

Me encontré con el mismo problema hace algún tiempo. No sabía qué base de datos buscar, así que mi primera solución usó Derby (o HSQLDB?), Y luego pude cambiar a HSQLDB (o Derby? No recuerdo qué solución funcionó) una vez que determiné dónde Tenía problemas (relacionados con el rendimiento) y qué solución realmente me funcionaría.


La mayoría de las cosas ya se han dicho, pero puedo agregar que he usado HSQL, Derby y Berkely DB en algunos de mis proyectos favoritos y que todos funcionaron bien. Entonces, no creo que realmente importe mucho ser honesto. Una cosa que vale la pena mencionar es que HSQL se guarda a sí mismo como un archivo de texto con sentencias de SQL que es bastante bueno. Hace que sea muy fácil para cuando estés desarrollando hacer pruebas y configurar datos rápidamente. También puede hacer ediciones rápidas si es necesario. Supongo que puedes transferir todo eso fácilmente a cualquier base de datos si alguna vez necesitas cambiarlo :)



Personalmente, estoy a favor de HSQLDB, pero sobre todo porque fue la primera vez que lo intenté.

Se dice que H2 es más rápido y proporciona una interfaz gráfica de usuario más bonita (que es genérica y funciona con cualquier controlador JDBC, por cierto).

Al menos HSQLDB, H2 y Derby proporcionan modos de servidor, lo que es genial para el desarrollo, porque puede acceder a la base de datos con su aplicación y algunas herramientas al mismo tiempo (lo que normalmente no permite el modo integrado).


Ya sea

  • HSQLDB : utilizado por OpenOffice, probado y estable. Es fácil de usar Si desea editar sus datos de base de datos, puede simplemente abrir el archivo y editar las instrucciones de inserción.

o

  • H2 - Se dice que es más rápido (por el desarrollador, que originalmente diseñó hsqldb, también)

El que uses depende de ti, dependiendo del rendimiento y de la estabilidad que necesites.

El desarrollador de H2 ha puesto una buena evaluación de rendimiento:
http://www.h2database.com/html/performance.html


HSQLDB es un buen candidato (el hecho de que se use en OpenOffice puede convencer a algunos de ustedes), pero para una aplicación personal tan pequeña, ¿por qué no usar una base de datos de objetos (en lugar de una base de datos relacional clásica)?

Usé DB4O en uno de mis proyectos, y estoy muy satisfecho con él. Al estar orientado a objetos, no necesita toda la capa de Hibernate, ¡y puede insertar / actualizar / eliminar / consultar objetos directamente! Además, no tiene que preocuparse por el esquema, trabaja directamente con los objetos y DB4O hace el resto.

Estoy de acuerdo en que puede llevar algo de tiempo acostumbrarse a este nuevo tipo de base de datos, pero consulte el tutorial DB40 para ver qué fácil es trabajar con DB.

EDITAR: Como se dijo en los comentarios, DB4O maneja automáticamente las versiones más nuevas de las clases. Además, se encuentra disponible una herramienta para explorar y actualizar la base de datos fuera de la aplicación aquí: http://code.google.com/p/db4o-om/


HSQLDB puede causar problemas para aplicaciones grandes, no es tan estable.

Lo mejor que he escuchado (sin experiencia de primera mano sin embargo) es berkleyDB. Pero a menos que tenga un código abierto, le costará mucho trabajo usarlo debido a la licencia ... vea esto http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html para detalles.

PD. berkleyDB no es una base de datos relacional en caso de que no lo sepas.



Creo que llegué un poco tarde (mucho tarde ;-)) a esta publicación, pero me gustaría agregar Prest, una base de datos incrustada orientada a objetos de código abierto para Java y .NET. por tu consideración. Prest es una base de datos incrustada de fuente abierta / doble licencia para Java. La distribución es compatible con la plataforma Android de Google y también incluye Perst Lite para Java ME. Incluso hemos creado un punto de referencia de Android y hemos producido un documento técnico sobre el tema ... puede verlo aquí: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid=133

Todo lo mejor, Chris


Si estoy en lo correcto H2 es de los mismos tipos que escribieron HSQLDB. Es mucho mejor si confías en los puntos de referencia en su sitio. Además, existe la noción de que la comunidad solar saltó demasiado rápido en Derby.


Necesitaba usar la base de datos Java embebida en uno de mis proyectos e investigué mucho sobre los pros y los contras de cada base de datos. Escribí un blog que enumeraba las ventajas y desventajas de las populares bases de datos Java (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), puedes echarle un vistazo. Elegí H2 porque pensé que se ajustaba mejor a mis requisitos. Enlace para el blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Espero que ayude!


¡Java DB (distribución de Sun de Apache Derby) ahora se envía en JDK 6!

Me han querido hacer algo como Jason Cohen y he pensado que esto parece ser la forma más fácil de estar en la distribución de JDK (que la semana pasada ahora es un requisito para mi aplicación). O tal vez soy perezoso de esa manera.