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.
HSQLDB有一个内存中选项:
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");
Run Code Online (Sandbox Code Playgroud)
您只需要转储和恢复内容.要转储结构,可以使用SCRIPTSQL命令.比你可以通过选择转储每个表.管理员和/或服务器内部可能使用了更好的API,但我认为你需要查看(开放)源代码.