ACID vs. BASE — NoSQL erklärt

Post on 19-Jun-2015

4,866 views 1 download

description

Unter dem Begriff NoSQL sammelt sich eine starke Konkurrenz zu Datenbanken wie MySQL, Oracle oder PostgreSQL. Systeme wie Cassandra, MongoDB und CouchDB haben deutlich andere Eigenschaften als konventionelle relationale Datenbankmanagementsysteme.Der Vortrag diskutiert unter anderem folgende Fragen:Warum wird ACID durch BASE ersetzt und was ist das CAP-Theorem?Warum arbeiten die meisten NoSQL-Datenbanken schemafrei?Was ist eventual consistency?

transcript

ACID vs. BASENoSQL erklärt

Hinnerk Haardt <hinnerk@randnotizen.de>

Not only SQL

SQLStructured 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

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

teur

er →

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

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

meh

r D

aten

mehr Durchsatz & höhere Verfügbarkeit →

vertikaleSkalierung

horizontaleSkalierung

Horizontale Skalierung führt zu verteilten

Systemen.

Kundenkontakt

Arbeit

Speicher

Kontaktstelle 2Kontaktstelle 1 Kontaktstelle 3

Speicher 2 Speicher 3Speicher 1

Arbeiter 2 Arbeiter 3Arbeiter 1

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

Storage

RAMCPU

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ügbarkeitunbegrenztes Wachstum

• 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

Fallacies of Distributed Computing

CAP-Theorem

Consistency

Partition Tolerance

Availability

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

Partition Tolerance

AvailabilityConsistency

• Basically Available

• Soft-state

• Eventual consistency

BASE

• weiche Konsistenz

• Verfügbarkeit

• best effort

• Nährungen akzeptabel

• einfache Entwicklung

• schneller

BASE• harte Konsistenz

• Isolation

• commit;

• Verfügbarkeit?

• komplexe Entwicklung (Schema)

• sicherer

ACID

»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

meh

r D

aten

mehr Durchsatz & höhere Verfügbarkeit →

horizontaleSkalierungm. harter

Konsistenz

vertikaleSkalierung

horizontaleSkalierungm. weicherKonsistenz

Techniken inNoSQL-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

sloppy quorum

• N — Anzahl Replikation

• R — Anzahl Lesezugriffe

• W — Anzahl Schreibzugriffe

hinted handoff

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.