2012-01-05 7 views
1

Gmailのラベルに似たアプリケーション機能があります。アイテムにタグを付けることができます。これは並行アプリケーションです。つまり、いわゆるホワイトボードは複数のユーザーによって編集可能です。つまり、多くのユーザーがアイテムを再分類/グループ化することができます。基本的に複数のアイテムに同時にタグを付ける。多対多並行処理の競合を最善に処理するにはどうすればよいですか?

間違いなく競合が発生しますが、問題はどう対処するのが最善でしょうか?考えられる唯一の戦略は、有名なALOHAプロトコルに似ています。つまり、変更があった場合にコミットする前にチェックします。もしそうなら、中止してユーザーに通知します。それ以外はコミットします。これは非常に非効率なIMOです。

簡単つの第一:) - すなわち、重複がちょうど更新されるだろうが、新しいものがあまりにもタグ付けされるだろう変更を上書き:比較することによって容易に困難で、他の1 - ここで

は、2つの類似したアイデアがあります。

困難なもの:削除されるべきものがあるかどうかを確認します。つまり、カテゴリ2に属していないものが存在する可能性があります(つまり、ユーザー1が変更を行い、ユーザー2もタグ付きアイテム{user1 - user2}のセットを基本的に探します。これは非常に難しく、IMHOの努力に値するものではありません。

私は、ユーザーエクスペリエンスを妨げず、混乱させないような場合に、ベストプラクティスのソリューションを使用することをお勧めします。

答えて

2

この質問への答えは本当にユーザーが誰であるかに依存し、彼らが期待する(これは、MySQLバックエンドとjQuery/AJAXフロントエンドとJ2EE /のRestletアプリです)。それが私のものだった場合、私は自分の前に変更を加えて(スタックオーバーフローがこれを行う)ユーザーに知らせることができ、とにかく変更をコミットするか、ロールバックできるようになると思います。あなたが提示したソリューションはすべて受け入れられるようです。それはあなたがしたいことだけに依存します。もしあなたがcodeでこれを行う方法を尋ねるなら、まずあなたが扱っているものを見ることができるようにいくつかのコードを投稿しなければならないでしょう。

もう1つの解決策は、変更が発生したときに変更を上書きするだけですが、各変更を簡単に取り消すことができるように修正し、他のものの上に変更が加えられたかどうかを簡単に確認できます。

関連する問題