Chaque modèle ou technologie NoSQL peut être caractérisé par sa capacité à satisfaire les 3 propriétés du théorème de Brewer, aussi appelé théorème CAP : Consistency, Availability, Partition tolerance.
Remarque : Pour les bases relationnelles, on s’assure plutôt que les transactions sont ACID (Atomicity, Consistency, Isolation and Durability).
Propriétés CAP
Cohérence
La cohérence (consistency) assure l’unicité de chaque donnée stockée par la base. Deux serveurs du réseau ne doivent pas retourner des résultats différents pour la même donnée demandée.
Les bases de données NoSQL sont dites, à minima, cohérentes à terme (eventually consistent). Même si une donnée peut ne pas être stockée de manière cohérente à un instant t, elle finit par l’être au bout d’un certain temps.
Disponibilité
La disponibilité (availability) assure que, pour toute requête envoyée à la base, la base soit en mesure de répondre.
La disponibilité n’implique pas que les données soient cohérentes. Les données de certains modèles NoSQL sont essentiellement disponibles (basically available) : l’accent est mis sur la disponibilité au détriment de la cohérence.
Tolérance au partitionnement
La tolérance au partitionnement (partition tolerance) est la capacité de la base à continuer de fonctionner, même en cas de dysfonctionnement d’une partie du réseau.
Une bonne tolérance au partitionnement immunise la base contre les points de défaillance unique (single point of failure, SPOF). Elle est atteinte grâce à la réplication, la redondance ou l’autonomie des nœuds.
Compromis CAP
Le théorème CAP dit qu’une base distribuée ne peut pas assurer les trois propriétés CAP. Elle doit favoriser deux propriétés, au détriment de la troisième. Pour chaque base, un choix est fait à propos des deux propriétés à favoriser.
Exemples : MongoDB est une base CP, Cassandra est une base AP.
Remarque : En plus du théorème CAP, les bases NoSQL ciblent généralement les propriétés BASE.