Tengo la intención de desarrollar un pequeño (Java) aplicación para el manejo de mis finanzas. Creo que tengo que usar una base de datos incrustada, pero yo no tengo experiencia con respecto a este tema. Traté de mirar en algunos de los productos disponibles, pero no puedo decidir cuál sería la más adecuada para mí. H2, HSQLDB, Derby y Berkeley DB parecen ser buenos candidatos, pero todavía no veo cómo se comparan entre otros. Agradezco su ayuda la comparación de ellos y me ayuda a decidir cuál utilizar.

Tengo la intención de usar el modo de Hibernación para mi aplicación (a menos que usted recomendaría el uso de DBMS proporciona API), pero también quiero tener la posibilidad de editar la base de datos fácilmente con un SQL herramienta de navegación (modificación del esquema y de la modificación de datos).

Gracias.

  • Sin saber lo que estás tratando de hacer, no es posible responder a esta pregunta. Sugiero la actualización de la pregunta con la información sobre el tamaño de su proyecto, el número de mesas que creo que vas a tener, cuántos registros, etc.
  • posibles duplicados de Embebido java bases de datos
  • Comparación de la moderna incrustado clave-valor de tiendas para Java
  • Es molesto que tal buenas preguntas son cerradas por los Nazis. Seguro, algunas vagas preguntas no son adecuados, pero esto ciertamente lo es. Donde «Adecuado» significa útil para la comunidad, en lugar de por un legalista definiciones.
InformationsquelleAutor Hosam Aly | 2009-01-20

