1

私は、マルチノード クラスターを備えた永続化レイヤーとしてMembase (Memcached + 永続化を考える) を使用するプロジェクトに取り組んでいます。Enyimクライアントを使用してキャッシュと通信し、バイナリ シリアライゼーションを使用してオブジェクトをキャッシュとの間でシリアライズ/デシリアライズします。

私たちが抱えている懸念の 1 つは、データ モデルへの変更を効果的に管理する方法です。通常の SQL データベースを使用している場合は、更新スクリプトを実行してテーブルを更新できます。

Membase を使用して、キャッシュされたバイナリ オブジェクトを処理すると、キャッシュされたすべてのオブジェクトを取得して、両方のバイナリをロードできます。

  1. キャッシュされたオブジェクトをシリアル化するために使用されたコードのバージョン
  2. さまざまなプロパティを定義する新しいバージョンのコード

このように効果的にデータを移行しますが、キャッシュに数千万のオブジェクトが潜在的に存在する可能性がある場合、それはほとんど望ましくありません.理想的には、必要な場合にのみデータを移行し、実行できる反復プロセスを実行できるようにしたいと考えています.バージョン 1 のデータをバージョン 2 に移行し、次に 3 などに移行しますが、バイナリ データでこれを行う方法を考えるのに苦労しています..

暗闇の中でのショットですが、以前にこの種の問題に対処した経験がある人はいますか? 他の形式のシリアライゼーションを喜んで使用し、代わりに単純に文字列 (圧縮されている可能性があります) データをキャッシュに格納し、シリアライゼーションを自分で処理することができます。

ありがとう、

4

1 に答える 1

0

ライブラリの新しいバージョンがV1またはV2オブジェクトを認識する方法を理解し、オブジェクトが保存されたバージョンに基づいて適切なデシリアライザーを使用し、V1オブジェクトに触れた後にV2形式に再シリアル化する読み取りパラダイムの修復を検討してください。

そうすれば、すべてのオブジェクトをバッチ更新する必要はありませんが、最終的にはすべてのオブジェクトをV2形式に移行します。バックグラウンドプロセスを実行して、V1オブジェクトをゆっくりと取得し、必要に応じてV2オブジェクトに変換して、読み取りアルゴリズムの修復で最終的にV1からVnを処理する複雑さを回避できます。

于 2011-04-01T17:28:32.360 に答える