質問

一部のテーブルをメモリ内に保存し、他のテーブルをディスクからロードする組み込みモードで実行できる Java 用 DB はありますか?H2 と JavaDB は Java DB の 2 つのリーダーのようで、どちらもインメモリ モードを備えていることは知っていますが、DB 全体をメモリにロードするのでしょうか、それともテーブルごとに決定できるのでしょうか?

役に立ちましたか?

解決

これは、HSQL Web サイトに記載されているキャッシュ テーブル FAQ です。

•HSQLDB はすべてのデータをメモリに保存しますか。その結果メモリ不足にならないでしょうか?

•必要な場合にのみ、すべてのデータをメモリに保存します。デフォルトでは、CREATE TABLE の結果はメモリ テーブルになります。これは、小さなテーブルに最適なタイプです。大きなテーブルの場合は、CREATE CACHED TABLE を使用し、メモリ使用要件に合わせてキャッシュ サイズを調整します (最低 8MB 程度)。 このガイドの「システム管理と展開の問題」の章を参照してください。いくつかの設定のみを使用して最大限の柔軟性が許可されるため、HSQLDB 側に単純なルールや強制はありません。HSQLDB の一般的な用途は、OLAP、ETL、およびデータ マイニング アプリケーションであり、メモリ内に数百万行のデータを保持するために巨大な Java メモリ割り当てが使用されます。

キャッシュされたテーブルはすでにニーズを満たすのに十分強力だと思います。

から http://hsqldb.org/web/hsqlFAQ.html

キャッシュテーブルとメモリテーブルの比較

MEMORY テーブルと CACHED テーブルは通常、データ ストレージに使用されます。2 つの違いは次のとおりです。

すべての MEMORY テーブルのデータは、データベースの起動時に *.script ファイルから読み取られ、メモリに保存されます。対照的に、キャッシュされたテーブルのデータは、テーブルにアクセスされるまでメモリに読み込まれません。さらに、各 CACHED テーブルのデータの一部のみがメモリに保持されるため、テーブルにメモリに保持できる以上のデータが含まれる可能性があります。

データベースが通常の方法でシャットダウンされると、MEMORY テーブルのすべてのデータがディスクに書き込まれます。これに対して、CACHED テーブル内の変更されたデータは、操作中およびシャットダウン時に書き出されます。

すべての CACHED テーブルのデータ キャッシュのサイズと容量は構成可能です。これにより、CACHED テーブル内のすべてのデータをメモリにキャッシュできるようになります。この場合、アクセス速度は良好ですが、MEMORY テーブルよりわずかに遅くなります。

通常のアプリケーションでは、少量のデータには MEMORY テーブルを使用し、大規模なデータ セットには CACHED テーブルを残すことをお勧めします。速度が最優先され、大量の空きメモリが利用可能な特殊なアプリケーションの場合、MEMORY テーブルは大きなテーブルにも使用できます。

この機能はまだ H2 と Derby(JavaDB) ではサポートされていないようです。事実ではない場合は訂正してください。

他のヒント

など HSQLDBするなど、ほとんどのインメモリ・データベースは、(一部(または全部をキャッシュする機能を持っています)ディスクへのデータ。通常、それはプログラマに透明ですので、十分に低いレベルだが、確かに設定が可能です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top