Hinnerk Haardt

Werbung
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.
Herunterladen