Terracottaの永続データの場合、クラスを進化させる方法は?
-
10-12-2019 - |
質問
私たちは次のプロジェクトの terracotta を検討しています。私は、別々のDBMSを必要とせずにデータの持続性を提供する可能性に興味があります。 (永続性ソリューションとしての解決策)
Terracottaのドキュメントのクラスの進化に関する段落のカップル/ a>しかしそれはDSOに固有のように思え、かなり表面的な滞在です。
解決
それはあなたのユースケースシナリオによって異なります。
キャッシュをロードするコストが最小限(分)で、ダウンタイムを提供することができます...それから私は新しいバージョンのためのキャッシュを再構築するだけの問題はありません。
あなたがあなたのキャッシュを作成するためのコスト(時間/日)を持っていて、かなりのダウンタイムを買う余裕がない場合は、移行期間中に新しい古いバージョンを同時に処理する必要があります。 このために:
- 私は新しいバージョンの新しいバージョンの別のキャッシュ定義を定義します キャッシュされたクラスと古いバージョンをキャッシュ内に期限切れにさせます。
- アプリケーションコードには、「古い/新しいバージョン」のサポートもあります。
- データがデータまでまだ古いバージョンで動作するようなインスタンスを持っています 期限切れ/廃止された(古いキャッシュ名に基づく)
- すべての新しいリクエスト/フローを新しいものに扱うインスタンスを持っています
バージョン(新しいキャッシュ名に基づく)
e.g。 ehcache.xmlでは、2つのキャッシュを定義します(あなたの例に基づいて)
.<cache name="com.xyz.Car" timeToLiveSeconds="600"/> <!--New version goes here--> <cache name="com.xyz.Car2" timeToLiveSeconds="600"/>
長期的には、バージョンの進化を含むキャッシュの命名規則を調整する必要があります。
所属していません StackOverflow