2009-12-19 32 views
8

¿Hay DBs para Java que se puedan ejecutar en un modo incrustado con algunas tablas almacenadas en memoria mientras se cargan otras desde el disco? H2 y JavaDB parecen ser los dos líderes para Java DBs y sé que ambos tienen un modo en memoria, pero ¿hacen que carguen toda la base de datos en la memoria o pueden decidir tabla por tabla?In-memory Java DB

Respuesta

6

Esta es la tabla de caché Preguntas mencionado en el sitio web HSQL.

• tienda no HSQLDB todos los datos en la memoria. ¿funciona la memoria no como resultado?

• almacena todos los datos en la memoria sólo si así lo desea. Por predeterminado, resultados de CREATE TABLE en una tabla de memoria, ya que este es el mejor tipo para tablas más pequeñas. Para tablas más grandes, use CREATE CACHED TABLE y ajuste el tamaño de caché para cumplir con los requisitos de uso de memoria (tan solo 8 MB o más). Consulte el capítulo sobre Gestión del sistema y problemas de implementación de la guía. No existe una regla simple y ninguna imposición por parte de HSQLDB, ya que se permite la máxima flexibilidad usando solo un par de configuraciones. Un uso popular de HSQLDB es para OLAP, ETL y aplicaciones de minería de datos en las que se utilizan grandes asignaciones de memoria Java para almacenar millones de filas de datos en la memoria.

Creo que la tabla en caché ya es lo suficientemente potente para satisfacer sus necesidades.

De http://hsqldb.org/web/hsqlFAQ.html

Comparación entre la tabla de caché y la tabla de memoria

tablas MEMORY y mesas en caché se utiliza generalmente para el almacenamiento de datos. La diferencia entre los dos es la siguiente:

Los datos de todas las tablas MEMORY se leen desde el archivo * .script cuando la base de datos se inicia y se almacena en la memoria. Por el contrario, los datos de las tablas en caché no se leen en la memoria hasta que se accede a la tabla. Además, solo una parte de los datos de cada tabla CACHED se guarda en la memoria, lo que permite tener más datos de los que se pueden guardar en la memoria.

Cuando la base de datos se cierra de la manera normal, todos los datos para las tablas de MEMORIA se escriben en el disco. En comparación, los datos en las tablas CACHED que han cambiado se escriben durante la operación y el cierre.

El tamaño y la capacidad de la memoria caché de datos para todas las tablas CACHED se pueden configurar. Esto permite permitir que todos los datos en tablas CACHED se guarden en caché en la memoria. En este caso, la velocidad de acceso es buena, pero un poco más lenta que las tablas de MEMORIA.

Para las aplicaciones normales, se recomienda que las tablas MEMORY se usen para pequeñas cantidades de datos, dejando tablas CACHED para grandes conjuntos de datos. Para aplicaciones especiales en las que la velocidad es primordial y hay una gran cantidad de memoria libre disponible, las tablas MEMORY también se pueden usar para tablas grandes.

Parece que esta característica aún no es compatible con H2 y Derby (JavaDB). Corrígeme si no es el hecho.

1

La mayoría de las bases de datos en memoria (como HSQLDB tienen capacidad para almacenar en caché algunos (o todos) los datos en el disco. Por lo general es de bajo nivel lo suficientemente por lo que es transparente para el programador, pero sin duda es configurable

+0

¿Hay algún documento al que me puedas dirigir? Por lo que vi en el sitio H2, en memoria solo funciona si el DB no es persistente. –

+0

Es posible que desee consultar Terracotta http://www.terracotta.org/ – Bostone

+0

@DroidIn.net Terracotta es comercial? Y es un tipo de memoria caché, no DB, ¿verdad? –