La cohérence des données signifie que les mêmes données apparaissent de la même manière partout. L'adresse d'un client dans le système de facturation correspond à celle du système de livraison. Le stock en entrepôt correspond à celui affiché sur le site web. En cas de divergence entre les systèmes, des erreurs se produisent : les commandes sont expédiées à d'anciennes adresses, les clients achètent des produits en rupture de stock. La cohérence est essentielle pour les systèmes interdépendants.
Les systèmes distribués rendent la cohérence difficile. Les données répliquées sur plusieurs serveurs peuvent se désynchroniser. Une partition réseau isole une région d'une autre. Les deux régions acceptent les écritures. Lorsque la partition est rétablie, des conflits de données apparaissent. Le théorème CAP stipule qu'il est possible d'avoir la cohérence, la disponibilité et la tolérance aux partitions, mais pas les trois simultanément. La plupart des bases de données distribuées privilégient la disponibilité et la cohérence éventuelle. Cela signifie que les données convergent avec le temps, mais il existe une période durant laquelle différents nœuds affichent des valeurs différentes. La cohérence forte exige une coordination, ce qui engendre une latence. Le choix dépend de l'application. Un registre bancaire nécessite une cohérence forte. Un flux de réseau social peut tolérer la cohérence éventuelle. Il n'existe pas de solution universelle. Tout dépend de ce qui est affecté par les divergences de données.
Modèles de cohérence
- Fort — tous les nœuds voient immédiatement les mêmes données
- Éventuellement — les nœuds convergent au fil du temps
- Les opérations causales — liées entre elles — sont observées dans l'ordre
- Lisez vos propres écrits — vous voyez immédiatement vos mises à jour.
La cohérence est un continuum. La question est de savoir quel niveau d'incohérence l'application peut tolérer avant de dysfonctionner.
Comments
No comments yet. Be the first to share a thought.
Leave a comment