SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

25
SimpleVOC - Yet another Memcached? Bausteine für eine Key/Value- Datenbank

description

Zur Zeit existieren viele, verschiedene Key/Value-Datenbanken. Neben dem Urvater “memcached” gibt es kompatible Produkte, wie beispielsweise Redis, oder Neuentwicklungen ala Dynamo oder Riak. Warum sollte man also eine weitere Key/Value-Datenbank bauen? Der Vortrag beschreibt, aus welchen Bausteine eine solche Datenbank besteht, warum HTTP/JSON zur Zeit die Protokolle der Wahl sind, und warum man Dank des Satzes von Brewer (aka CAP Theorem) manchmal nicht alles haben kann. Der Vortrag erklärt zum einen das CAP Theorem, untersucht wie dies in memcached umgesetzt ist und welche Verbesserungen möglich sind. Zum anderen wird SimpleVOC OPEN beschrieben, eine OpenSource C++-Anwendungen mit den Protokollen des Web (HTTP, JSON). Der SimpleVOC OPEN stellt eine Key/Value-Datenbank zur Verfügung, welche als memcached Ersatz dienen kann. Im Gegensatz zu umfangreicheren Lösungen, wie beispielsweise Redis, versucht der SimpleVOC OPEN sich auf das Wesentliche zu konzentrieren, nämlich der Speicherung von Key/Value-Paaren im Hauptspeicher. Es werden die verschiedenen Komponenten beschrieben, welche benötigt werden, um einen Web 2.0 Server bereitzustellen. Dabei handelt es sich um einen I/O-Scheduler, einen einfachen HTTP-Server, einen JSON-Parser sowie eine InMemory-Datenbank.

Transcript of SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

Page 1: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC - Yet another

Memcached?Memcached?

Bausteine für eine Key/Value-

Datenbank

Page 2: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

SimpleVOC – Yet another memcached?Bausteine für eine Key/Value Datenbank.

Theorie (Martin Schönert)Praxis (Frank Celler)

Page 3: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Eine Weisheit zum Anfang

Simple things should be simple,complex things should be possible.

Alan Kay, 2001

Page 4: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Ich finde folgendes abgeleitetes Bewertungsschema ziemlich hilfreich:

In System X sind:einfache Dinge:mittelschwere Dinge:schwierige Dinge:

Page 5: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Da gibt es dann einige interessante Kandidaten (Beispiel total subjektiv):

In Hibernate sind:mittelschwere Dinge: einfach gemachteinfache Dinge: vergleichsweise mittelschwerschwierige Dinge: praktisch unmöglich

Page 6: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Die Geburt einer noSQL Datenbank

19:42: "Hmm, ich habe hier diese vielen Key/Value Paare. Die muss ich häufig speichern und ändern und sehr häufig abzufragen."

19:44: "Ok, ich schreibe die einfach in diese Oracle Tabelle mit einer VARCHAR2 Spalte Key und einer VARCHAR2 Spalte Value."

21:31: "Schade, dass ist nicht performant genug, und 4000 Buchstaben als Limit für Value wird auch nicht immer reichen."

21:32: "Jetzt müsste ich vermutlich die Spaltentypen ändern und dann einen Index anlegen."

21:33: "Ich glaube es ist schneller ich baue mir eine In-Memory Datenbank, dazu muss ich ja nur wenig programmieren, einen Hash-Table, einen Event-gesteuerten TCP/IP Server,einen HTML Parser, etc. Wie schwer kann das schon sein?"

Page 7: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Die Geburt einer noSQL Datenbank

Ein Entwickler hat ein einfaches Problem.Die Lösung mit einer relationalen Datenbank

wird als zu schwierig empfunden.Der Entwickler schafft eine einfache Lösung

für das einfache Problem.Seine Lösung ist erfolgreich und wird folglich

für immer neuer Probleme eingesetzt.Und jetzt muss sie auch schwierige Dinge

möglich machen.

Page 8: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Die Lösung ...

Verteile die Datenbank auf mehrere Rechner

Page 9: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

für verschiedene Probleme

