2

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

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

或者数据库只使用我在初始化时给它的 byte[] :

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

数据库不会太大,只有几十 MB,但我无法写入文件,所以我需要在关闭 VM 之前将所有内容从机器上传输出去(并定期进行备份)。

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

4

3 回答 3

6

HSQLDB 有一个内存选项:

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

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

于 2009-05-16T12:14:57.883 回答
0

看起来 JavaDB 很快就会支持这个:

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

于 2009-05-16T13:02:03.153 回答
0

你有没有想过给 HSQLDB 打补丁?

http://hsqldb.svn.sourceforge.net

于 2009-05-16T11:51:34.477 回答