Prevaylerのようなものを試すことができます(基本的には、シリアル化とバックアップを処理するメモリ内キャッシュで、データが持続し、トランザクション的に安全です)。他にも同様のプロジェクトがあります。大規模なプロジェクトで使用しましたが、安全で非常に高速です。
20,000 個のオブジェクトの同じセット、または少なくとも 5 秒ごとに 20,000 個の新しいオブジェクトではなく、多くの変更がある場合は、変更をキャッシュし、定期的にバッチ モードで変更を書き込む方がよい場合があります (jdbc バッチ更新は、個々の行よりもはるかに高速です)。更新)。各書き込みをトランザクション的にラップする必要があるかどうか、および変更ログの記録が必要か、単に変更を集約する必要があるかによって異なります。
編集: 他の投稿が Prevayler について言及しているように、私はそれが何をするかについてメモを残したいと思いました: . マップを直接変更するのではなく、Prevayler インスタンスに変更のシリアル化可能なレコード (変更命令を含むオブジェクト) を送信することによって変更を行います。Prevayler のバージョンのトランザクションは、シリアライゼーションの変更をディスクに書き込み、障害が発生した場合に最後の完全なバックアップをロードし、それに対して変更を再生できるようにすることです。安全ですが、すべてのデータをロードするのに十分なメモリが必要です。また、かなり古い API であるため、残念ながら汎用インターフェイスはありません。