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 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 2 3 4 5 Verfügbarkeit 99% 99,9% 99,99% 99,999 Downtime / Jahr 3 Tage 15 Stunden 8 Stunden 45 Minuten 52 Minuten 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

Consistency

Availability

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 Isolation commit; Verfügbarkeit? komplexe Entwicklung (Schema) sicherer

»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

horizontale Skalierung m. weicher Konsistenz

mehr Daten →

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

Sign up to vote on this title
UsefulNot useful