興味のある方へ:探している動作のコードを実装し、google-code でオープンソース化しました。ここで手に入れよう!pojo-mvcc
--
こんにちは、みんな、
長期キャッシュから作成された短期キャッシュを多数含むフレームワークを作成しようとしています。これらの短期間のキャッシュは、元の長期間のキャッシュからのクローンであるコンテンツ全体を返すことができる必要があります。
私が実際に構築しようとしているのは、短期間のキャッシュのトランザクション分離のレベルです。ユーザーは短期キャッシュのコンテンツを変更できる必要がありますが、長期キャッシュへの変更は反映されるべきではありません (キャッシュの種類によっては、変更をプッシュスルーする必要がある場合もあります)。
説明するために最善を尽くします。
master-cache contains: [A,B,C,D,E,F] 状態 [A,B,C,D,E,F] で作成された一時キャッシュ
1) 一時キャッシュはアイテム G を追加します: [A,B,C,D,E,F] 2) 一時キャッシュはアイテム B を削除します: [A,C,D,E,F]
master-cache の内容: [A、B、C、D、E、F]
3) マスターキャッシュは項目 [X,Y,Z] を追加します: [A,B,C,D,E,F,X,Y,Z]
一時キャッシュの内容: [A,C,D,E,F]
アイテムの値が変更される可能性があり、常に更新されるべきではない場合、事態はさらに難しくなります (そのため、基になるオブジェクト インスタンスを共有することさえできず、クローンを使用する必要があります)。
ArrayList で標準の Collection コンストラクターを使用して List の新しいインスタンスを作成するという単純なアプローチを実装しましたが、項目が約 200,000 になると、システムはメモリ不足になります。200,000 という値が反復するには大きすぎることはわかっていますが、コードに少し負荷をかけようとしています。
どういうわけかリストを「プロキシ」できるのではないかと考えていたので、一時キャッシュはマスターキャッシュを使用し、すべての変更を保存します (事実上、変更のメメント)。一時キャッシュを反復するか、特定のインデックスでアイテムを取得します。また、リストの内容にいくつかの変更を加えたい場合 (「自動更新」であるかどうかにかかわらず、一時キャッシュのタイプに応じて)、完全に自分の深さから抜け出します。
技術やデータ構造、または試して研究するための一般的な概念へのポインタは大歓迎です。
乾杯、
アイドス