Javaアプリで使用するには、ディスクでバックアップされたMap構造が必要です。次の基準が必要です。
- 数百万(数十億)のレコードを保存できます
- 高速ルックアップ-マップでの操作の大部分は、キーがすでに存在するかどうかを確認するだけです。これと上記の1つが最も重要な基準です。頻繁に使用されるキーのメモリキャッシュメカニズムには効果的なものが必要です。
- 永続的ですが、トランザクションである必要はありませんが、何らかの障害が発生する可能性があります。つまり、定期的にディスクと同期でき、トランザクションである必要はありません。
- 単純なプリミティブ型を格納できますが、シリアル化されたオブジェクトを格納する必要はありません。
- 配布する必要はありません。つまり、すべてを1台のマシンで実行します。
- セットアップが簡単で、無料で使用できます。
- リレーショナルクエリは必要ありません
レコードキーは文字列またはlongになります。上記のように、読み取りは書き込みよりもはるかに頻繁に行われ、読み取りの大部分は単にキーが存在するかどうかを確認することです(つまり、キーに関連付けられたデータを読み取る必要はありません)。各レコードは1回だけ更新され、レコードは削除されません。
私は現在BdbJEを使用していますが、他のオプションを探しています。
アップデート
その後、セカンダリキーへの依存を減らすことで、既存のBDBセットアップでのクエリパフォーマンスが向上しました。一部のクエリでは、2つのセカンダリキーを結合する必要があり、それらを複合キーに結合することで、ルックアップの間接参照のレベルを削除しました。これにより、処理が大幅に高速化されます。