Nach einer kurzen Einführung in verteilte Systeme zeige ich die Motivation für die Entstehung von NoSQL-Datenbanken auf. Ich stelle die Haupt-Kategorien der NoSQL-Datenbanken vor: Key-Value, Column Store, Graphen- und Dokumentenoriente Datenbanken. Danach gehe ich auf konkrete Datenbanken wie MongoDB, Neo4j und Redis ein.
16. Vertical vs. Horizontal Scalability
NOSQL DATABASES
SCALE
HORIZONTALLY
NEED
AN
EXAMPLE?
MESSAGING SYSTEM OF
(POWERED BY )
- 100 NODE CLUSTER
- 87 BILLION R/W-OPERATIONS / DAY
- 9+ BILLION MESSAGES / DAY
- 4 PB COMPRESSED DATA / DAY
- 45% GROWTH / MONTH
SOURCE: NICOLAS SPIEGELBERG
BERLIN BUZZWORDS, JUNE 2012
16
17. For a distributed
computer system
it is impossible to
simultaneously
provide all
these three
guarantees!
Partition
Tolerance
failure of single
nodes doesn‘t
effect the overall
system
CAP Theorem a.k.a Brewer’s Theorem (2000)
Consisteny
all nodes see
the same data at
the same time
Availability
a guarantee that
every request
receives a
response
17
40. Neo4j > Graph
Graph := ( V, E ) mit
V := Menge Knoten (Vertices)
E := Teilmenge von (V x V) (Edges)
Neo4j-Graph :=
Gerichteter Graph,
Knoten und Beziehungen können Eigenschaften
haben sog. Property Graph
40
47. Redis > Fakten
Version 3.0
Kategorie: Key-Value-Datenbank
Abfragen: Key-only, Pub/Sub
Indizes: Zugriff per se nur über Key
Replikation: Master/Slave mit autom. Failover
Sharding: Hash-basierte, disjunkte Verteilung der Daten
TX: ACID mit opt. Locking auf Menge von Keys
API: • Protokoll: ASCII over TCP/IP
• Treiber für viele Sprachen
47