Ich stimme Luccas Post zu. Sie können nicht einfach sagen, dass MongoDB CP / AP / CA ist, da es sich tatsächlich um einen Kompromiss zwischen C, A und P handelt, abhängig von der Datenbank- / Treiberkonfiguration und der Art der Katastrophe : Hier eine visuelle Zusammenfassung und unter a detailliertere Erklärung.
Scenario | Main Focus | Description
---------------------------|------------|------------------------------------
No partition | CA | The system is available
| | and provides strong consistency
---------------------------|------------|------------------------------------
partition, | AP | Not synchronized writes
majority connected | | from the old primary are ignored
---------------------------|------------|------------------------------------
partition, | CP | only read access is provided
majority not connected | | to avoid separated and inconsistent systems
Konsistenz:
MongoDB ist stark konsistent, wenn Sie eine einzelne Verbindung oder die richtige Schreib- / Lesebedenken-Ebene verwenden ( was Ihre Ausführungsgeschwindigkeit kostet ). Sobald Sie diese Bedingungen nicht erfüllen (insbesondere wenn Sie von einem sekundären Replikat lesen), wird MongoDB schließlich konsistent.
Verfügbarkeit:
MongoDB erhält hohe Verfügbarkeit durch Replica-Sets . Sobald die Primärdatenbank ausfällt oder anderweitig nicht mehr verfügbar ist, bestimmen die Sekundärdaten eine neue Primärdatenbank, die wieder verfügbar sein soll. Dies hat einen Nachteil: Jeder Schreibvorgang, der von der alten Primärdatenbank ausgeführt, aber nicht mit den Sekundärdateien synchronisiert wurde, wird zurückgesetzt und in einer Rollback-Datei gespeichert, sobald die Verbindung zum Set wiederhergestellt wird (die alte Primärdatenbank ist eine Sekundärdatei jetzt). In diesem Fall wird also aus Gründen der Verfügbarkeit eine gewisse Konsistenz geopfert.
Partitionstoleranz:
Durch die Verwendung dieser Replikatsätze erreicht MongoDB auch die Partitionstoleranz: Solange mehr als die Hälfte der Server eines Replikatsatzes miteinander verbunden sind, kann ein neuer Primärserver ausgewählt werden . Warum? Um sicherzustellen, dass zwei getrennte Netzwerke nicht beide eine neue primäre auswählen können. Wenn nicht genügend Sekundärdateien miteinander verbunden sind, können Sie immer noch von ihnen lesen (aber die Konsistenz ist nicht gewährleistet), aber nicht schreiben. Das Set ist aus Gründen der Konsistenz praktisch nicht verfügbar.