Je suis d'accord avec Luccas post. Vous ne pouvez pas simplement dire que MongoDB est CP / AP / CA, car il s'agit en fait d'un compromis entre C, A et P, en fonction de la configuration de la base de données / du pilote et du type de catastrophe : voici un récapitulatif visuel, et ci-dessous un explication plus détaillée.
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
Cohérence:
MongoDB est fortement cohérent lorsque vous utilisez une seule connexion ou le bon niveau de préoccupation en écriture / lecture ( ce qui vous coûtera en vitesse d'exécution ). Dès que vous ne remplissez pas ces conditions (en particulier lorsque vous lisez à partir d'une réplique secondaire), MongoDB devient finalement cohérent.
Disponibilité:
MongoDB obtient une haute disponibilité grâce aux jeux de réplicas . Dès que le primaire tombe en panne ou devient indisponible, les secondaires détermineront un nouveau primaire pour qu'il redevienne disponible. Il y a un inconvénient à cela: chaque écriture effectuée par l'ancien primaire, mais non synchronisée avec les secondaires sera restaurée et enregistrée dans un fichier de restauration, dès qu'elle se reconnectera à l'ensemble (l'ancien primaire est un secondaire maintenant). Donc, dans ce cas, une certaine cohérence est sacrifiée pour des raisons de disponibilité.
Tolérance de partition:
Grâce à l'utilisation desdits Replica-Sets, MongoDB atteint également la tolérance de partition: tant que plus de la moitié des serveurs d'un Replica-Set sont connectés les uns aux autres, un nouveau primaire peut être choisi . Pourquoi? Pour garantir que deux réseaux séparés ne peuvent pas choisir un nouveau principal. Lorsqu'il n'y a pas assez de secondaires connectés les uns aux autres, vous pouvez toujours lire à partir d'eux (mais la cohérence n'est pas assurée), mais pas écrire. L'ensemble est pratiquement indisponible par souci de cohérence.