我可以坚持的内存中Java数据库(作为一个巨大的内存块)

Thi*_*ilo 2 java database memory-management hsqldb in-memory-database

我正在寻找一个用于Java的内存关系(SQL)数据库(类似于HSQLDB),我的整个状态可以序列化.

wholeDatabase.serialize(outputStream);
newCopyOftheDatabase.loadFrom(inputStream);
Run Code Online (Sandbox Code Playgroud)

或者DB可能只使用我在初始化时给出的byte []:

byte[] memory = new byte[10 *1024*1024];
new InMemoryDatabase(memory);
Run Code Online (Sandbox Code Playgroud)

数据库不会太大,低几十MB,但我不能写文件,所以我需要在关闭VM之前(并定期进行备份)将所有内容流出机器.

我可以使用简单(并且易于序列化)的Java数据结构,如数组或映射而不是数据库,但我希望能够使用SQL.

Arn*_*ter 6

HSQLDB有一个内存中选项:

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");
Run Code Online (Sandbox Code Playgroud)

您只需要转储和恢复内容.要转储结构,可以使用SCRIPTSQL命令.比你可以通过选择转储每个表.管理员和/或服务器内部可能使用了更好的API,但我认为你需要查看(开放)源代码.