Datenbanken in der Cloud
                Data-Storage jenseits von SQL




                Mathias Meyer, 25.11.2009
     ...
Wer?


    “Chief Cloud Officer” bei Peritor
    Ruby-Entwickler
    Open-Source-Contributor (http://github.com/mattmatt)

...
Peritor




              Cloud-Management und -Deployment made easy
                              http://scalarium.com


...
Cloud-Datenbanken?


    Built for the Web
    Skalierbar
    Performant
    Flexibles Datenschema




                   ...
Cloud-Datenbanken?

                                  Riak        BigTable
                    Lotus Notes                ...
Der Status-Quo


    Relationale Datenstrukturen
    SQL
    Transaktionssicherheit
    Locking




                      ...
Das Problem




                                                           7

Mittwoch, 25. November 2009

DATENSTRUKTUREN...
Das Problem




                                                                       8

Mittwoch, 25. November 2009

TRA...
Die Lösung




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



...
Die Lösung




                              key => “value”



                                               10

Mittwoch...
Dokumente




                                                             11

Mittwoch, 25. November 2009

DOKUMENTE stat...
Dokumente




                                                             11

Mittwoch, 25. November 2009

DOKUMENTE stat...
Dokumente




                                                             11

Mittwoch, 25. November 2009

DOKUMENTE stat...
Dokumente




                                                             11

Mittwoch, 25. November 2009

DOKUMENTE stat...
Integrität




                                                      12

Mittwoch, 25. November 2009

Atomicity, Consisten...
Eventual Consistency




                                                  13

Mittwoch, 25. November 2009

UPDATES propag...
Append-Only




                                         14

Mittwoch, 25. November 2009

SPEICHERPLATZ ist billig
UPDATE ...
Append-Only




                              Update




                                       15

Mittwoch, 25. November...
Append-Only




                              Update




                                       16

Mittwoch, 25. November...
Skalierbarkeit




                                                               17

Mittwoch, 25. November 2009

OPTIMIE...
Tools




                              18

Mittwoch, 25. November 2009
Tools

                                  Riak        BigTable
                    Lotus Notes                 Amazon S3
  ...
Tools

                                  Riak        BigTable
                    Lotus Notes                 Amazon S3
  ...
Redis



    Simpler Key-Value-Store
    Speichert Strings, Listen und Sets
    Semi-Persistent




                      ...
Redis




                                                               22

Mittwoch, 25. November 2009

SPEED ist King
O...
Redis

       set foo 4
       1000
       +OK




                                       23

Mittwoch, 25. November 2009
...
Redis

       set foo 4
                                       Request
       1000
       +OK                             ...
Amazon SimpleDB



    Database as a Service
    Hoch-Skaliert
    Always On
    HTTP-API




                            ...
Amazon SimpleDB




                              25

Mittwoch, 25. November 2009
Amazon SimpleDB




                                                 26

Mittwoch, 25. November 2009

NEUE ATTRIBUTE erfor...
Amazon SimpleDB


                                          Memberships
                                              Item...
Amazon SimpleDB
                                                 Domain

                                          Members...
Amazon SimpleDB


                                          Memberships
                                              Item...
Amazon SimpleDB
                              Item
                                             Memberships
              ...
Amazon SimpleDB


                                          Memberships
                                              Item...
Amazon SimpleDB
                                 Attribute
                                          Memberships
         ...
Amazon SimpleDB
                                 Attribute                            Value
                              ...
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’




                                                ...
Amazon SimpleDB




                                     Simplizität durch Restriktionen




                             ...
Amazon SimpleDB




    Skalierung mit Eventual Consistency




                                           34

Mittwoch, 2...
CouchDB
                                   relax
                                           35

Mittwoch, 25. November 2009
CouchDB




    Dokument-orientiert




                                   36

Mittwoch, 25. November 2009

ERLANG als Bas...
”CouchDB is built of the Web“
                              — Jacob Kaplan-Moss




                                      ...
CouchDB


             {
                 "_id":  "BCCD12CBB",
                 "_rev":  "1-­‐AB764C",
                 "t...
CouchDB


             {
                 "_id":  "BCCD12CBB",
                 "_rev":  "1-­‐AB764C",
                 "t...
CouchDB


             {
                 "_id":  "BCCD12CBB",
                 "_rev":  "1-­‐AB764C",
                 "t...
CouchDB - CRUD
    Erstellen/Aktualisieren:
    PUT /starwars/BCCD12CBB


    Lesen:
    GET /starwars/BCCD12CBB


    Lös...
CouchDB




    Wie komme ich an meine Daten?




                                    42

Mittwoch, 25. November 2009
CouchDB




                              Views!


                                                          43

Mittwoch,...
CouchDB


          function(doc)  {
              if  (doc.headware)  {
                  for  (var  hat  in  doc.headwar...
CouchDB



                  function(keys,  values,  rereduce)  {
                      return  sum(values);
            ...
CouchDB




                                                         46

Mittwoch, 25. November 2009

B-TREES speichern Re...
CouchDB




                                                            47

Mittwoch, 25. November 2009

STORAGE ist Crash...
CouchDB




                              48

Mittwoch, 25. November 2009

OFFLINE by Default
CouchDB




                                                     49

Mittwoch, 25. November 2009

REPLIKATION ist ein zent...
CouchDB




    POST /_replication




                                                              50

Mittwoch, 25. Nov...
Und?




    Daten sind wieder König




                                            51

Mittwoch, 25. November 2009

CONS...
Aber!




    Kein goldener Hammer




                                         52

Mittwoch, 25. November 2009

RICHTIGES...
53

Mittwoch, 25. November 2009

TOOLS kann man ignorieren
54

Mittwoch, 25. November 2009

ODER AKZEPTIEREN dass kein Tool für alle Zwecke passt
ZUKUNFT gehört spezialisierten Tools
Peritor GmbH
                Blücherstr. 22, Hof III Aufgang 6
                10961 Berlin
                Tel.: +49 (0)3...
Upcoming SlideShare
Loading in …5
×

Cloud Conf - Datenbanken in der Cloud

2,278 views

Published on

Data-Storage jenseits von SQL.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,278
On SlideShare
0
From Embeds
0
Number of Embeds
175
Actions
Shares
0
Downloads
29
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Cloud Conf - Datenbanken in der Cloud

  1. 1. Datenbanken in der Cloud Data-Storage jenseits von SQL Mathias Meyer, 25.11.2009 Peritor GmbH Mittwoch, 25. November 2009 NEUE GENERATION von post-relationalen Datenbanken
  2. 2. 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
  3. 3. Peritor Cloud-Management und -Deployment made easy http://scalarium.com 3 Mittwoch, 25. November 2009
  4. 4. Cloud-Datenbanken? Built for the Web Skalierbar Performant Flexibles Datenschema 4 Mittwoch, 25. November 2009 WEB bedarf neuer Denkweisen über Daten STORAGE muss Verteilung und Robustheit bieten VERFÜGBARKEIT ist King
  5. 5. Cloud-Datenbanken? Riak BigTable Lotus Notes Amazon S3 Memcached Redis Cassandra MongoDB Dynamo Dynomite CouchDB Amazon SimpleDB Excel ;) Tokyo Tyrant Neo4j Project Voldemort HBase 5 Mittwoch, 25. November 2009
  6. 6. Der Status-Quo Relationale Datenstrukturen SQL Transaktionssicherheit Locking 6 Mittwoch, 25. November 2009
  7. 7. Das Problem 7 Mittwoch, 25. November 2009 DATENSTRUKTUREN verändern sich SCHEMATA sind nicht fix DATENTYPEN sind nicht immer fix MIGRATIONSZEITEN steigen mit der Menge Daten KOMPLEXE Datenstrukturen lassen sich nur schwer abbilden
  8. 8. Das Problem 8 Mittwoch, 25. November 2009 TRANSAKTIONSSICHERHEIT oftmals unnötig LOCKING bremst Performance, erschwert Replikation INDEX-UPDATES sind oftmals immediate und verzögern die Transaktion MEHR INDIZES bedeuten mehr Arbeit (Updates, Index-Auswahl bei Query) http://www.flickr.com/photos/31667878@N03/4113087794
  9. 9. Die Lösung ”Simplicity is prerequisite for reliability“ — Edsger W. Dijkstra 9 Mittwoch, 25. November 2009 SIMPLIZITÄT statt Komplexität DATEN statt Struktur
  10. 10. Die Lösung key => “value” 10 Mittwoch, 25. November 2009 KEY/VALUE für einfache Datenstrukturen
  11. 11. Dokumente 11 Mittwoch, 25. November 2009 DOKUMENTE statt fixe Tabellenstrukturen DOKUMENTE enthalten alle relevanten Daten (self-contained) SCHEMAPFLEGE entfällt DATENMIGRATION nicht
  12. 12. Dokumente 11 Mittwoch, 25. November 2009 DOKUMENTE statt fixe Tabellenstrukturen DOKUMENTE enthalten alle relevanten Daten (self-contained) SCHEMAPFLEGE entfällt DATENMIGRATION nicht
  13. 13. Dokumente 11 Mittwoch, 25. November 2009 DOKUMENTE statt fixe Tabellenstrukturen DOKUMENTE enthalten alle relevanten Daten (self-contained) SCHEMAPFLEGE entfällt DATENMIGRATION nicht
  14. 14. Dokumente 11 Mittwoch, 25. November 2009 DOKUMENTE statt fixe Tabellenstrukturen DOKUMENTE enthalten alle relevanten Daten (self-contained) SCHEMAPFLEGE entfällt DATENMIGRATION nicht
  15. 15. Integrität 12 Mittwoch, 25. November 2009 Atomicity, Consistency, Isolation, Durability ACID ist King, oder auch nicht ACID vs. Performance ACID ist lokal EVENTUAL CONSISTENCY statt verteilter Transaktionen http://www.flickr.com/photos/peapea/40955407/
  16. 16. Eventual Consistency 13 Mittwoch, 25. November 2009 UPDATES propagieren irgendwann über alle Knoten EXISTIERT bereits in RDBMS
  17. 17. Append-Only 14 Mittwoch, 25. November 2009 SPEICHERPLATZ ist billig UPDATE der Daten = NEUE Revision KEIN Locking weil kein Update In-Place
  18. 18. Append-Only Update 15 Mittwoch, 25. November 2009
  19. 19. Append-Only Update 16 Mittwoch, 25. November 2009
  20. 20. Skalierbarkeit 17 Mittwoch, 25. November 2009 OPTIMIERT fuer hohe Concurrency (Read > Write) REPLIKATION als Feature nicht als Add-On SKALIERBARKEIT durch Auto-Sharding und/oder Sharding/Hashing http://www.flickr.com/photos/calliope/3573471166
  21. 21. Tools 18 Mittwoch, 25. November 2009
  22. 22. Tools Riak BigTable Lotus Notes Amazon S3 Memcached Redis Cassandra MongoDB Dynamo Dynomite CouchDB Amazon SimpleDB Excel ;) Tokyo Tyrant Neo4j Project Voldemort HBase 19 Mittwoch, 25. November 2009
  23. 23. Tools Riak BigTable Lotus Notes Amazon S3 Memcached Redis Cassandra MongoDB Dynamo Dynomite CouchDB Amazon SimpleDB Excel ;) Tokyo Tyrant Neo4j Project Voldemort HBase 20 Mittwoch, 25. November 2009
  24. 24. Redis Simpler Key-Value-Store Speichert Strings, Listen und Sets Semi-Persistent 21 Mittwoch, 25. November 2009 SIMPEL weil einfach gehalten ATOMARE Operationen auf Strings, Listen und Sets möglich PERSISTENT über Snapshots und/oder Append-Logs DATENSET wird im Speicher gehalten
  25. 25. Redis 22 Mittwoch, 25. November 2009 SPEED ist King OPERATIONEN in Redis sind auf Speed und Simplizität getrimmt SINGLE Prozess REPLIKATION über Master/Slave
  26. 26. Redis set foo 4 1000 +OK 23 Mittwoch, 25. November 2009 DATENGRÖßE je Key auf 1GB beschränkt
  27. 27. Redis set foo 4 Request 1000 +OK Response 23 Mittwoch, 25. November 2009 DATENGRÖßE je Key auf 1GB beschränkt
  28. 28. Amazon SimpleDB Database as a Service Hoch-Skaliert Always On HTTP-API 24 Mittwoch, 25. November 2009 VERTEILTE Datenbank ABRECHNUNG nach Computing Hours und Traffic
  29. 29. Amazon SimpleDB 25 Mittwoch, 25. November 2009
  30. 30. Amazon SimpleDB 26 Mittwoch, 25. November 2009 NEUE ATTRIBUTE erfordern keine Schema-Änderung BASIS aller Schemalosen Datenbanken STRINGS ist der einzige Datentyp in SimpleDB NUMMERN sollten mit Paddings versehen werden DATUM muss als String formatiert werden
  31. 31. Amazon SimpleDB Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 27 Mittwoch, 25. November 2009 DOMAINS sind der Spreadsheet
  32. 32. Amazon SimpleDB Domain Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 27 Mittwoch, 25. November 2009 DOMAINS sind der Spreadsheet
  33. 33. Amazon SimpleDB Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 28 Mittwoch, 25. November 2009 ITEMS sind die Einträge
  34. 34. Amazon SimpleDB Item Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 28 Mittwoch, 25. November 2009 ITEMS sind die Einträge
  35. 35. Amazon SimpleDB Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 29 Mittwoch, 25. November 2009 ATTRIBUTE die Eigenschaften VALUES die Werte der Eigenschaften ATTRIBUTE können mehrere Values haben
  36. 36. Amazon SimpleDB Attribute Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 29 Mittwoch, 25. November 2009 ATTRIBUTE die Eigenschaften VALUES die Werte der Eigenschaften ATTRIBUTE können mehrere Values haben
  37. 37. Amazon SimpleDB Attribute Value Memberships Item #1 Name: Paul, Address: 234 Performance Rd. Item #2 Name: John, Address: 567 Couch St. Item #3 Name: Frank, Address: 321 Cloud Ave. Item #4 Name: Tom, Address: 123 Scale St. 29 Mittwoch, 25. November 2009 ATTRIBUTE die Eigenschaften VALUES die Werte der Eigenschaften ATTRIBUTE können mehrere Values haben
  38. 38. Amazon SimpleDB Wie komme ich an die Daten? 30 Mittwoch, 25. November 2009
  39. 39. Amazon SimpleDB GetAttributes: ItemName=1 31 Mittwoch, 25. November 2009
  40. 40. Amazon SimpleDB select * from memberships where Name = ‘Paul’ 32 Mittwoch, 25. November 2009 SUPPORT für rudimentäre Queries
  41. 41. Amazon SimpleDB Simplizität durch Restriktionen 33 Mittwoch, 25. November 2009 SIMPLIZITÄT durch Restriktionen 10GB pro Domain 10 Mio. Attribute pro Domain 1024 Bytes pro Attribute/Value 256 Attribute-Value-Pairs pro Item VENDOR Lock-In (Daten einfach rein, aber schwerer wieder raus)
  42. 42. Amazon SimpleDB Skalierung mit Eventual Consistency 34 Mittwoch, 25. November 2009 DATENÄNDERUNGEN propagieren nicht sofort MEHRERE Sekunden kann es dauern GUT GEEIGNET für read-later Daten
  43. 43. CouchDB relax 35 Mittwoch, 25. November 2009
  44. 44. CouchDB Dokument-orientiert 36 Mittwoch, 25. November 2009 ERLANG als Basis HOHE CONCURRENCY als Philosophie
  45. 45. ”CouchDB is built of the Web“ — Jacob Kaplan-Moss 37 Mittwoch, 25. November 2009 RESTful HTTP-API VIELE ELEMENTE von HTTP werden verwendet JSON und UTF-8 für Storage und Transfer
  46. 46. CouchDB {    "_id":  "BCCD12CBB",    "_rev":  "1-­‐AB764C",    "type":  "person",    "name":  "Darth  Vader",    "age":  63,    "headware":  ["Helmet",  "Sombrero"],    "dark_side":  true } 38 Mittwoch, 25. November 2009 DOKUMENTE in JSON ATTRIBUTE mit _ sind reserviert _ID ist der Identifier eines Dokumentes _REV die Revisionsnummer
  47. 47. CouchDB {    "_id":  "BCCD12CBB",    "_rev":  "1-­‐AB764C",    "type":  "person",    "name":  "Darth  Vader",    "age":  63,    "headware":  ["Helmet",  "Sombrero"],    "dark_side":  true } 39 Mittwoch, 25. November 2009 DOKUMENTE in JSON ATTRIBUTE mit _ sind reserviert _ID ist der Identifier eines Dokumentes _REV die Revisionsnummer
  48. 48. CouchDB {    "_id":  "BCCD12CBB",    "_rev":  "1-­‐AB764C",    "type":  "person",    "name":  "Darth  Vader",    "age":  63,    "headware":  ["Helmet",  "Sombrero"],    "dark_side":  true } 40 Mittwoch, 25. November 2009 DOKUMENTE in JSON ATTRIBUTE mit _ sind reserviert _ID ist der Identifier eines Dokumentes _REV die Revisionsnummer
  49. 49. CouchDB - CRUD Erstellen/Aktualisieren: PUT /starwars/BCCD12CBB Lesen: GET /starwars/BCCD12CBB Löschen: DELETE /starwars/BCCD12CBB 41 Mittwoch, 25. November 2009
  50. 50. CouchDB Wie komme ich an meine Daten? 42 Mittwoch, 25. November 2009
  51. 51. CouchDB Views! 43 Mittwoch, 25. November 2009 MAP/REDUCE über Views in JavaScript oder auch Erlang B-TREE Indizes für schnellen Lookup VIEWS werden erst beim Lesen erstellt bzw. aktualisiert
  52. 52. CouchDB function(doc)  {    if  (doc.headware)  {        for  (var  hat  in  doc.headware)  {            emit(hat,  1);        }    } } 44 Mittwoch, 25. November 2009 MAP Funktion kann beliebige Attribute mit beliebig vielen Werten indizieren
  53. 53. CouchDB function(keys,  values,  rereduce)  {    return  sum(values); } 45 Mittwoch, 25. November 2009 REDUCE Funktion aggregiert Ergebnisse aus MAP
  54. 54. CouchDB 46 Mittwoch, 25. November 2009 B-TREES speichern Referenzen für Views und Key-Lookups TREE-Storage ist Append-Only NIEMALS Update In-Place
  55. 55. CouchDB 47 Mittwoch, 25. November 2009 STORAGE ist Crash-Proof KONSISTENZ der Datenbank ist durch Append-Only garantiert
  56. 56. CouchDB 48 Mittwoch, 25. November 2009 OFFLINE by Default
  57. 57. CouchDB 49 Mittwoch, 25. November 2009 REPLIKATION ist ein zentrales Feature, kein Add-On JEDER kann zu jeder Zeit zu jedem replizieren
  58. 58. CouchDB POST /_replication 50 Mittwoch, 25. November 2009 REPLIKATION ist nichts weiter als ein POST-Request KONTINUIERLICHE Replikation ist seit Release 0.10.0 möglich
  59. 59. Und? Daten sind wieder König 51 Mittwoch, 25. November 2009 CONSTRAINTS werden gebrochen WEB benoetigt mehr Flexibilität als RDBMS
  60. 60. Aber! Kein goldener Hammer 52 Mittwoch, 25. November 2009 RICHTIGES Tool für den richtigen Zweck
  61. 61. 53 Mittwoch, 25. November 2009 TOOLS kann man ignorieren
  62. 62. 54 Mittwoch, 25. November 2009 ODER AKZEPTIEREN dass kein Tool für alle Zwecke passt ZUKUNFT gehört spezialisierten Tools
  63. 63. Peritor GmbH Blücherstr. 22, Hof III Aufgang 6 10961 Berlin Tel.: +49 (0)30 69 20 09 84 0 Fax: +49 (0)30 69 20 09 84 9 Internet: www.peritor.com E-Mail: info@peritor.com © Peritor GmbH - Alle Reche Vorbehalten Mittwoch, 25. November 2009

×