18 Comentarios

  1. 56

    Ya sea

    • HSQLDB – Utilizado por OpenOffice, probado y estable. Es fácil de usar. Si desea editar su db-datos, usted puede abrir el archivo y editar el insert.

    o

    • H2 – Dijo para ser más rápido (por el promotor, que originalmente diseñado hsqldb, demasiado)

    Que uno debe usar depende de usted, dependiendo de cuánto rendimiento y cuánto la estabilidad que necesita.

    El desarrollador de H2 ha puesto una buena evaluación de desempeño:

    http://www.h2database.com/html/performance.html

  2. 34

    Yo uso Apache Derby para casi todos los de mi base de datos integrada de las necesidades. También puede utilizar Sun Java DB, que se basa en el Derby, pero la versión más reciente de Derby, es mucho más reciente. Es compatible con una gran cantidad de opciones que comercial, nativo de las bases de datos de apoyo, pero es mucho más pequeño y más fácil de incrustar. He tenido algunas tablas de base de datos con más de un millón de registros sin problemas.

    Solía usar HSQLDB y Hipersónicas hace alrededor de 3 años. Tiene algunos de los principales problemas de rendimiento en el tiempo y quiero cambiar a Derby de que a causa de esos problemas. Derby ha sido sólido, incluso cuando estaba en la incubadora de Apache.

    • Derby sería genial si no fuera por el hecho de que hay tantos errores y la última actualización fue hace varios años.
    • Yo no puedo dar fe de los errores, pero «…la última actualización fue hace varios años» es incorrecta. En relación a la hora que has publicado tu comentario (de agosto de 2016): hubo un lanzamiento a menos de un año antes (de octubre de 2015), una versión de dos meses después (de octubre de 2016), y una versión un poco más de un año después (de octubre de 2017 – la Última).
    • La actualización de este comentario por si alguien viene a través de este tema en una búsqueda. Derby más reciente lanzamiento fue en Marzo de 2019. Aquí está su sitio info: db.apache.org/derby
  3. 28

    Que necesitaba usar Java base de datos incrustada en uno de mis proyectos y me hizo mucha investigación la comprensión de los pros y los contras de cada base de datos. Escribí un blog en el listado de pros y contras de la popular embedded java bases de datos (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), usted puede tener una mirada en ella. Elegí H2 como pensé que mejor se adapta a mis necesidades.
    Enlace para el blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html
    Espero que ayude!

  4. 14

    HSQLDB es un buen candidato (el hecho de que se utiliza en OpenOffice puede convencido de que algunos de ustedes), pero para un pequeño personal de aplicación, ¿por qué no usar un objeto de base de datos (en lugar de un clásico relationnal base de datos) ?

    He utilizado DB4O en uno de mis proyectos, y estoy muy satisfecho con ella. Ser orientado a objetos, no es necesario el conjunto de Hibernación de la capa, y directamente se puede insertar/actualizar/borrar/consulta de objetos ! Por otra parte, usted no necesita preocuparse acerca del esquema, que trabajan directamente con los objetos y DB4O hace el resto !

    Estoy de acuerdo en que puede tomar algún tiempo para acostumbrarse a este nuevo tipo de base de datos, pero revise la DB40 tutorial para ver lo fácil que hace el trabajo con el DB !

    EDIT: Como se dijo en los comentarios, DB4O maneja automáticamente las nuevas versiones de las clases. Por otra parte, una herramienta para la navegación y la actualización de la base de datos desde fuera de la aplicación está disponible aquí : http://code.google.com/p/db4o-om/

    • Gracias. DB4O se ve bien para un proyecto pequeño, pero creo que la capacidad de examinar y editar los datos fuera de la aplicación es muy importante. También sería fácil para manejar las versiones más recientes de clases? (por ejemplo, añadido/quitado campos)
    • Como dije en mi edición, no existe una herramienta para la navegación y la edición de la base de datos fuera de la aplicación. Y como Fabian dijo, las versiones más recientes de las clases son automáticamente handeld.
    • Gracias por la actualización. Tener una herramienta de navegación fue muy importante para mí, así que muchas gracias.
  5. 12

    Java DB (Sol de la distribución de Apache Derby) ahora viene en JDK 6!

    Me han querido hacer algo como Jason Cohen y han estado pensando en esto parece la manera más fácil de estar en el JDK distro (que la semana pasada, ahora es un requisito para mi aplicación). O tal vez sólo soy perezoso de esa manera.

    • Usted está probablemente en lo cierto! Tenemos un requisito también se ejecutan en Java 1.5, así que esto no es una opción para nosotros.
    • …Que yo significaba que estaban en lo correcto acerca de que sea la manera más fácil, y no se trata de ser perezoso. 😛
    • Java DB buques sólo con el Sun/Oracle implementaciones de la versión de JDK. No es una parte estándar de Java.
  6. 7

    Utilizamos HSQLDB en la producción como un «no-configuración» opción para nuestra aplicación. Permite a las personas a un juicio sin la molestia de la configuración de una base de datos real.

    Sin embargo, tenemos que no de apoyo para el uso normal. Las razones son varias:

    1. Se ralentiza de forma proporcional al tamaño de los datos.
    2. De difícil acceso fuera de nuestra aplicación (por ejemplo, para los informes personalizados).
    3. Transacciones /disco-sync es difícil hacerlo bien, así que es fácil perder los datos.

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

  7. 7

    neo4j es:

    integrado, basado en disco, completamente transaccional de persistencia Java motor que almacena los datos estructurados en los gráficos, en lugar de en las mesas

    Yo no he tenido la oportunidad de probarlo aún, pero se ve muy prometedor. Nota que esto no es una base de datos SQL – su objeto gráfico se conserva para usted – por lo que puede no ser apropiado para su aplicación existente.

  8. 4

    Yo soy un gran fan de DB4O para ambos .Net y Java.

    Rendimiento se ha convertido en mucho mejor desde las primeras versiones. El modelo de concesión de licencias no es demasiado malo, tampoco. Me gustan especialmente las opciones disponibles para la consulta de sus objetos. Consulta por ejemplo es muy potente y fácil de acostumbrarse.

  9. 4

    ¿Qué criterios va a utilizar para evaluar estas ? Si usted no sabe, sin embargo, entonces usted no necesita decidir ahora mismo. Trate de hacer su aplicación como base de datos-implementación-agnóstico como usted puede – proporcionar a los contenedores correspondientes, objetos de acceso a datos, etc., y tomar esta decisión cuando usted tiene toda la información a mano y tienes que decidir.

    Si usted está utilizando bases de datos relacionales y SQL entonces lo anterior no debería ser demasiado difícil (utilizando JDBC, etc). Asegúrese de que usted tiene un montón de los alrededores de pruebas, de manera que cuando se desea cambiar entre las bases de datos, se puede determinar que la aplicación de la funcionalidad sigue siendo la misma.

    Me encontré con el mismo problema hace algún tiempo. Yo no sabía que la base de datos para ir a, por lo que mi primera solución Derby (o HSQLDB?), y más tarde fui capaz de cambiar a HSQLDB (o Derby ? No puede recordar que la solución de trabajo) una vez que yo había determinado que había cuestiones relativas a la ejecución) y la solución que realmente funciona para mí.

  10. 4

    La mayoría de cosas se han dicho ya, pero sólo puedo añadir que he utilizado HSQL, Derby y Berkeley DB en un pocos de mis proyectos favoritos y todos ellos trabajaron muy bien. Así que no creo que realmente no importa mucho, para ser honesto. Una cosa que vale la pena mencionar es que HSQL salva a sí mismo como un archivo de texto con las instrucciones SQL que está bastante bien. Hace que sea muy fácil para que cuando se están desarrollando para hacer pruebas y datos de configuración rápida. También puede hacer ediciones rápidas si es necesario. Supongo que se podría transferir fácilmente todos los que a cualquier base de datos si alguna vez necesita cambiar 🙂

  11. 4

    HSQLDB pueden causar problemas para las aplicaciones de gran tamaño, que no es muy estable.

    Los mejores que he escuchado (no la experiencia de primera mano, sin embargo) es berkleyDB. Pero a menos que usted opensource que, va a costar un brazo y una pierna para el uso debido a la concesión de licencias de…ver este http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html para más detalles.

    ps. berkleyDB no es una base de datos relacional en caso de que usted no sabía.

    • Oh, yo no sabía Berkeley no era una base de datos relacional! Muchas gracias!
    • no significa que no es bueno. pero sospecho que probablemente es demasiado bueno para su uso, teniendo en cuenta su para algo personal. también, echa un vistazo a sqlite. Creo que tiene java enlaces, pero no puedo encontrar un cajero automático.
  12. 3

    He utilizado Derby y realmente odio de datos de funciones de conversión de tipo, especialmente en funciones de fecha y hora. (Tipo de número)<–> Varchar conversión es un dolor.

    Así que si usted planea usar conversiones de tipos de datos en la DB declaraciones considerar el uso de otros incrustado DB, aprendo es demasiado tarde.

    Última Derby Versión conversiones de tipos de datos

  13. 3

    Yo personalmente favor HSQLDB, pero sobre todo porque fue la primera que hice.

    H2 se dice para ser más rápido y proporciona una agradable interfaz gráfica (que es genérico y funciona con cualquier controlador JDBC, por cierto).

    Al menos, HSQLDB, H2 y Derby proporcionar modos de servidor que es ideal para el desarrollo, ya que puede acceder a la base de datos con su aplicación y algunas herramientas al mismo tiempo (que modo incrustado en general, no lo permiten).

  14. 3

    Supongo que estoy un poco tarde (mucho tarde;-)) a este post, pero me gustaría añadir Perst, de código abierto, orientado a objetos de base de datos integrada para Java &.NET. para su consideración. Perst es una fuente abierta /doble licencia de base de datos integrada para Java. La distribución es compatible con el Android de Google plataforma, y también incluye Perst Lite para Java ME. Incluso hemos construido un Android de referencia y produjo un documento sobre el tema…puedes echar un vistazo aquí: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid=133

    Todo lo mejor,
    Chris

  15. 3

    Si estoy en lo correcto H2 es de la misma gente que escribió HSQLDB. Es mucho mejor si usted confía en los puntos de referencia en su sitio. También, hay una cierta noción de que el sol de la comunidad saltó demasiado rápido en Derby.

    • ¿Cuáles son los prematuros derby nociones preocupa con DerbyDB? La madurez?
  16. 2

    Me doy cuenta de que usted ha mencionado SQL de navegación, pero todo lo demás en su pregunta me hace querer sugieren tener en cuenta también DB4O, que es un gran objeto simple DB.

    • Gracias. DB4O se ve bien para un proyecto pequeño, pero creo que la capacidad de examinar y editar los datos fuera de la aplicación es muy importante. También sería fácil para manejar las versiones más recientes de clases? (por ejemplo, añadido/quitado campos)
    • Sí, es compatible con algunos de los refactorings automáticamente, usted puede encontrar más sobre esto aquí: ibm.com/developerworks/java/library/j-db4o3.html

Dejar respuesta

Please enter your comment!
Please enter your name here