4

次の要件を持つプロジェクトの設計を開始しています。

  • システム全体は、WAN上の複数の物理ノードに分散されます
  • 各ノードは、共通のデータレコードセットを使用および操作します
  • これらのレコードの操作は、ネットワークの停止に対して回復力がなければなりません

このプロジェクトのベースプラットフォームとしてMnesia/Erlangを利用することを検討していますが、Mnesia / Erlang(Mnesia)がデータセットで同時に切断された競合する操作をどれだけうまく処理できるかを知りたいです。

実例となるシナリオ:

  1. ノードAとBには、接続性と空のデータセットがあります。
  2. ノードAはレコード(1、ABC)を追加します。
    • ここで、レコードセットは透過的に同期する必要があり、ノードBにもレコード(1、ABC)があります。
  3. それらの間のネットワーク接続は失われます。
  4. ノードAはレコードを(1、DEF)に変更します。
  5. ノードB(後のタイムスタンプ)は、レコードを(1、GHI)に変更します。
  6. ネットワーク接続が復元されます
    • 予想:透過的な同期の後、両方のノードにレコード(1、GHI)が含まれます。

簡単にするために、完全な変更履歴は必要ないと仮定しましょう(たとえば、レコード1にABCまたはDEFが含まれていたことは重要ではなく、現在はGHIが含まれていることだけが重要です)。

これは、Mnesiaのすぐに使用できる(または実装するのが簡単な)機能ですか?

4

2 に答える 2

5

Ulf Wiger は、サンフランシスコで開催された前回の Erlang Factory (2010) で、このトピックについて講演を行いました。彼のスライドはこちらにあります: http://www.erlang-factory.com/upload/item/7/UlfWiger-10minutetalk.pdf

それらには、問題の概要と、役立つ可能性のあるソース コードへのポインタも含まれています。

于 2011-02-18T08:29:01.947 に答える
2

手順 1 ~ 5 が機能するはずです。自動競合解決 (ステップ 6): いいえ。

于 2011-02-18T07:06:57.687 に答える