マスターがマイノリティ・ノード・パーティションに存在する場合

シャードが2つのパーティションに分割されたものとします。パーティションAには、マスターを除き、プライマリ・ゾーン内のレプリケーション・ノードの単純多数が含まれています。パーティションBには、マスターを含め、残りのノードが含まれています。

クライアント・コードによって両方のパーティションにネットワークからアクセス可能であるものとすると、次のようになります。

  • パーティションAは、マスターが存在しなくなったことを認識します。パーティションAにはプライマリ・ゾーン内のレプリケーション・ノードの単純多数以上が含まれているため、新しいマスターを選択できます。このことは迅速に実行されるため、シャードは引き続き正常に動作します。

    パーティションAで書込みリクエストを処理できるかどうかは、使用されている永続性ポリシーによって決まります。永続性ポリシーによって求められるレプリカが過半数以下である場合は、シャードは書込みリクエストを処理できます。

  • パーティションBは、有効なマスターの存在を認識して、引き続き正常に動作します。ただし、パーティションBで書込みリクエストを処理できるのは、使用されている永続性ポリシーによってシャードのレプリカの参加が求められていない場合のみです。プライマリ・ゾーン内のノードの過半数が書込み操作に対して確認応答する必要があるか、またはプライマリ・ゾーン内のすべてのノードが書込みに対して確認応答する必要がある場合は、永続性ポリシーを満たすだけの十分な数のノードが存在しないため、パーティションでは書込みを処理できません。

    永続性としてNONEが使用されている場合は、ネットワーク・パーティションが解決されるまでの間、シャードは2つのマスターで動作することになります。パーティションが解決されると、シャードにより問題が認識および修正されます。パーティションAでは有効な選択が行われたため、そこで実行された書込みは保持されます。パーティションBで実行された書込みはすべて破棄されます。パーティションBの古いマスターは単純なレプリカに降格され、パーティションBのすべてのレプリカが新しいマスターと同期されます。

    ノート:

    このシナリオではデータが失われる可能性があるため、永続性NONEの使用は避けることをお薦めします。この永続性設定は、書込みスループットを最大限に高めることが絶対条件であり、データの損失を気にしない場合にのみ使用してください。

さらに、クライアント・コードがパーティションAにはアクセスできて、パーティションBにはアクセスできない場合は、選択が終了していれば、シャードでは引き続き読取りリクエストと書込みリクエストが正常に処理されますが、読取り容量が減少します。

一方、クライアント・コードがパーティションBを読み取ることができても、パーティションAを読み取ることができない場合は、最も弱い永続性ポリシーを使用しないかぎり、シャードでは書込みリクエストを一切処理できなくなります。これは、パーティションBには、最も弱い永続性ポリシー以外を満たすだけの十分なレプリケーション・ノードが含まれていないためです。