私のアプリケーションは現在Double
、計算のために何百万もの要素を保存しています。これらの値は、計算の最後に実行される特定のアルゴリズムに使用される前の一時的な値にすぎません。この計算が完了すると、何百万もの値を破棄できます。
詳細が必要な場合は、完全なストーリーがここにあります。
提案されたソリューションの 1 つは、インメモリ データベースを使用することです。
したがって、このソリューションを使用する場合、このデータベースを使用して値をテーブルに保存し、次のMap<String, List<Double>>
ように current を置き換えます。
create table CALCULATION_RESULTS_XXX (
deal_id varchar2,
values number
);
(計算ごとに 1 つのテーブルXXX
、計算 ID です)
したがって、計算中に次のことを行います。
- 計算が開始されたら、
CALCULATION_RESULTS_XXX
テーブルを作成します。 - 値を追加する必要があるたびに、このテーブルにレコードを挿入します。
- 計算の最後に、テーブルの内容をアルゴリズムに使用します。
- 最後に、このテーブルを削除します。
他の件名Double
で説明したように、現在、30 * 1,000,000 のリストには約 240Mb が必要になるため、私の計算では数百 Mb のデータがメモリに格納される可能性があります。
今の質問:
- インメモリ データベースを使用すると、メモリの消費量は減りますか?
- データベースの使用(またはテーブルの作成)、データの挿入などに関して注意する必要がある特定のポイントは何ですか?
- H2データベースを選択すると思います。それが私のニーズに最適な選択だと思いますか?