Cloud Conf - Datenbanken in der Cloud

63
Mathias Meyer, 25.11.2009 Peritor GmbH Datenbanken in der Cloud Data-Storage jenseits von SQL Mittwoch, 25. November 2009 NEUE GENERATION von post-relationalen Datenbanken

description

Data-Storage jenseits von SQL.

Transcript of Cloud Conf - Datenbanken in der Cloud

Page 1: Cloud Conf - Datenbanken in der Cloud

Mathias Meyer, 25.11.2009Peritor GmbH

Datenbanken in der CloudData-Storage jenseits von SQL

Mittwoch, 25. November 2009

NEUE GENERATION von post-relationalen Datenbanken

Page 2: Cloud Conf - Datenbanken in der Cloud

Wer?

“Chief Cloud Officer” bei Peritor

Ruby-Entwickler

Open-Source-Contributor (http://github.com/mattmatt)

2

Mittwoch, 25. November 2009

PERITOR ist erster Amazon Web Services Solution Provider in Europa

Page 3: Cloud Conf - Datenbanken in der Cloud

Peritor

3

Cloud-Management und -Deployment made easy

http://scalarium.com

Mittwoch, 25. November 2009

Page 4: Cloud Conf - Datenbanken in der Cloud

Cloud-Datenbanken?

4

Built for the Web

Skalierbar

Performant

Flexibles Datenschema

Mittwoch, 25. November 2009

WEB bedarf neuer Denkweisen über DatenSTORAGE muss Verteilung und Robustheit bietenVERFÜGBARKEIT ist King

Page 5: Cloud Conf - Datenbanken in der Cloud

Cloud-Datenbanken?

5

DynamoCouchDBDynomite

Tokyo Tyrant

MongoDB

Riak

Amazon SimpleDB

Redis Memcached

BigTableAmazon S3

Cassandra

Lotus Notes

Excel ;)Neo4j

Project Voldemort HBase

Mittwoch, 25. November 2009

Page 6: Cloud Conf - Datenbanken in der Cloud

Der Status-Quo

Relationale Datenstrukturen

SQL

Transaktionssicherheit

Locking

6

Mittwoch, 25. November 2009

Page 7: Cloud Conf - Datenbanken in der Cloud

Das Problem

7

Mittwoch, 25. November 2009

DATENSTRUKTUREN verändern sichSCHEMATA sind nicht fixDATENTYPEN sind nicht immer fixMIGRATIONSZEITEN steigen mit der Menge DatenKOMPLEXE Datenstrukturen lassen sich nur schwer abbilden

Page 8: Cloud Conf - Datenbanken in der Cloud

Das Problem

8

Mittwoch, 25. November 2009

TRANSAKTIONSSICHERHEIT oftmals unnötigLOCKING bremst Performance, erschwert ReplikationINDEX-UPDATES sind oftmals immediate und verzögern die TransaktionMEHR INDIZES bedeuten mehr Arbeit (Updates, Index-Auswahl bei Query)

http://www.flickr.com/photos/31667878@N03/4113087794

Page 9: Cloud Conf - Datenbanken in der Cloud

Die Lösung

9

”Simplicity is prerequisite for reliability“— Edsger W. Dijkstra

Mittwoch, 25. November 2009

SIMPLIZITÄT statt KomplexitätDATEN statt Struktur

Page 10: Cloud Conf - Datenbanken in der Cloud

Die Lösung

key => “value”

10

Mittwoch, 25. November 2009

KEY/VALUE für einfache Datenstrukturen

Page 11: Cloud Conf - Datenbanken in der Cloud

Dokumente

11

Mittwoch, 25. November 2009

DOKUMENTE statt fixe TabellenstrukturenDOKUMENTE enthalten alle relevanten Daten (self-contained)SCHEMAPFLEGE entfälltDATENMIGRATION nicht

Page 12: Cloud Conf - Datenbanken in der Cloud

Dokumente

11

Mittwoch, 25. November 2009

DOKUMENTE statt fixe TabellenstrukturenDOKUMENTE enthalten alle relevanten Daten (self-contained)SCHEMAPFLEGE entfälltDATENMIGRATION nicht

Page 13: Cloud Conf - Datenbanken in der Cloud

Dokumente

11

Mittwoch, 25. November 2009

DOKUMENTE statt fixe TabellenstrukturenDOKUMENTE enthalten alle relevanten Daten (self-contained)SCHEMAPFLEGE entfälltDATENMIGRATION nicht

Page 14: Cloud Conf - Datenbanken in der Cloud

Dokumente

11

Mittwoch, 25. November 2009

DOKUMENTE statt fixe TabellenstrukturenDOKUMENTE enthalten alle relevanten Daten (self-contained)SCHEMAPFLEGE entfälltDATENMIGRATION nicht

Page 15: Cloud Conf - Datenbanken in der Cloud

Integrität

12

Mittwoch, 25. November 2009

Atomicity, Consistency, Isolation, DurabilityACID ist King, oder auch nichtACID vs. PerformanceACID ist lokalEVENTUAL CONSISTENCY statt verteilter Transaktionen

http://www.flickr.com/photos/peapea/40955407/

Page 16: Cloud Conf - Datenbanken in der Cloud

Eventual Consistency

13

Mittwoch, 25. November 2009

UPDATES propagieren irgendwann über alle KnotenEXISTIERT bereits in RDBMS

Page 17: Cloud Conf - Datenbanken in der Cloud

Append-Only

14

Mittwoch, 25. November 2009

SPEICHERPLATZ ist billigUPDATE der Daten = NEUE RevisionKEIN Locking weil kein Update In-Place

Page 18: Cloud Conf - Datenbanken in der Cloud

Append-Only

15

Update

Mittwoch, 25. November 2009

Page 19: Cloud Conf - Datenbanken in der Cloud

Append-Only

16

Update

Mittwoch, 25. November 2009

Page 20: Cloud Conf - Datenbanken in der Cloud

Skalierbarkeit

17

Mittwoch, 25. November 2009

OPTIMIERT fuer hohe Concurrency (Read > Write)REPLIKATION als Feature nicht als Add-OnSKALIERBARKEIT durch Auto-Sharding und/oder Sharding/Hashing

http://www.flickr.com/photos/calliope/3573471166

Page 21: Cloud Conf - Datenbanken in der Cloud

Tools

18

Mittwoch, 25. November 2009

Page 22: Cloud Conf - Datenbanken in der Cloud

Tools

19

DynamoCouchDBDynomite

Tokyo Tyrant

MongoDB

Riak

Amazon SimpleDB

Redis Memcached

BigTableAmazon S3

Cassandra

Lotus Notes

Excel ;)Neo4j

Project Voldemort HBase

Mittwoch, 25. November 2009

Page 23: Cloud Conf - Datenbanken in der Cloud

Tools

20

DynamoCouchDBDynomite

Tokyo Tyrant

MongoDB

Riak

Amazon SimpleDB

Redis Memcached

BigTableAmazon S3

Cassandra

Lotus Notes

Excel ;)Neo4j

Project Voldemort HBase

Mittwoch, 25. November 2009

Page 24: Cloud Conf - Datenbanken in der Cloud

Redis

Simpler Key-Value-Store

Speichert Strings, Listen und Sets

Semi-Persistent

21

Mittwoch, 25. November 2009

SIMPEL weil einfach gehaltenATOMARE Operationen auf Strings, Listen und Sets möglichPERSISTENT über Snapshots und/oder Append-LogsDATENSET wird im Speicher gehalten

Page 25: Cloud Conf - Datenbanken in der Cloud

Redis

22

Mittwoch, 25. November 2009

SPEED ist KingOPERATIONEN in Redis sind auf Speed und Simplizität getrimmtSINGLE ProzessREPLIKATION über Master/Slave

Page 26: Cloud Conf - Datenbanken in der Cloud

Redis

set foo 4

1000

+OK

23

Mittwoch, 25. November 2009

DATENGRÖßE je Key auf 1GB beschränkt

Page 27: Cloud Conf - Datenbanken in der Cloud

Redis

set foo 4

1000

+OK

23

Request

Response

Mittwoch, 25. November 2009

DATENGRÖßE je Key auf 1GB beschränkt

Page 28: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

Database as a Service

Hoch-Skaliert

Always On

HTTP-API

24

Mittwoch, 25. November 2009

VERTEILTE DatenbankABRECHNUNG nach Computing Hours und Traffic

Page 29: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

25

Mittwoch, 25. November 2009

Page 30: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

26

Mittwoch, 25. November 2009

NEUE ATTRIBUTE erfordern keine Schema-ÄnderungBASIS aller Schemalosen DatenbankenSTRINGS ist der einzige Datentyp in SimpleDBNUMMERN sollten mit Paddings versehen werdenDATUM muss als String formatiert werden

