Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run a HSQLDB server in memory-only mode

Tags:

java

hsqldb

In the documentation of the HSQLDB is a command line statement to start a HSQLDB server (HSQLDB Doc). But there is this "file:mydb" property, so I assume its not in memory-only mode.

How do I run a memory-only HSQLDB server?

I ran the following but get no clue.

java -cp ../lib/hsqldb.jar org.hsqldb.Server -?
like image 436
Juri Glass Avatar asked Sep 30 '09 12:09

Juri Glass


People also ask

Is HSQLDB production ready?

HSQLDB is great. It (also) has an embedded mode (no dedicated server needed), which allows for quick prototyping of stuff like Proof of Concepts, and it can also be great in production-ready applications, as a quick and simple storage of various data.

Is HSQLDB in-memory?

HSQLDB (HyperSQL DataBase) is the leading SQL relational database system written in Java. It offers a small, fast multithreaded and transactional database engine with in-memory and disk-based tables and supports embedded and server modes.

What does H in HSQLDB stand for?

HSQLDB (Hyper SQL Database) is a relational database management system written in Java. It has a JDBC driver and supports a large subset of SQL-92, SQL:2008, SQL:2011, and SQL:2016 standards.


2 Answers

It took around 2 days for me to figure out on how to start a server in-memory and then access from outside. Hope this will save someone's time.

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();

When you have to access the in-memory database for any CRUD, here is what you need to do :-

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

where 192.168.5.1 is the server ip where HSQL is running. To connect to the standbyDb, replace mainDb with standbyDb in the first line. Once you get the connection, you can perform all database related operations.

To connect to the server from remote using DatabaseManagerSwing, here is what you need to do.

Download hsqldb-x.x.x jar and copy it to a folder (x.x.x is the version) open a terminal or command prompt and cd to the folder and run

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

Select "HSQL Database Engine Server" from the Type drop down and give "jdbc:hsqldb:hsql://192.168.5.1:9001/mainDb" as the URL. This will connect you to the remote HSQL in-memory Server instance.

Happy Coding !!
DbManagerSwing UI

like image 179
Shajee Lawrence Avatar answered Sep 19 '22 20:09

Shajee Lawrence


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

In memory mode is specified by the connection url - so if you want, you can just have a server.properties file in the same directory, and set the connection url to use the mem protocol - or if you are using hsqldb in another application that allows you to specify the connection url such as jdbc, specify jdbc:hsqldb:mem:aname.

like image 36
Chii Avatar answered Sep 17 '22 20:09

Chii