web-dev-qa-db-ja.com

Mongo CP、Cassandra AP?

私はネットで多くの記事を読みましたが、なぜMongo CP、Cassandra AP、RDBMS CA?.

モンゴ

1つのマスターと2つのスレーブがあるシナリオを考えてみましょう。検討する

  1. 書き込み要求が到着し、マスターに送信されます。
  2. マスターのみでコミットされますが、スレーブに書き込まれる前にマスターがオフ(クラッシュ)します
  3. マスターが再選択されるまで、書き込みリクエストは待機する必要があり、システムは利用できません
  4. 前のノード(ステップ2でクラッシュしたノード)が戻ると、そのノードから保留中の書き込みがスレーブに書き戻されます。これは結果整合性と呼ばれます。

ステップ3と4のため、私の理解では、MongoはCPであると言われ、Cは結果整合性を表します。正しい?

カサンドラ

ここではマスター/スレーブモデルはなく、すべてのノードがシャードキーに基づいて共有書き込みおよび読み取りリクエストを受け取ります。

  1. 書き込み要求が任意のノード(調整ノードと呼ばれる)に到着します。
  2. 調整ノードは、シャードキーに基づいてノードの1つにリダイレクトします
  3. コミットされますが、ノードは他のレプリケーションノードに書き込まれる前にオフ(クラッシュ)します。
  4. 再度同じシャードキーでリクエストを書き込み、調整されたノードがレプリカノードにすぐにリダイレクトします(クラッシュしたノードのレプリカ)
  5. 前のノード(ステップ3でクラッシュしたノード)が戻ると、そのノードからの保留中の書き込みがレプリカノードに書き戻されます。 cassandraも結果的に一貫しているように見えますか?

ステップ4は、cassandraが高可用性である理由を説明していますが、ステップ5も結果の一貫性を表しています。したがって、私のアンサーダンディングでは、cassandraは、結果の一貫性と可用性の両方を提供します。次になぜそれは一貫性を提供しないと言われていますか?

3
user3198603

Cは結果整合性の略です。正しい?

CAP定理 の整合性strong整合性を参照しており、すべての読み取りが最新の書き込みまたはエラーを受け取ります。デフォルトでは、MongoDBドライバーはすべての読み取りと書き込みをレプリカセットのプライマリに送信します。これは、強い整合性があります。

CAPの定理は、分散システムでは、ネットワークパーティションが発生した場合に整合性と可用性のどちらかを選択する必要があると主張しています。 MongoDBのレプリカセットアプローチは、書き込み整合性(CP)に単一のプライマリを使用しますが、Cassandraのレプリケーション戦略は書き込み可用性(AP)を優先します。パーティションの両側で同じデータを更新すると競合が発生する可能性があるため、ネットワークパーティションでは強い整合性は実現できません。書き込みの可用性を維持するには、APデータベースシステムに 競合解決 のソリューションが必要です。これは、結果の一貫性とは別の考慮事項です。

ただし、CAPは実際の動作を単純化したものです。MongoDBとCassandraはどちらも読み取りと書き込みに対して調整可能なレベルの整合性を備えています。例:MongoDBには 書き込みに関する懸念 があります。書き込み操作に必要な確認のレベル、レプリカセットのメンバーに要求をルーティングするための 読み取り設定 、および読み取りデータの最新性、一貫性、分離プロパティを制御するための 読み取りに関する関心 レプリカセットとシャーディングされたデプロイメント。

CAP定理の著者であるEric Brewerは、2012年にさらに微妙な見方でこれを再検討しました: CAP 12年後:「ルール」の変化

  1. マスターが再選択されるまで、書き込みリクエストは待機する必要があり、システムは利用できません

プライマリがない書き込みはありませんが、レプリカセットには読み取りの可用性があります。 MongoDB 3.6は、アプリケーションがレプリカセットの選択と一時的なネットワークエラーをより適切に処理できるようにする Retryable Writes 機能を追加しました。

  1. 前のノード(ステップ2でクラッシュしたノード)が戻ると、そのノードから保留中の書き込みがスレーブに書き戻されます。

MongoDBレプリカセットのプライマリが使用できなくなると、適格なセカンダリと投票メンバーのクォーラムがある場合、レプリカセットの残りのメンバーが新しいプライマリを選出します。この例では、投票過半数はレプリカセットの2/3のメンバーになります。以前のプライマリが受け付けた書き込みのうち、レプリカセットメンバーの大多数に書き込まれなかったものは ロールバック (ディスクに保存)されるため、以前のプライマリは現在のプライマリの履歴と整合性のある状態から同期を再開します。

2
Stennie