You are on page 1of 70

ACID vs.

BASE
NoSQL erklärt
Hinnerk Haardt <hinnerk@randnotizen.de>
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 RAM
CPU CPU
Storage Storage

RAM RAM
CPU CPU
Storage Storage
RAM RAM RAM RAM
CPU CPU CPU CPU
Storage Storage Storage Storage

RAM RAM RAM RAM


CPU CPU CPU CPU
Storage Storage Storage Storage

RAM RAM RAM RAM


CPU CPU CPU CPU
Storage Storage Storage Storage

RAM RAM RAM RAM


CPU CPU CPU CPU
Storage Storage Storage Storage
horizontale
Skalierung
mehr Daten →

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 RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage Storage

RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage Storage

RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage Storage

RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage Storage

RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage Storage

RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage Storage

RAM RAM RAM RAM RAM RAM RAM RAM RAM RAM
CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU
Storage Storage Storage Storage Storage Storage Storage Storage Storage 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 • topology doesn’t change

• latency is zero • there is one administrator

• bandwidth is infinite • transport cost is zero

• the network is secure • 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
Consistency Availability

Partition
Tolerance
BASE

• Basically Available
• Soft-state
• Eventual consistency
BASE ACID
• weiche Konsistenz • harte Konsistenz

• Verfügbarkeit • Isolation

• best effort • commit;


• Nährungen akzeptabel • Verfügbarkeit?
• einfache Entwicklung • komplexe Entwicklung
(Schema)
• schneller
• sicherer
»But I think it’s a spectrum«
Eric A. Brewer
2009: NoSQL
Definition…
»Gruppe nicht
konventioneller
Datenbanken«
Willkommen im Zoo!
• CouchDB • Apache Cassandra
• MongoDB • Project Voldemort
• Redis • Mnesia (Erlang)
• Memcachedb • Hbase (Apache
Hadoop)
• Tokyo Cabinet
• Hypertable
• Google BigTable
• Twitter Gizzard
• Amazon Dynamo
• weitere…
Eigenschaften
selten ACID
eingeschränkte
Transaktionen
kein »JOIN«
kein SQL
einfach anzusprechen
schemafrei
skaliert horizontal
Replikation
eventual consistency
probabilistic worldview
horizontale
Skalierung
m. weicher
Konsistenz

horizontale
Skalierung
m. harter
Konsistenz
mehr Daten →

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
• Keynote address to the PODC conference in
2000 by Eric Brewer
• 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
• Vertical Paxos and primary-backup replication
• Wikipedia:Vector clock
• Distributed Programming and Data
Consistency
• Architecting for Latency
• Internet-Scale Service Efficiency
• Harvest,Yield, and Scalable Tolerant Systems
• Gossip-based broadcast protocols
• A brief history of Consensus, 2PC and
Transaction Commit.

You might also like