我正在寻找一个用于Java的内存关系(SQL)数据库(类似于HSQLDB),我可以将其整个状态序列化。
wholeDatabase.serialize(outputStream);
newCopyOftheDatabase.loadFrom(inputStream);
或者DB可能只使用我在初始化时给出的byte []:
byte[] memory = new byte[10 *1024*1024];
new InMemoryDatabase(memory);
数据库不会太大,低几十MB,但是我无法写文件,所以我需要在关闭VM之前将所有内容流出机器(并定期备份)。
我可以使用普通(且易于序列化)的Java数据结构,如数组或映射而不是数据库,但我希望能够使用SQL。
答案 0 :(得分:6)
HSQLDB有一个内存选项:
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");
您只需要转储和恢复内容。要转储结构,可以使用SCRIPT
SQL命令。比你可以通过选择转储每个表。管理员和/或服务器内部可能使用了更好的API,但我认为你需要查看(开放)源代码。
答案 1 :(得分:0)
您是否想过修补HSQLDB?
答案 2 :(得分:0)
看起来JavaDB很快会支持这一点: