Cloud Conf - Datenbanken in der Cloud

Post on 12-May-2015

1,968 views 1 download

Tags:

description

Data-Storage jenseits von SQL.

transcript

Mathias Meyer, 25.11.2009Peritor GmbH

Datenbanken in der CloudData-Storage jenseits von SQL

Mittwoch, 25. November 2009

NEUE GENERATION von post-relationalen Datenbanken

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

Peritor

3

Cloud-Management und -Deployment made easy

http://scalarium.com

Mittwoch, 25. November 2009

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

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

Der Status-Quo

Relationale Datenstrukturen

SQL

Transaktionssicherheit

Locking

6

Mittwoch, 25. November 2009

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

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

Die Lösung

9

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

Mittwoch, 25. November 2009

SIMPLIZITÄT statt KomplexitätDATEN statt Struktur

Die Lösung

key => “value”

10

Mittwoch, 25. November 2009

KEY/VALUE für einfache Datenstrukturen

Dokumente

11

Mittwoch, 25. November 2009

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

Dokumente

11

Mittwoch, 25. November 2009

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

Dokumente

11

Mittwoch, 25. November 2009

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

Dokumente

11

Mittwoch, 25. November 2009

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

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/

Eventual Consistency

13

Mittwoch, 25. November 2009

UPDATES propagieren irgendwann über alle KnotenEXISTIERT bereits in RDBMS

Append-Only

14

Mittwoch, 25. November 2009

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

Append-Only

15

Update

Mittwoch, 25. November 2009

Append-Only

16

Update

Mittwoch, 25. November 2009

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

Tools

18

Mittwoch, 25. November 2009

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

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

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

Redis

22

Mittwoch, 25. November 2009

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

Redis

set foo 4

1000

+OK

23

Mittwoch, 25. November 2009

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

Redis

set foo 4

1000

+OK

23

Request

Response

Mittwoch, 25. November 2009

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

Amazon SimpleDB

Database as a Service

Hoch-Skaliert

Always On

HTTP-API

24

Mittwoch, 25. November 2009

VERTEILTE DatenbankABRECHNUNG nach Computing Hours und Traffic

Amazon SimpleDB

25

Mittwoch, 25. November 2009

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

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

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

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

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

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

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

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

Amazon SimpleDB

Wie komme ich an die Daten?

30

Mittwoch, 25. November 2009

Amazon SimpleDB

GetAttributes: ItemName=1

31

Mittwoch, 25. November 2009

Amazon SimpleDB

select * from memberships where Name = ‘Paul’

32

Mittwoch, 25. November 2009

SUPPORT für rudimentäre Queries

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)

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

35

CouchDBrelax

Mittwoch, 25. November 2009

CouchDB

Dokument-orientiert

36

Mittwoch, 25. November 2009

ERLANG als BasisHOHE CONCURRENCY als Philosophie

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

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

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

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

CouchDB - CRUD

Erstellen/Aktualisieren:

PUT /starwars/BCCD12CBB

Lesen:

GET /starwars/BCCD12CBB

Löschen:

DELETE /starwars/BCCD12CBB

41

Mittwoch, 25. November 2009

CouchDB

Wie komme ich an meine Daten?

42

Mittwoch, 25. November 2009

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

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

CouchDB

45

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

Mittwoch, 25. November 2009

REDUCE Funktion aggregiert Ergebnisse aus MAP

CouchDB

46

Mittwoch, 25. November 2009

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

CouchDB

47

Mittwoch, 25. November 2009

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

CouchDB

48

Mittwoch, 25. November 2009

OFFLINE by Default

CouchDB

49

Mittwoch, 25. November 2009

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

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

Und?

Daten sind wieder König

51

Mittwoch, 25. November 2009

CONSTRAINTS werden gebrochenWEB benoetigt mehr Flexibilität als RDBMS

Aber!

Kein goldener Hammer

52

Mittwoch, 25. November 2009

RICHTIGES Tool für den richtigen Zweck

53

Mittwoch, 25. November 2009

TOOLS kann man ignorieren

54

Mittwoch, 25. November 2009

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

© 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: info@peritor.com

Mittwoch, 25. November 2009