149

どこを見ても、MongoDB は CP であることがわかります。しかし、掘り下げてみると、最終的に一貫性があることがわかります。safe=true を使用すると CP になりますか? もしそうなら、safe=true で書くと、結果を得る前にすべてのレプリカが更新されるということですか?

4

7 に答える 7

123

MongoDB はデフォルトで強整合性を備えています。書き込みを行ってから読み取りを行った場合、書き込みが成功したと仮定すると、読み取ったばかりの書き込みの結果をいつでも読み取ることができます。これは、MongoDB がシングルマスター システムであり、すべての読み取りがデフォルトでプライマリに送られるためです。必要に応じてセカンダリからの読み取りを有効にすると、MongoDB は古い結果を読み取ることができる最終的に一貫したものになります。

MongoDB は、レプリカ セットの自動フェイルオーバーによって高可用性も実現します: http://www.mongodb.org/display/DOCS/Replica+Sets

于 2012-07-02T16:33:11.693 に答える
21

すばらしい新しい記事が発表され、Kyle によるこの分野でのいくつかの素晴らしい実験も行われたため、MongoDB やその他のデータベースを C または A としてラベル付けするときは注意が必要です。

もちろん、CAP は、データベースが優勢であることをあまり言葉を使わずに追跡するのに役立ちますが、たとえば、CAP の C がアトミックな一貫性 (線形化可能性) を意味することを忘れがちです。そして、これは、分類しようとするときに理解するのに多くの苦労を引き起こしました. ですから、MongoDB は強い整合性を提供するだけでなく、それが C であるという意味ではありません。このように、この分類を行う場合は、疑問を残さないように、実際にどのように機能するかについても詳しく説明することをお勧めします。

于 2015-05-15T00:19:32.237 に答える
12

はい、使用時のCPsafe=trueです。これは単に、データがマスター ディスクに作成されたことを意味します。レプリカにも到着したことを確認したい場合は、'w=N' パラメータを調べてください。ここで、N はデータを保存する必要があるレプリカの数です。

詳細については、これこれを参照してください。

于 2012-07-02T13:16:38.903 に答える