Base de datos fuera de línea para Java

Necesito almacenar información en una base de datos a la que se pueda acceder cuando el programa no se está ejecutando (almacenamiento persistente), pero necesito que esté fuera de línea, sin ejecutarse en un servidor. Necesito algo como un archivo CSV, pero no soy un gran fanático de CSV.

Quiero almacenar recetas, así que necesito 4 o 5 columnas. No será grande, no creo que supere los 10Mb. Quise decir que tiene un almacenamiento persistente, que la información estará allí incluso si el programa no se está ejecutando.

Hay muchas formas de almacenar datos y muchos tipos de bases de datos. No hay forma de recomendar sin información detallada de usted. ¿Qué tipo de datos? ¿Estructurado o no? ¿Una lista de artículos o más? ¿Volumen de datos? ¿Qué quiere decir exactamente con "se accede cuando el programa no se está ejecutando"?
@a_horse_with_no_name Como puedo recordar, es un db de solo memoria. Es decir, no tiene almacenamiento persistente.
Ambos ofrecen almacenamiento persistente
Este sitio web enumera muchas alternativas que pueden satisfacer los requisitos.
@BasilBourque Quiero almacenar recetas, así que necesito 4 o 5 columnas. No será grande, no creo que supere los 10Mb. Quise decir que tiene un almacenamiento persistente, que la información estará allí incluso si el programa no se está ejecutando.
@EstebanBal Publicar aclaraciones como ediciones de su pregunta en lugar de comentarios. Y revise su pregunta para usar esa palabra persist, ya que ese es el término técnico preciso. Ver Wikipedia .

Respuestas (2)

Hoja de cálculo o FileMaker

Para tan solo 10 megas de datos en una sola tabla (lista), considere usar una hoja de cálculo o FileMaker en lugar de crear su propia aplicación.

Base de datos versus archivo

Si sus datos se agitan (se editan, eliminan, clasifican y demás), generalmente es mejor usar una base de datos. Una buena base de datos ayuda con la integridad de sus datos, como evitar sobreescrituras accidentales de su propia programación descuidada o prevenir la corrupción debido a fallas mientras se escriben datos. Proteger la integridad de sus datos (consulte ACID ) es una gran razón para usar una base de datos en lugar de escribir su propio archivo de datos, como CSV .

Sin embargo, si sus datos no se agitan, por lo que rara vez escribe en ellos, entonces escribir un CSV puede tener sentido, especialmente si compartir estos datos es un objetivo principal. En tal caso, use una biblioteca para ayudar con el archivo CSV o delimitado por tabuladores, como Apache CSV . Escriba siempre en un archivo nuevo antes de eliminar el archivo anterior para evitar la pérdida de datos.

Cualquier base de datos almacenará datos persistentes, para que estén disponibles la próxima vez que ejecute su aplicación. Algunas bases de datos también ofrecen una opción " En memoria ", donde la base de datos vive solo en la memoria, no es persistente y desaparece cuando se apaga el motor de la base de datos. Pero ese nunca es el valor predeterminado, por lo que tendría que hacer todo lo posible para perder sus datos de esa manera.

H2 + Vaadin + Java

No da ningún requisito o restricción, por lo que no hay forma de hacer una recomendación específica. Mi propia elección sería:

  • Motor de base de datos H2 construido en Java puro. Puede integrarse en su aplicación o usarse por separado como un servidor de base de datos.
  • El marco Vaadin y su widget Vaadin Grid para escribir una aplicación web en Java puro que se procesa automáticamente en un navegador web HTML5 con estándares web.

Lista de bases de datos incrustadas

Consulte esta página de Wikipedia para ver una comparación de un par de docenas de motores de bases de datos integrados .

SQLite tiene enlaces Java y hay un conector JDBC para ello. Tutoría .