ACID vs. BASE NoSQL erklärt Hinnerk Haardt <[email protected]> Not only SQL SQL Structured Query Language Programmiersprache für relationale Datenbanken Warum? Das Internet ist schuld! 1980er: data bank ACID • Atomicity — ganz oder gar nicht • Consistency — gewährleistet Integrität • Isolation — Kapselung gleichzeitiger T. • Durability — Persistenz aller Änderungen »große« Datenbanken Skalieren vertikal RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage teurer → größer → 21. Jh. Beispiel Facebook • 30.000 Server • 25 Terabyte Logdaten täglich • 300.000.000 Nutzer • 230 Ingenieure Das Internet ist schuld. Horizontal RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage mehr Daten → horizontale Skalierung vertikale Skalierung mehr Durchsatz & höhere Verfügbarkeit → Horizontale Skalierung führt zu verteilten Systemen. Kundenkontakt Arbeit Speicher Kontaktstelle 1 Kontaktstelle 2 Kontaktstelle 3 Arbeiter 1 Arbeiter 2 Arbeiter 3 Speicher 1 Speicher 2 Speicher 3 RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage RAM CPU Storage Normalzustand: DEFEKT Verfügbarkeit Availability Klasse Verfügbarkeit Downtime / Jahr 2 99% 3 Tage 15 Stunden 3 99,9% 8 Stunden 45 Minuten 4 99,99% 52 Minuten 5 99,999 5 Minuten Sicherheit (ACID) Verfügbarkeit unbegrenztes Wachstum Fallacies of Distributed Computing • • • • the network is reliable latency is zero bandwidth is infinite the network is secure • • • • topology doesn’t change there is one administrator transport cost is zero the network is homogeneous CAP-Theorem Consistency Availability Partition Tolerance Network Partitioning • Teilung eines Netzwerkes, • z.B. in zwei Hälften, beide getrennt erreichbar • Lösung A: Eine Hälfte abschalten — Konsistenz erhalten • Lösung B: Konsistenz aufgeben — Verfügbarkeit erhalten »in larger distributed-scale systems, network partitions are a given; therefore, consistency and availability cannot be achieved at the same time« Werner Vogels, Amazon.com Availability Consistency Partition Tolerance BASE • Basically Available • Soft-state • Eventual consistency BASE • • • • • • weiche Konsistenz Verfügbarkeit best effort Nährungen akzeptabel einfache Entwicklung schneller ACID • • • • • harte Konsistenz • sicherer Isolation commit; Verfügbarkeit? komplexe Entwicklung (Schema) »But I think it’s a spectrum« Eric A. Brewer 2009: NoSQL Definition… »Gruppe nicht konventioneller Datenbanken« Willkommen im Zoo! • CouchDB • MongoDB • Redis • Memcachedb • Tokyo Cabinet • Google BigTable • Amazon Dynamo • Apache Cassandra • Project Voldemort • Mnesia (Erlang) • Hbase (Apache Hadoop) • Hypertable • Twitter Gizzard • weitere… Eigenschaften selten ACID eingeschränkte Transaktionen kein »JOIN« kein SQL einfach anzusprechen schemafrei skaliert horizontal Replikation eventual consistency probabilistic worldview mehr Daten → horizontale Skalierung m. weicher Konsistenz horizontale Skalierung m. harter Konsistenz vertikale Skalierung mehr Durchsatz & höhere Verfügbarkeit → Techniken in NoSQL-Datenbanken Distributed Hash Table • keyspace partitioning • overlay network Consistent Hashing • bilde Daten auf Punkte im Ring ab • bilde Server auf Punkte im Ring ab • Server sind für Daten rechts von ihnen verantwortlich Vector Clocks Bild:Wikipedia sloppy quorum • N — Anzahl Replikation • R — Anzahl Lesezugriffe • W — Anzahl Schreibzugriffe hinted handoff Merkle Trees Bild:Wikipedia Gossip Paxos Referenzen • Bigtable: A Distributed Storage System for Structured Data • • Eventually Consistent - Revisited • Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services • A relational model of data for large shared data banks, E. F. Codd • Amazon's Dynamo Keynote address to the PODC conference in 2000 by Eric Brewer • • • Vertical Paxos and primary-backup replication • • • • • Architecting for Latency Wikipedia:Vector clock Distributed Programming and Data Consistency Internet-Scale Service Efficiency Harvest,Yield, and Scalable Tolerant Systems Gossip-based broadcast protocols A brief history of Consensus, 2PC and Transaction Commit.