Pregunta

Es necesario crear un formato de archivo de almacenamiento de algunos datos simples en un formato tabular, estaba tratando de utilizar HDF5 pero casi he renunciado debido a algunos problemas, y me gustaría volver a examinar el uso de bases de datos integradas para ver si son lo suficientemente rápido para mi aplicación.

¿Hay una base de datos de Java embebido de buena reputación por ahí que tiene la opción de almacenar los datos en un archivo? El único que yo sepa es (enlaces Java disponibles) SQLite. Probé H2 y HSQLDB, pero fuera de la caja que parecen crear varios archivos, y es muy conveniente para mí tener una base de datos en un archivo.

editar rendimiento razonablemente rápido es importante. El almacenamiento de objetos no lo es; de los problemas de rendimiento que sólo necesita almacenar números enteros y manchas. (+ Algunas secuencias pero el rendimiento no crítico)

editar. 2: la eficiencia de almacenamiento de datos es importante para grandes conjuntos de datos, por lo que está fuera de XML

¿Fue útil?

Solución 10

Creo que por ahora sólo voy a seguir utilizando HDF5 para el almacenamiento de datos persistente, junto con H2 o alguna otra base de datos para la indexación en memoria. No puedo conseguir SQLite utilizar BLOB con el conductor de Java que tengo, y no puedo conseguir incrustado Firebird en marcha y funcionando, y no confiar en H2 con PAGE_STORE todavía.

Otros consejos

http://www.dizitart.org/nitrite-database.html

  

nosql Object (NO2 a.k.a Nitrito) de base de datos es una nosql de código abierto   incrustado almacén de documentos escritos en Java con MongoDB como API. Eso   apoya tanto en la memoria y el almacén persistente basado en una sola fila.

Si sólo necesita acceso de lectura a continuación, H2 es capaz de leer los archivos de base de datos desde una archivo zip.

Del mismo modo, si usted no necesita persistencia es posible tener una única versión en memoria de H2.

Si necesita tanto de lectura / escritura de acceso y persistencia, entonces puede estar fuera de suerte con bases de datos SQL de tipo estándar, ya que casi todo uniformemente mantener los archivos de índice y de datos por separado.

H2 utiliza un solo archivo, si se utiliza la última H2 construir con la opción PAGE_STORE. Es una característica nueva, por lo que puede que no sea sólido.

Una vez que utilicé una base de datos objeto que guarda sus datos en un archivo. Tiene una interfaz de Java y .NET una. Quizás quieras revisarlo. Se llama db4o .

Crónica Mapa es una base de datos de Java puro incrustado.

  • Almacena los datos en un archivo, i. e.

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • Crónica mapa es maduros (no hay errores graves reportados almacenamiento durante meses, mientras está en uso activo).

  • idependent puntos de referencia muestran que Crónica mapa es la más rápida y el más eficiente de la memoria almacén de claves-valor por Java.

La mayor desventaja para su caso de uso es que Crónica Mapa sólo admite un modelo simple de clave-valor, sin embargo, la solución más compleja podría ser construir en la parte superior de la misma.

exención de responsabilidad:. Soy el desarrollador de Crónica mapa

Si usted está buscando una base de datos pequeño y rápido para enviar tal vez con otro programa me gustaría comprobar Apache Derby no sé cómo se define-base de datos integrada pero he usado esto en algunos proyectos como una base de datos de depuración que se puede comprobar con la fuente y está disponible en todos los equipos de desarrolladores instantánea.

Esto no es un motor SQL, pero si se utiliza Prevayler con xstream , puede crear fácilmente un archivo XML individual con todos sus datos. (Prevayler lo llama un archivo de instantánea.)

A pesar de que no está basada en SQL, y por lo tanto requiere un poco de esfuerzo, su carácter autónomo hace que el desarrollo (y sobre todo buena prueba) mucho más fácil. Además, es increíblemente rápido y fiable.

Es posible que desee comprobar hacia fuera JDBM - la utilizamos en varios proyectos, y es bastante rápido . No utilice 2 archivos (un archivo de base de datos y un archivo de registro) si usted lo está utilizando para aplicaciones de tipo ácido, pero se puede colocar directamente a la base de datos de acceso directo (sin archivo de registro) si no necesita ácido sólido.

JDBM apoyará fácilmente enteros y manchas (cualquier cosa que desee), y es bastante rápido. En realidad no está diseñada para la concurrencia, así que hay que gestionar el mismo bloqueo si tiene varios hilos, pero si usted está buscando un simple base de datos integrada, sólida, que es una buena opción.

Ya que menciona sqlite, supongo que no le importa una base de datos nativa (siempre y buenos enlaces Java están disponibles). Firebird funciona bien con java, y lo hace de almacenamiento en fila india por defecto.

Tanto H2 y HSQLDB serían excelentes opciones, si no tiene el requisito de una sola fila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top