2

Java用のインメモリリレーショナル(SQL)データベース(HSQLDBのようなもの)を探しています。その状態全体をシリアル化できます。

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

または、DBは初期化時に指定したbyte[]のみを使用する可能性があります。

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

データベースはそれほど大きくなく、数十MBもありませんが、ファイルを書き込めないため、VMをシャットダウンする前に(そして定期的にバックアップのために)マシンからすべてをストリーミングする必要があります。

DBの代わりに、配列やマップなどのプレーンな(そして簡単にシリアル化できる)Javaデータ構造を使用することもできますが、SQLを使用できるようにしたいと考えています。

4

3 に答える 3

6

HSQLDB にはインメモリ オプションがあります。

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

内容をダンプして復元するだけです。構造をダンプするには、SCRIPTSQL コマンドを使用できます。選択してすべてのテーブルをダンプできます。マネージャーやサーバーが内部で使用するより良い API があるかもしれませんが、これについては (オープン) ソースを確認する必要があると思います。

于 2009-05-16T12:14:57.883 に答える
0

HSQLDB にパッチを当てることを考えたことはありますか?

http://hsqldb.svn.sourceforge.net

于 2009-05-16T11:51:34.477 に答える
0

JavaDB はこれをすぐにサポートするようです:

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

于 2009-05-16T13:02:03.153 に答える