Résumé du livre

Designing Data-Intensive Applications

The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

La référence des systèmes de données modernes. Réplication, partitionnement, transactions, consensus, batch et stream : les grands principes derrière les bases de données et les systèmes distribués.

Commencer 11 chapitres · ~206 min de lecture

Sommaire

  1. 01 Fiabilité, scalabilité, maintenabilité Les trois préoccupations de tout système de données — et comment les mesurer : pannes, percentiles de latence, montée en charge et exploitabilité. 17 min
  2. 02 Modèles de données & langages de requête Relationnel, document ou graphe : choisir son modèle de données, et le langage pour l'interroger (SQL, MapReduce, Cypher). 16 min
  3. 03 Stockage et indexation Comment une base range et retrouve les données : journaux et LSM-trees contre arbres B, index, et OLTP contre OLAP. 22 min
  4. 04 Encodage & évolution des schémas Sérialiser les données pour les faire durer et évoluer : JSON, Thrift, Protocol Buffers, Avro, et la compatibilité ascendante/descendante. 17 min
  5. 05 La réplication Copier les données sur plusieurs nœuds : leader/suiveurs, multi-leader, sans leader, et les pièges de la latence de réplication. 21 min
  6. 06 Le partitionnement (sharding) Découper un grand jeu de données en partitions : par intervalle ou par hachage, index secondaires, rééquilibrage et routage. 17 min
  7. 07 Les transactions ACID, niveaux d'isolation faibles (read committed, snapshot, write skew) et sérialisabilité (verrouillage 2PL, SSI). 19 min
  8. 08 Les pièges des systèmes distribués Réseaux, horloges et processus peu fiables : défaillances partielles, vérité, mensonges et modèles de système. 18 min
  9. 09 Cohérence & consensus Linéarisabilité, ordre causal, broadcast à ordre total, commit à deux phases et consensus (Raft, Paxos, ZooKeeper). 20 min
  10. 10 Le traitement par lots (batch) Traiter d'énormes volumes hors-ligne : la philosophie Unix, MapReduce, jointures et moteurs de dataflow. 20 min
  11. 11 Le traitement de flux (streaming) Traiter les données en continu : systèmes de messagerie, logs partitionnés (Kafka), CDC, event sourcing et raisonnement sur le temps. 19 min