Page 31: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

27

MembershipsItem #1

Name: Paul, Address: 234 Performance Rd.

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Mittwoch, 25. November 2009

DOMAINS sind der Spreadsheet

Page 32: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

27

MembershipsItem #1

Name: Paul, Address: 234 Performance Rd.

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Domain

Mittwoch, 25. November 2009

DOMAINS sind der Spreadsheet

Page 33: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

28

MembershipsItem #1

Name: Paul, Address: 234 Performance Rd.

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Mittwoch, 25. November 2009

ITEMS sind die Einträge

Page 34: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

28

MembershipsItem #1

Name: Paul, Address: 234 Performance Rd.

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Item

Mittwoch, 25. November 2009

ITEMS sind die Einträge

Page 35: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

29

Memberships

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Item #1Name: Paul, Address: 234 Performance Rd.

Mittwoch, 25. November 2009

ATTRIBUTE die EigenschaftenVALUES die Werte der EigenschaftenATTRIBUTE können mehrere Values haben

Page 36: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

29

Memberships

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Item #1Name: Paul, Address: 234 Performance Rd.

Attribute

Mittwoch, 25. November 2009

ATTRIBUTE die EigenschaftenVALUES die Werte der EigenschaftenATTRIBUTE können mehrere Values haben

Page 37: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

29

Memberships

Item #2Name: John, Address: 567 Couch St.

Item #3Name: Frank, Address: 321 Cloud Ave.

Item #4Name: Tom, Address: 123 Scale St.

Item #1Name: Paul, Address: 234 Performance Rd.

Attribute Value

Mittwoch, 25. November 2009

ATTRIBUTE die EigenschaftenVALUES die Werte der EigenschaftenATTRIBUTE können mehrere Values haben

Page 38: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

Wie komme ich an die Daten?

30

Mittwoch, 25. November 2009

Page 39: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

GetAttributes: ItemName=1

31

Mittwoch, 25. November 2009

Page 40: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

select * from memberships where Name = ‘Paul’

32

Mittwoch, 25. November 2009

SUPPORT für rudimentäre Queries

Page 41: Cloud Conf - Datenbanken in der Cloud

Amazon SimpleDB

33

Simplizität durch Restriktionen

Mittwoch, 25. November 2009

SIMPLIZITÄT durch Restriktionen10GB pro Domain10 Mio. Attribute pro Domain1024 Bytes pro Attribute/Value256 Attribute-Value-Pairs pro ItemVENDOR Lock-In (Daten einfach rein, aber schwerer wieder raus)

Page 42: Cloud Conf - Datenbanken in der Cloud

Skalierung mit Eventual Consistency

34

Amazon SimpleDB

Mittwoch, 25. November 2009

DATENÄNDERUNGEN propagieren nicht sofortMEHRERE Sekunden kann es dauernGUT GEEIGNET für read-later Daten

Page 43: Cloud Conf - Datenbanken in der Cloud

35

CouchDBrelax

Mittwoch, 25. November 2009

Page 44: Cloud Conf - Datenbanken in der Cloud

CouchDB

Dokument-orientiert

36

Mittwoch, 25. November 2009

ERLANG als BasisHOHE CONCURRENCY als Philosophie

Page 45: Cloud Conf - Datenbanken in der Cloud

37

”CouchDB is built of the Web“— Jacob Kaplan-Moss

Mittwoch, 25. November 2009

RESTful HTTP-APIVIELE ELEMENTE von HTTP werden verwendetJSON und UTF-8 für Storage und Transfer

Page 46: Cloud Conf - Datenbanken in der Cloud

CouchDB

38

{    "_id":  "BCCD12CBB",    "_rev":  "1-­‐AB764C",    "type":  "person",    "name":  "Darth  Vader",    "age":  63,    "headware":  ["Helmet",  "Sombrero"],    "dark_side":  true}

Mittwoch, 25. November 2009

DOKUMENTE in JSONATTRIBUTE mit _ sind reserviert_ID ist der Identifier eines Dokumentes_REV die Revisionsnummer

Page 47: Cloud Conf - Datenbanken in der Cloud

CouchDB

39

{    "_id":  "BCCD12CBB",    "_rev":  "1-­‐AB764C",    "type":  "person",    "name":  "Darth  Vader",    "age":  63,    "headware":  ["Helmet",  "Sombrero"],    "dark_side":  true}

Mittwoch, 25. November 2009

