recherche Google

Théorème Brewer CAP CDP

En informatique, dès que l’on travaille sur des données très importantes, il devient nécessaire de se reposer sur plusieurs machines / plusieurs endroits physiques pour stocker et traiter les données. Cela entraîne des problèmes d’intégrité. Concrètement, sur un système informatique distribué, il faut choisir entre cohérence et disponibilité des données en cas de panne (en cas normal, il n’y a pas besoin de faire de compromis).

Eric Brewer, professeur émérite en informatique et chercheur à Berkeley avait émis une conjecture en 1998 qui disait qu’il n’est pas possible, en environnement distribué, d’avoir des données à la fois cohérentes, disponibles et tolérantes au partitionnement. Responsable de l’infrastructure chez Google, le théorème du chercheur a des applications très évidentes : ainsi lors d’une recherche sur Google, si un serveur ne répond pas, il vaut mieux obtenir une réponse peut-être datée plutôt que pas de réponse du tout…

  • Données disponibles : toutes les interrogations de données doivent recevoir une réponse (même si la donnée n’est pas la plus récente);
  • Tolérance au partitionnement : en cas de panne mineure (hors coupure totale du réseau), chaque sous-ensemble du réseau doit pouvoir fonctionner en autonomie même si d’autres nœuds du système distribué n’envoient pas ou envoient tard des instructions ;
  • Cohérence des données : chaque nœud du système doit voir les mêmes données à un instant donné.

En 2002, une équipe de chercheur du MIT prouvèrent l’intuition du chercheur : en environnement distribué, seules 2 des trois contraintes peuvent être garanties. Ce théorème est aussi nommé CAP (Coherence, Availability, Partitionnement) en anglais ou CDP (Cohérence, Disponibilité, Partitionnement) en français.

Ce théorème est un des grands arguments des défenseurs des bases de données de type NoSQL qui préfèrent généralement la disponibilité des données. À l’inverse, les bases de données relationnelles privilégient, via les contraintes d’intégrité ACID, la cohérence des données.