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

发布于 2024-07-20 16:41:48 字数 443 浏览 5 评论 0原文

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

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

或者数据库可能只使用我在初始化时给它的一个字节[]:

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

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

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

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

∞觅青森が 2024-07-27 16:41:49

HSQLDB 有一个内存选项:

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

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

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.

著墨染雨君画夕 2024-07-27 16:41:49

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

http://hsqldb.svn.sourceforge.net

Have you thought of patching HSQLDB?

http://hsqldb.svn.sourceforge.net

孤独患者 2024-07-27 16:41:49

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

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

Looks like JavaDB will support this soon:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文