DOKUMENTE in JSONATTRIBUTE mit _ sind reserviert_ID ist der Identifier eines Dokumentes_REV die Revisionsnummer

Page 48: Cloud Conf - Datenbanken in der Cloud

CouchDB

40

{    "_id":  "BCCD12CBB",    "_rev":  "1-­‐AB764C",    "type":  "person",    "name":  "Darth  Vader",    "age":  63,    "headware":  ["Helmet",  "Sombrero"],    "dark_side":  true}

Mittwoch, 25. November 2009

DOKUMENTE in JSONATTRIBUTE mit _ sind reserviert_ID ist der Identifier eines Dokumentes_REV die Revisionsnummer

Page 49: Cloud Conf - Datenbanken in der Cloud

CouchDB - CRUD

Erstellen/Aktualisieren:

PUT /starwars/BCCD12CBB

Lesen:

GET /starwars/BCCD12CBB

Löschen:

DELETE /starwars/BCCD12CBB

41

Mittwoch, 25. November 2009

Page 50: Cloud Conf - Datenbanken in der Cloud

CouchDB

Wie komme ich an meine Daten?

42

Mittwoch, 25. November 2009

Page 51: Cloud Conf - Datenbanken in der Cloud

CouchDB

43

Views!

Mittwoch, 25. November 2009

MAP/REDUCE über Views in JavaScript oder auch ErlangB-TREE Indizes für schnellen LookupVIEWS werden erst beim Lesen erstellt bzw. aktualisiert

Page 52: Cloud Conf - Datenbanken in der Cloud

CouchDB

44

function(doc)  {    if  (doc.headware)  {        for  (var  hat  in  doc.headware)  {            emit(hat,  1);        }    }}

Mittwoch, 25. November 2009

MAP Funktion kann beliebige Attribute mit beliebig vielen Werten indizieren

Page 53: Cloud Conf - Datenbanken in der Cloud

CouchDB

45

function(keys,  values,  rereduce)  {    return  sum(values);}

Mittwoch, 25. November 2009

REDUCE Funktion aggregiert Ergebnisse aus MAP

Page 54: Cloud Conf - Datenbanken in der Cloud

CouchDB

46

Mittwoch, 25. November 2009

B-TREES speichern Referenzen für Views und Key-LookupsTREE-Storage ist Append-OnlyNIEMALS Update In-Place

Page 55: Cloud Conf - Datenbanken in der Cloud

CouchDB

47

Mittwoch, 25. November 2009

STORAGE ist Crash-ProofKONSISTENZ der Datenbank ist durch Append-Only garantiert

Page 56: Cloud Conf - Datenbanken in der Cloud

CouchDB

48

Mittwoch, 25. November 2009

OFFLINE by Default

Page 57: Cloud Conf - Datenbanken in der Cloud

CouchDB

49

Mittwoch, 25. November 2009

REPLIKATION ist ein zentrales Feature, kein Add-OnJEDER kann zu jeder Zeit zu jedem replizieren

Page 58: Cloud Conf - Datenbanken in der Cloud

CouchDB

POST /_replication

50

Mittwoch, 25. November 2009

REPLIKATION ist nichts weiter als ein POST-RequestKONTINUIERLICHE Replikation ist seit Release 0.10.0 möglich

Page 59: Cloud Conf - Datenbanken in der Cloud

Und?

Daten sind wieder König

51

Mittwoch, 25. November 2009

CONSTRAINTS werden gebrochenWEB benoetigt mehr Flexibilität als RDBMS

Page 60: Cloud Conf - Datenbanken in der Cloud

Aber!

Kein goldener Hammer

52

Mittwoch, 25. November 2009

RICHTIGES Tool für den richtigen Zweck

Page 61: Cloud Conf - Datenbanken in der Cloud

53

Mittwoch, 25. November 2009

TOOLS kann man ignorieren

Page 62: Cloud Conf - Datenbanken in der Cloud

54

Mittwoch, 25. November 2009

ODER AKZEPTIEREN dass kein Tool für alle Zwecke passtZUKUNFT gehört spezialisierten Tools

Page 63: Cloud Conf - Datenbanken in der Cloud

© Peritor GmbH - Alle Reche Vorbehalten

Peritor GmbHBlücherstr. 22, Hof III Aufgang 610961 Berlin

Tel.: +49 (0)30 69 20 09 84 0Fax: +49 (0)30 69 20 09 84 9

Internet: www.peritor.comE-Mail: [email protected]

Mittwoch, 25. November 2009