競合回避モジュールを選択する場合は、アプリケーションでの競合解決の重要性と、既定の優先度ベースの競合回避モジュールを使用できるか、アーティクル リゾルバーを使用する必要があるかを考慮してください。
複数のユーザーが同じパーティションに書き込まずにデータをパーティション分割し、レプリケーション トポロジが比較的基本的な場合 (1 つのパブリッシャーと少数のサブスクライバー)、競合はまれであるか、存在しないはずです。 これらの環境では、おそらく複雑な競合解決戦略は必要ありません。 競合を解決するための既定の設定として、クライアント サブスクリプションと最初に変更した者が勝つ方針を用いる戦略をお勧めします。 トポロジがより複雑な場合 (たとえば、再パブリッシュサブスクライバーを使用する場合)、特定の優先順位を持つサーバー サブスクリプションの方が適切な場合があります。
ビジネス ニーズに既定のリゾルバーで使用できるよりも細かく調整されたソリューションが必要な場合は、アーティクル リゾルバーをお勧めします。 アーティクル リゾルバーを使用する場合は、ビジネス ロジック ハンドラーを使用することをお勧めします。 詳細については、「 マージ同期中のビジネス ロジックの実行」を参照してください。
最終的には、既定のリゾルバーとアーティクル リゾルバーのどちらを使用するかを選択することは、アプリケーションのデータとビジネス ロジックのニーズに基づく必要があります。 たとえば、顧客ランキング データを異なるサブスクライバーのパーティション分割されていないテーブルのセットに入力する従業員を考えてみましょう。従業員は、さまざまなジョブ カテゴリ (ブランチ マネージャー、ライン マネージャー、営業スタッフ) にまたがり、どのデータを優先するかを決定します。 この場合、アーティクルのジョブ カテゴリ データを使用して競合が発生した場合に勝者を判断するアーティクル リゾルバーを構築できます。
ある頻度で競合が発生する可能性がある場合は、競合解決戦略を実装する際に考慮する必要がある最も重要な決定事項を次に示します。
| 競合解決の問題 | 勧告 |
|---|---|
| ユーザーのカテゴリが異なると、優先順位の値が異なります。 | 既定のリゾルバーを使用し、優先順位の値が異なるサーバー サブスクリプションを作成します。 -または- 記事の中で権限の値が記載された列を認識するリゾルバーを使用して競合を解決します。 |
| 優先競合ソリューションの最初の変更が必要です。 | 既定のリゾルバーを使用し、クライアント サブスクリプションを作成します。 |
| 同じデータ行に対して競合する変更が行われなくなる限り、複数のユーザーが同じデータ行を変更できます。 | 列レベルの追跡が有効になっている既定のリゾルバーまたはアーティクル リゾルバーを使用します。 |
| 競合として行内の任意の値に対する複数の変更にフラグを設定します。 | 既定のリゾルバーまたはアーティクル リゾルバーを行レベルの追跡に使用します。 |
| 論理レコード内の任意の値に対する複数の変更に競合としてフラグを設定します。 | 論理レコード レベルの追跡で既定のリゾルバーを使用します (論理レコード機能は、カスタム リゾルバーやビジネス ロジック ハンドラーをサポートしていません)。 |
| 競合結果データは、元の競合データとは異なる必要があります。 | 新しい値を計算するアーティクル リゾルバーを使用します。 |