In-memory Java database that I can persist (as a s

2019-07-18 16:32发布

I am looking for an in-memory relational (SQL) database for Java (something like HSQLDB), whose whole state I can serialise.

wholeDatabase.serialize(outputStream);
newCopyOftheDatabase.loadFrom(inputStream);

Or maybe the DB only uses a byte[] that I give it on initialization:

byte[] memory = new byte[10 *1024*1024];
new InMemoryDatabase(memory);

The database will not be too huge, low tens of MB, but I cannot write files, so I need to stream everything off the machine before I shut the VM down (and periodically for backup).

I could use plain (and easily serializable) Java data structures like arrays or maps instead of a DB, but I want to be able to use SQL.

3条回答
放我归山
2楼-- · 2019-07-18 16:52

HSQLDB has an in-memory option:

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");

You just need to dump and restore the contents. To dump the structure, you may use the SCRIPT SQL command. Than you can dump every table by select. There may be a better API used by the manager and/or server internally, but you need to have a look at the (open) sources for this, i think.

查看更多
戒情不戒烟
3楼-- · 2019-07-18 17:08

Have you thought of patching HSQLDB?

http://hsqldb.svn.sourceforge.net

查看更多
趁早两清
4楼-- · 2019-07-18 17:09

Looks like JavaDB will support this soon:

http://blogs.oracle.com/kah/entry/derby_10_5_preview_in

查看更多
登录 后发表回答