2009-09-30 17 views
9

En la documentación de HSQLDB hay una instrucción de línea de comando para iniciar un servidor HSQLDB (HSQLDB Doc). Pero existe esta propiedad de "archivo: mydb", así que supongo que no está en el modo de solo memoria.Cómo ejecutar un servidor HSQLDB en modo solo memoria

¿Cómo puedo ejecutar un servidor HSQLDB solo de memoria?

Ejecuté lo siguiente, pero no tengo ni idea.

java -cp ../lib/hsqldb.jar org.hsqldb.Server -? 

Respuesta

6

uso java -cp .\hsqldb-1.8.0.10.jar org.hsqldb.Server -database.0 mem:aname

En memoria de modo está especificada en la dirección de conexión - por lo que si lo desea, puede simplemente tener un archivo server.properties en el mismo directorio, y establecer la URL de conexión para utilizar el protocolo mem - o si está utilizando hsqldb en otra aplicación que le permite especificar la URL de conexión como jdbc, especifique jdbc:hsqldb:mem:aname.

+0

Omití la versión en. \ Hsqldb-1.8.0.10.jar, pero luego funciona. Gracias. –

0

creo que el archivo se utiliza para cargar la base de datos en la memoria, y luego persistir cuando se detiene servidor. No creo que se acceda al archivo mientras se está ejecutando.

Ha pasado un tiempo desde que utilicé HSQLDB (o H2), pero estoy bastante seguro de que así es como funciona.

+0

Si se carga desde un archivo, se sabe que se es principalmente en la memoria, y es extremadamente rápido, pero si se realizan cambios que finalmente va a lavarlos de nuevo al disco, lo que probablemente no es lo que desea. Para solucionar esto, debe establecer la opción hsqldb 'files_readonly'. Hacer esto en la cadena de conexión no es válido, pero puede hacerlo en el archivo de propiedades de la base de datos: la primera vez que ejecute lo anterior, creará mydb.properties si aún no existe. Agregue una nueva línea que diga 'hsqldb.files_readonly = true' al final de eso, y listo. –

9

Me llevó alrededor de 2 días averiguar cómo iniciar un servidor en la memoria y luego acceder desde el exterior. Espero que esto le ahorre tiempo a alguien.

Server server = new Server(); 
server.setDatabaseName(0, "mainDb"); 
server.setDatabasePath(0, "mem:mainDb"); 
server.setDatabaseName(1, "standbyDb"); 
server.setDatabasePath(1, "mem:standbyDb"); 
server.setPort(9001); // this is the default port 
server.start(); 

Cuando se tiene para acceder a la base de datos en memoria para cualquier CRUD, esto es lo que hay que hacer: -

String url="jdbc:hsqldb:hsql://192.168.5.1:9001/mainDb"; 
Class.forName("org.hsqldb.jdbc.JDBCDriver"); 
Connection conn = DriverManager.getConnection(url, "SA", ""); 

donde 192.168.5.1 es la IP del servidor donde se está ejecutando HSQL. Para conectarse a standbyDb, reemplace mainDb con standbyDb en la primera línea. Una vez que obtiene la conexión, puede realizar todas las operaciones relacionadas con la base de datos.

Para conectarse al servidor desde remoto utilizando DatabaseManagerSwing, esto es lo que debe hacer.

Descargar hsqldb-xxx frasco y copiarlo a una carpeta (xxx es la versión) abrir una terminal o un comando y cd a la carpeta y ejecutar

java -cp hsqldb-x.x.x.jar org.hsqldb.util.DatabaseManagerSwing 

Seleccione "HSQL motor para servidores de base de datos" de el Tipo despliega y da "jdbc: hsqldb: hsql: //192.168.5.1: 9001/mainDb" como la URL. Esto lo conectará con la instancia remota del Servidor HSQL en memoria.

Happy Coding !!
DbManagerSwing UI

+1

Este es el único ejemplo completo de memoria programática que he encontrado hasta ahora. – mtyson

Cuestiones relacionadas