Qu'est-ce qu'une base de données distribuée ?
Une base de données distribuée répartit les données sur plusieurs serveurs (nœuds) situés à différents endroits. Le théorème CAP stipule que vous ne pouvez garantir que deux des trois propriétés : la cohérence (chaque lecture voit la dernière écriture), la disponibilité (chaque requête obtient une réponse) et la tolérance au partitionnement (le système fonctionne malgré les coupures réseau).
Pourquoi est-ce important ? Chaque grand service Internet, de Google à Netflix, repose sur des bases de données distribuées. Comprendre les compromis entre cohérence et disponibilité est essentiel pour construire des systèmes fiables et évolutifs servant des milliards d'utilisateurs.
📖 Approfondissement
Analogie 1
Imaginez un système de bibliothèques avec des succursales dans 5 villes, partageant toutes le même catalogue. Lorsqu'une personne consulte un livre dans la succursale A, toutes les autres succursales doivent mettre à jour leurs dossiers. Si la ligne téléphonique vers la succursale C tombe en panne (une partition réseau), la succursale C peut toujours afficher le livre comme disponible — il s'agit d'un problème de cohérence. Vous pouvez verrouiller tous les prêts jusqu'à ce que la succursale C se reconnecte (en choisissant la cohérence), ou laisser chaque succursale continuer à prêter indépendamment et se réconcilier plus tard (en choisissant la disponibilité).
Analogie 2
Pensez à une discussion de groupe avec des amis de différents pays. Lorsque vous envoyez un message, tout le monde devrait le voir dans le même ordre. Mais si la connexion Internet d'une personne tombe en panne, elle manque des messages et peut répondre à des informations obsolètes, créant ainsi des fils de conversation conflictuels. Les bases de données distribuées sont confrontées à ce problème précis à grande échelle et utilisent des techniques telles que les horloges vectorielles et les CRDT pour régler le chaos lorsque tout le monde se reconnecte.
🎯 Conseils du simulateur
Débutant
Commencez avec 5 nœuds et un facteur de réplication de 3 — cela signifie que chaque élément de données est stocké sur 3 des 5 nœuds
Intermédiaire
Comparez la cohérence d'écriture ALL vs ONE — ALL est plus lent mais garantit que chaque réplique dispose des données les plus récentes
Expert
Désactivez les horloges vectorielles et déclenchez des écritures simultanées pendant une partition pour observer les conflits non résolus.
📚 Glossaire
🏆 Personnages clés
Eric Brewer (2000)
Formulation du théorème CAP à l'UC Berkeley, façonnant fondamentalement la conception de bases de données distribuées en prouvant l'impossibilité de garantir simultanément la cohérence, la disponibilité et la tolérance de partition.
Leslie Lamport (1998)
Création de l'algorithme de consensus Paxos et pionnier de la théorie des systèmes distribués avec des concepts tels que les horloges logiques, les horodatages de Lamport et le problème des généraux byzantins.
Diego Ongaro (2014)
Conception de l'algorithme de consensus Raft à Stanford, rendant le consensus distribué compréhensible et pratique pour les systèmes du monde réel comme etcd et CockroachDB
Werner Vogels (2007)
A dirigé la conception de Dynamo d'Amazon, qui a introduit un hachage cohérent, des horloges vectorielles et des quorums bâclés - inspirant Cassandra, Riak et l'ensemble du mouvement NoSQL
Jeff Dean & Wilson Hsieh (2012)
Co-conception de Google Spanner, la première base de données distribuée à l'échelle mondiale avec des transactions cohérentes en externe utilisant l'API TrueTime et la synchronisation GPS/horloge atomique
Marc Shapiro (2011)
Pionnier des types de données répliquées sans conflit (CRDT) à l'INRIA, fournissant des bases mathématiques pour une cohérence éventuelle sans coordination
🎓 Ressources d'apprentissage
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services [paper]
La preuve formelle du théorème CAP, établissant le résultat d'impossibilité fondamentale pour les systèmes distribués (ACM SIGACT News, 2002) - Dynamo: Amazon's Highly Available Key-value Store [paper]
Article influent d'Amazon sur le stockage distribué finalement cohérent utilisant un hachage cohérent, des horloges vectorielles et un quorum bâclé (SOSP 2007) - Spanner: Google's Globally Distributed Database [paper]
Base de données cohérente à l'échelle mondiale basée sur TrueTime de Google, assurant une cohérence externe grâce à la synchronisation du GPS et de l'horloge atomique (OSDI 2012) - In Search of an Understandable Consensus Algorithm (Raft) [paper]
L'algorithme de consensus Raft conçu pour la compréhensibilité, maintenant utilisé dans etcd, CockroachDB et TiKV (USENIX ATC 2014) - Designing Data-Intensive Applications [article]
Guide complet de Martin Kleppmann sur les principes fondamentaux des systèmes distribués, la réplication, le partitionnement et les modèles de cohérence - Jepsen.io [article]
Tests et analyses rigoureux par Kyle Kingsbury des affirmations d'exactitude des bases de données distribuées dans des conditions de défaillance réelles - The Raft Consensus Algorithm Visualization [article]
Visualisation interactive de l'algorithme de consensus Raft avec élection du leader étape par étape et réplication du journal