Verfügbarkeitwenn ein Server abstürzt soll die DB verfügbar bleiben

Zuverlässigkeitwenn ein Server abstürzt sollen keine Daten verloren gehen

Performance (genauer Durchsatz)die Anzahl der Requests ist zu gross für einen Server

Volumendie Datenmenge ist zu gross für einen Server

die ersten drei führen in manchen Fällen nicht nur zu einer Verteilung über Server, sondern zu einer Verteilung über Standorte.

Page 10: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Die beste Lösung ...

Die Datenbankzusammen mit einer API

liefern für einen Clienten dieAbstraktion einer Datenbank die

immer verfügbar istund immer die richtigen Daten liefert.

Page 11: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010 0

ist unmöglich: Eric Brewer's CAP Theorem

Von den drei Eigenschaften

Consistency (ständige Konsistens der Daten für alle Clienten)Availibility (ständige Verfügbarkeit der DB für alle Clienten)Partitionability (tolerant in einer Split-Brain Situation)

sind alle Paare (CA, CP, AP) zu realisieren; jedoch nie alle drei Eigenschaften zusammen.

bewiesen von Gilbert & Lynch, 2002

Page 12: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Das ist für noSQL Datenbanken eine Chance

Denn die perfekte Lösung ist zwar nicht möglich,

aber es gibt viele theoretisch mögliche Lösungendie der perfekten auf verschiedene Arten nahekommen

von denen einige die Kooperation der Applikationeinsetzen (welche immer mehr Wissen darüber hatwie die Daten aussehen können)

und in der relationalen Welt werden nur wenigemögliche Lösungen angeboten (und dabei keinedie Kooperation benötigen)

Page 13: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Datenbankreplikation / Log-Shipping / ...

ReadWrite

SyncAsync

Page 14: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Datenbankreplikation / Log-Shipping / ...

ReadWrite

SyncAsync

Read

Page 15: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Datenbankreplikation / Log-Shipping / ...

ReadWrite

Sync

ReadWrite

Page 16: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Doppeltes Schreiben und Lesen(passt besonders gut zu kooperierenden Apps)

APILibrary

eventuallyconsistent

Page 17: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Vielfaches Schreiben und Lesen bietet eine Art Tuning zwischen AP und CP (siehe W. Vogels, Dynamo)

APILibrary

R ReadsW Writes

N ServerR + W > N

Page 18: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Consistent Hashing kann gut mit Veränderungen des Serverpools umgehen

APILibrary

berechne Hashverteile entsprechend

Page 19: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Fazit

Es gibt viele Möglichkeiten einenoSQL Datenbank auf mehrereRechner zu verteilen, die inverschiedenen Situationen jeweiloptimal sind.

Page 20: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

Anwendungsbeispiel

• Research Dokumente aus vier Abteilungen

• Voting aller Benutzer

Master / Slave Master / Slave

Master / Slave Master / Slave

Dokument CP

Voting AP

Page 21: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

Datenspeicher

• memcached: LRU Cache, weit verbreitet

• Amazon Dynamo: CAP Theorem

– Cassandra

– Voldemort– Voldemort

– Riak

• Berkeley DB: In-Process Datenbank

• Tokyo Cabinet & Tyrant: In-Process & Server

• Redis: Key/Value Datenbank

Page 22: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

Warum SimpleVOC?

• einfach

• HTTP Interface

• Zuverlässigkeit

– Snapshots– Snapshots

– Transaktionslogs

– CAP Theorem

Page 23: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

Komponenten

• I / O Library

– libev

• JSON.org

• HTTP Interface• HTTP Interface

– Apache

– Lighttpd

• Key / Value Store

– STL

– Memory Blocks

Page 24: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

Vielen Dank und eine Frage

Man/frau sieht sich auf

www.simplevoc.org

Welche Plattform?Welche Plattform?

• sourceforge.net

• berlios.de

• Savannah.gnu.org

• …

Page 25: SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)

SimpleVOC, FrOSCon 2010

Vielen Dank

triAGENS GmbHBrüsseler Strasse 89-9350672 Köln