2

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

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

それともDBが唯一の私は初期化時にそれを与える[]というバイト使用しています:

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

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

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

+0

私はRAMディスクへの書き込みやOSのバックを持つことが、最大ではなくやろうとするよりも、もう少し実用的であるかもしれない「という」という感覚を得ますそれはあなたのすべてのアプリケーションで。 – Cogsy

+0

http://www.h2database.comには機能があります。著者に電子メールを送る価値があるかもしれません... – basszero

答えて

6

HSQLDBは​​、メモリ内のオプションがあります。

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

は、あなただけの内容をダンプし、復元する必要があります。構造体をダンプするには、SCRIPT SQLコマンドを使用します。選択するごとにすべてのテーブルをダンプすることができます。マネージャーやサーバーによって内部的に使用されるより優れたAPIがあるかもしれませんが、(オープンな)ソースを見る必要があります。

0

JavaDBはすぐにこれをサポートします次のようになります。

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

+2

そのブログ記事は、データベースコンテンツを単一のストリームにパイプすることを正確に示すものではありません。 –

関連する問題