Amazon SimpleDB
Chancen einer Cloud-Datenbank




Louis Brauer
ONE-Konferenz, 10. Mai 2012




                                1
Agenda
1. Datenbank-Umfeld
2. Was ist Amazon SimpleDB?
3. Features
4. Deep Dive
5. Einschränkungen und Grenzen
6. Use Cases
7. Kosten
8. Getting started



                                 2
Amazon SimpleDB
‣   Einfach
‣   Skalierbar
‣   Günstig
‣   Migrationspfad für SQL-Fans


„Simplicity is the ultimate sophistication.“
(Leonardo da Vinci)




                                               3
SimpleDB im Kontext




                      4
SQL                            NoSQL
   DBs                            DBs




  MySQL                         MongoDB
             AWS SimpleDB
PostgreSQL                      CouchDB
             Google BigTable
                                Cassandra

SQL Server
  Oracle




                                            5
Relationale   Key/Value
                                 Object DB
     DB          Store
MySQL          AWS SimpleDB           CouchDB
PostgreSQL     Google BigTable        MongoDB
SQLite
                                 AWS DynamoDB
SQL Server                            Cassandra
Oracle




                   Neo4j

                  Graph

                                                  6
‣   Eigene Infrastruktur       ‣    Virtualisierte               ‣    Keine Infrastruktur
                                    Infrastruktur
‣   Datenhoheit                                                  ‣    Datenhoheit (?)
                               ‣    Datenhoheit                       SLA!
‣   Volle Kontrolle



    Local/                          Cloud                               Cloud
    Hosted                          Hosted                               DB
     DB                              DB
‣   Hohe Investitionen     ‣       Niedrige Startup-Kosten   ‣       Keine Startup-Kosten

‣   Hohe Betriebskosten    ‣       Höhere Betriebskosten     ‣       Rein Nutzungsbasierte
                                                                     Kosten
‣   Schlecht skalierbar    ‣       Schneller Skalierbar
                                                             ‣       Automatische Skalierung
‣   Wartungsaufwändig      ‣       Weniger Wartung
                                                             ‣       Keine Wartung
                                                                                               7
Was ist Amazon SimpleDB?




                           8
Relationale
                            SimpleDB                    Object DB
     DB
  Einfache Datentypen           Nur Strings            Komplexe Datentypen

     Fixes Schema              Schema-frei               Schlüssel-Schema

         JOINs               Keine Relationen            Keine Relationen

     Aggregationen         Keine Aggregationen      Aggregation via Map/Reduce

   Extrem ausgereift      Sehr solide und simpel       Grössere Komplexität

      SQL-Syntax           API & SQL-Like-Syntax            Nur via API

OO-Entwicklung via ORM    Nutzung via HTTP o. SDK        Nutzung via SDK

Umfangreiches Ökosystem        Wenig Tools                 Wenig Tools



                                                                                 9
Klassisches relationales Datenmodell




                                       10
Konzept
‣   Domains
    •   Daten-Container ähnlich einer Tabelle
        aber ohne fixes Schema

‣   Items
    •   Ein Datensatz mit ein- oder mehreren Key/Value-Paaren

‣   Attributes
    •   „Spalten“

‣   Values
    •   „Zellen“




                                                                11
12
13
14
Features




           15
IT-Systemlandschaft Internet-Applikation



                    Firewall
                 Load Balancer


    Web-Server    Web-Server     Web-Server

    App-Server    App-Server     App-Server

    DB-Replika    DB-Replika     DB-Replika



                  DB-Master


                                              16
17
18
Firewall
             Load Balancer


Web-Server    Web-Server     Web-Server

App-Server    App-Server     App-Server

DB-Replika    DB-Replika     DB-Replika



              DB-Master


                                          19
SimpleDB




                Firewall
             Load Balancer


Web-Server    Web-Server     Web-Server

App-Server    App-Server     App-Server

DB-Replika    DB-Replika     DB-Replika



              DB-Master


                                                     20
Betrieb
‣   Keine eigene Infrastuktur
    •   Keine Hardware, keine Software
    •   Keine Installation

‣   Hochverfügbar
    •   Geo-redundante Replikation
    •   Automatisches Failover
    •   Unlimitierte* Ressourcen

‣   Administrationsfrei
    •   Keine Konfiguration
    •   Automatische Leistungsoptimierung

‣   Sicher
    •   Verschlüsselte Kommunikation via HTTPS
    •   Ausgereiftes Rechtssystem

                                                 21
Entwicklung
‣   Speichern & Abfragen via HTTPS-Requests
    •   Selbst via HTTPS (REST, SOAP) ansprechen
    •   SDKs für alle gängigen Entwicklungsumgebungen

‣   Flexibel
    •   Kein fixes Schema
    •   Konsistente oder Nicht-konsistente Abfragen (schneller)

‣   Full Auto-Index
    •   Jedes Attribut wird vollständig indexiert




                                                                  22
Entwicklung
‣   Mehrere „Endpunkte“ verfügbar
    •   Dublin
    •   USA Ost- und 2xWestküste
    •   Tokio
    •   Sao Paulo




                                    23
Performance
‣   Ausführungsdauer der Abfrage
    •   Üblicherweise weit unter 20ms

‣   Netzwerk-Latenz
    •   „Durchschnittliche“ WLAN-Verbindung: 60-80ms
    •   Kann durch EC2 Server auf bis zu 2ms reduziert werden
    •   Sonst Daten Applikations-seitig cachen, wenn Performance-kritisch ist

‣   Mehr Performance durch Parallelisierung

‣   Fazit
    •   Mindest-Latenz etwas höher, dafür gleichbleibend auch bei ultimativen
        Lastspitzen




                                                                                24
Deep Dive




            25
Simple API - 8 Methoden
‣   Domains
    •   ListDomains
    •   CreateDomain
    •   DeleteDomain
    •   DomainMetadata

‣   Items
    •   GetAttributes
    •   Put / BatchPut
    •   Delete

‣   Abfragen
    •   Select




                              26
SQL-Syntax
‣   select output_list
    from domain
    where expression
    order by sort_instruction
    limit 100


‣   sdb.select(„select * from bestellungen“);




                                                27
SQL-Syntax
‣   select count(*) from domain
‣   select * from domain
‣   select itemName() from domain
‣   select name,city,article from domain




                                           28
select * from domain

‣   where article [=,!=,<,<=,=>,>] `a-1000`
‣   where article [not] like `a-%`
‣   where article between ´a-1000´ and ´a-9999´
‣   where article in (´a-1000´, ´b-2000´)
‣   where article is [not] null
‣   where every(article) like ´a-%´




                                                  29
Numerische Datentypen
‣   Datum/Zeit (z.B. 10.5.2012, 10.00 Uhr)
    •   2012-05-10T10:00:00.00+01:00

‣   Zahlen
    •   10	
          	   => 100010
    •   2		   => 100002
    •   -99	 => 000099

‣   Hilfsfunktionen
    •   encodeRealNumberRange(value, maxDigits, offset);
    •   encodeDate(Date);




                                                           30
Grenzen




          31
Amazon SimpleDB - Limits
‣   Domains
    •   250 Domains per Default
    •   10 GB p. Domain
    •   1 Milliarde Key/Value-Paare p. Domain

‣   Items
    •   256 Key/Value-Paare, sog. „Attributes“

‣   Attributes
    •   1024 Bytes / Key
    •   1024 Bytes / Value




                                                 32
Amazon SimpleDB - Limits
‣   Abfragen
    •   2‘500 Items / Query
    •   20 Unique Attributes / Query
    •   1MB / Query
    •   Max. 5sec / Query
    •   Keine Aggregationsfunktionen (MAX, MIN, SUM, AVG usw.)

‣   Speichern
    •   Nur Strings / Arrays of Strings
    •   Sonstige Datentypen via Hilfsfunktionen (Numbers, Dates)




                                                                   33
Use Cases
Anwendungsbeispiele




                      34
Case Study
‣   Share-Button>1 Mio. Sites
‣   Tracking-Daten




                                35
Case Study
‣   Netflix
‣   Oracle abgelöst




                      36
37
Case Study
‣   Flipboard




                 38
Case Study
‣   TweetDeck
‣   User-Accounts +
    Synced Settings




                      39
Case Study
‣   PIXELTEX
‣   Zeiterfassung




                    40
Geeignete Anwendungsfälle
‣   Mobile Apps & Online-Games
    •   Spielstände
    •   Benutzereinstellungen
    •   User-generated Content (Ratings, Comments)
    •   Sessions

‣   Metadaten-Index
    •   Geolocations
    •   Tags
    •   Benutzerbewertungen- und Kommentare
    •   Objektinformationen (Bilder, Videos, Dokumente usw.)




                                                               41
Geeignete Anwendungsfälle
‣   Protokollierung
    •   Audit-Logs
    •   Nutzungsstatistiken (z.B. Suche, Clickstreams, Newsletter-Tracking)
    •   Crash-Reports
    •   Architektur-externer Datenspeicher für Desaster-Fälle
    •   Workflows-Stati
    •   Web-Formulare

‣   CMS-Cache
    •   Inhalte vorberechnet cachen
    •   Entlastung + einfache Erweiterung von „schweren“ CMS-Systemen
    •   Auto-Suggests, Instant-Results




                                                                              42
Kosten




         43
Amazon SimpleDB
‣   Investitionen u. Betriebskosten
    •   Keine

‣   Nutzung
    •   $0,154 / machine hour
    •   Erste 25h / Monat frei

‣   Speicher
    •   1 GB kostenlos
    •   $0,275 pro GB/Monat

‣   Datenübertragung
    •   1 GB kostenlos
    •   $0,12 / GB (bis zu 10 TB, danach günstiger)
    •   Eingehend immer gratis
    •   Amazon EC2-Traffic immer gratis

                                                      44
Getting started




                  45
SDKs
‣   Amazon SDKs           ‣   Community SDKs
    •   Java              •   C, C++, C#
    •   PHP               •   ColdFusion
    •   Ruby (on Rails)   •   Erlang
    •   .NET              •   Excel
    •   iOS               •   Groovy
    •   Android           •   Java Persistence API (JPA)
                          •   JavaScript
                          •   Linq
                          •   Perl
                          •   Python (boto)
                          •   Scala
                          •   Visual Studio 2008




                                                           46
Tools
‣   SimpleDBa (Mac)
    •   Free




                      47
Tools
‣   SDB Explorer
    •   Win, Mac, OS X
    •   Linux
    •   $70




                         48
Tools
‣   SDB Tool
    Firefox Plug-in
    •   Free




                      49
Tools
‣   Migration von MySQL auf SimpleDB
    •   http://learnaws.s3.amazonaws.com/Migrating_MySQL_to_SimpleDB.pdf




                                                                           50
Getting started
‣   AWS Account eröffnen
    •   http://aws.amazon.com

‣   SDKs und Tools herunterladen
‣   Loslegen :-)




                                   51
Getting started
‣   „With SimpleDB you get a rock-solid, globally available database
    which can be scaled infinitely. But I don't say that it is the best
    NoSQL-database, but maybe a good start for people coming from
    the SQL-world and want to jumpstart into NoSQL.“




                                                                         52
About us




           53
pixeltex.com
‣   PIXELTEX
    •   Enterprise Web-Engineering seit 1999
    •   14 Mitarbeiter, davon 11 in Entwicklung & Design
    •   Zürich & Berlin


‣   Schwerpunkte
    •   ColdFusion, Java, Node.js
    •   JavaScript, HTML5
    •   AWS Cloud Computing




                                                           54
pixeltex.com
                      ‣   Louis Brauer
                          •   louis @ pixeltex.com
                          •   twitter.com/louisbrauer
                          •   Tel 044 515 1099




Wäre mit SimpleDB
 nicht passiert! :)




                                                        55

SimpleDB - Chancen einer Cloud Datenbank

  • 1.
    Amazon SimpleDB Chancen einerCloud-Datenbank Louis Brauer ONE-Konferenz, 10. Mai 2012 1
  • 2.
    Agenda 1. Datenbank-Umfeld 2. Wasist Amazon SimpleDB? 3. Features 4. Deep Dive 5. Einschränkungen und Grenzen 6. Use Cases 7. Kosten 8. Getting started 2
  • 3.
    Amazon SimpleDB ‣ Einfach ‣ Skalierbar ‣ Günstig ‣ Migrationspfad für SQL-Fans „Simplicity is the ultimate sophistication.“ (Leonardo da Vinci) 3
  • 4.
  • 5.
    SQL NoSQL DBs DBs MySQL MongoDB AWS SimpleDB PostgreSQL CouchDB Google BigTable Cassandra SQL Server Oracle 5
  • 6.
    Relationale Key/Value Object DB DB Store MySQL AWS SimpleDB CouchDB PostgreSQL Google BigTable MongoDB SQLite AWS DynamoDB SQL Server Cassandra Oracle Neo4j Graph 6
  • 7.
    Eigene Infrastruktur ‣ Virtualisierte ‣ Keine Infrastruktur Infrastruktur ‣ Datenhoheit ‣ Datenhoheit (?) ‣ Datenhoheit SLA! ‣ Volle Kontrolle Local/ Cloud Cloud Hosted Hosted DB DB DB ‣ Hohe Investitionen ‣ Niedrige Startup-Kosten ‣ Keine Startup-Kosten ‣ Hohe Betriebskosten ‣ Höhere Betriebskosten ‣ Rein Nutzungsbasierte Kosten ‣ Schlecht skalierbar ‣ Schneller Skalierbar ‣ Automatische Skalierung ‣ Wartungsaufwändig ‣ Weniger Wartung ‣ Keine Wartung 7
  • 8.
    Was ist AmazonSimpleDB? 8
  • 9.
    Relationale SimpleDB Object DB DB Einfache Datentypen Nur Strings Komplexe Datentypen Fixes Schema Schema-frei Schlüssel-Schema JOINs Keine Relationen Keine Relationen Aggregationen Keine Aggregationen Aggregation via Map/Reduce Extrem ausgereift Sehr solide und simpel Grössere Komplexität SQL-Syntax API & SQL-Like-Syntax Nur via API OO-Entwicklung via ORM Nutzung via HTTP o. SDK Nutzung via SDK Umfangreiches Ökosystem Wenig Tools Wenig Tools 9
  • 10.
  • 11.
    Konzept ‣ Domains • Daten-Container ähnlich einer Tabelle aber ohne fixes Schema ‣ Items • Ein Datensatz mit ein- oder mehreren Key/Value-Paaren ‣ Attributes • „Spalten“ ‣ Values • „Zellen“ 11
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    IT-Systemlandschaft Internet-Applikation Firewall Load Balancer Web-Server Web-Server Web-Server App-Server App-Server App-Server DB-Replika DB-Replika DB-Replika DB-Master 16
  • 17.
  • 18.
  • 19.
    Firewall Load Balancer Web-Server Web-Server Web-Server App-Server App-Server App-Server DB-Replika DB-Replika DB-Replika DB-Master 19
  • 20.
    SimpleDB Firewall Load Balancer Web-Server Web-Server Web-Server App-Server App-Server App-Server DB-Replika DB-Replika DB-Replika DB-Master 20
  • 21.
    Betrieb ‣ Keine eigene Infrastuktur • Keine Hardware, keine Software • Keine Installation ‣ Hochverfügbar • Geo-redundante Replikation • Automatisches Failover • Unlimitierte* Ressourcen ‣ Administrationsfrei • Keine Konfiguration • Automatische Leistungsoptimierung ‣ Sicher • Verschlüsselte Kommunikation via HTTPS • Ausgereiftes Rechtssystem 21
  • 22.
    Entwicklung ‣ Speichern & Abfragen via HTTPS-Requests • Selbst via HTTPS (REST, SOAP) ansprechen • SDKs für alle gängigen Entwicklungsumgebungen ‣ Flexibel • Kein fixes Schema • Konsistente oder Nicht-konsistente Abfragen (schneller) ‣ Full Auto-Index • Jedes Attribut wird vollständig indexiert 22
  • 23.
    Entwicklung ‣ Mehrere „Endpunkte“ verfügbar • Dublin • USA Ost- und 2xWestküste • Tokio • Sao Paulo 23
  • 24.
    Performance ‣ Ausführungsdauer der Abfrage • Üblicherweise weit unter 20ms ‣ Netzwerk-Latenz • „Durchschnittliche“ WLAN-Verbindung: 60-80ms • Kann durch EC2 Server auf bis zu 2ms reduziert werden • Sonst Daten Applikations-seitig cachen, wenn Performance-kritisch ist ‣ Mehr Performance durch Parallelisierung ‣ Fazit • Mindest-Latenz etwas höher, dafür gleichbleibend auch bei ultimativen Lastspitzen 24
  • 25.
  • 26.
    Simple API -8 Methoden ‣ Domains • ListDomains • CreateDomain • DeleteDomain • DomainMetadata ‣ Items • GetAttributes • Put / BatchPut • Delete ‣ Abfragen • Select 26
  • 27.
    SQL-Syntax ‣ select output_list from domain where expression order by sort_instruction limit 100 ‣ sdb.select(„select * from bestellungen“); 27
  • 28.
    SQL-Syntax ‣ select count(*) from domain ‣ select * from domain ‣ select itemName() from domain ‣ select name,city,article from domain 28
  • 29.
    select * fromdomain ‣ where article [=,!=,<,<=,=>,>] `a-1000` ‣ where article [not] like `a-%` ‣ where article between ´a-1000´ and ´a-9999´ ‣ where article in (´a-1000´, ´b-2000´) ‣ where article is [not] null ‣ where every(article) like ´a-%´ 29
  • 30.
    Numerische Datentypen ‣ Datum/Zeit (z.B. 10.5.2012, 10.00 Uhr) • 2012-05-10T10:00:00.00+01:00 ‣ Zahlen • 10 => 100010 • 2 => 100002 • -99 => 000099 ‣ Hilfsfunktionen • encodeRealNumberRange(value, maxDigits, offset); • encodeDate(Date); 30
  • 31.
  • 32.
    Amazon SimpleDB -Limits ‣ Domains • 250 Domains per Default • 10 GB p. Domain • 1 Milliarde Key/Value-Paare p. Domain ‣ Items • 256 Key/Value-Paare, sog. „Attributes“ ‣ Attributes • 1024 Bytes / Key • 1024 Bytes / Value 32
  • 33.
    Amazon SimpleDB -Limits ‣ Abfragen • 2‘500 Items / Query • 20 Unique Attributes / Query • 1MB / Query • Max. 5sec / Query • Keine Aggregationsfunktionen (MAX, MIN, SUM, AVG usw.) ‣ Speichern • Nur Strings / Arrays of Strings • Sonstige Datentypen via Hilfsfunktionen (Numbers, Dates) 33
  • 34.
  • 35.
    Case Study ‣ Share-Button>1 Mio. Sites ‣ Tracking-Daten 35
  • 36.
    Case Study ‣ Netflix ‣ Oracle abgelöst 36
  • 37.
  • 38.
    Case Study ‣ Flipboard 38
  • 39.
    Case Study ‣ TweetDeck ‣ User-Accounts + Synced Settings 39
  • 40.
    Case Study ‣ PIXELTEX ‣ Zeiterfassung 40
  • 41.
    Geeignete Anwendungsfälle ‣ Mobile Apps & Online-Games • Spielstände • Benutzereinstellungen • User-generated Content (Ratings, Comments) • Sessions ‣ Metadaten-Index • Geolocations • Tags • Benutzerbewertungen- und Kommentare • Objektinformationen (Bilder, Videos, Dokumente usw.) 41
  • 42.
    Geeignete Anwendungsfälle ‣ Protokollierung • Audit-Logs • Nutzungsstatistiken (z.B. Suche, Clickstreams, Newsletter-Tracking) • Crash-Reports • Architektur-externer Datenspeicher für Desaster-Fälle • Workflows-Stati • Web-Formulare ‣ CMS-Cache • Inhalte vorberechnet cachen • Entlastung + einfache Erweiterung von „schweren“ CMS-Systemen • Auto-Suggests, Instant-Results 42
  • 43.
  • 44.
    Amazon SimpleDB ‣ Investitionen u. Betriebskosten • Keine ‣ Nutzung • $0,154 / machine hour • Erste 25h / Monat frei ‣ Speicher • 1 GB kostenlos • $0,275 pro GB/Monat ‣ Datenübertragung • 1 GB kostenlos • $0,12 / GB (bis zu 10 TB, danach günstiger) • Eingehend immer gratis • Amazon EC2-Traffic immer gratis 44
  • 45.
  • 46.
    SDKs ‣ Amazon SDKs ‣ Community SDKs • Java • C, C++, C# • PHP • ColdFusion • Ruby (on Rails) • Erlang • .NET • Excel • iOS • Groovy • Android • Java Persistence API (JPA) • JavaScript • Linq • Perl • Python (boto) • Scala • Visual Studio 2008 46
  • 47.
    Tools ‣ SimpleDBa (Mac) • Free 47
  • 48.
    Tools ‣ SDB Explorer • Win, Mac, OS X • Linux • $70 48
  • 49.
    Tools ‣ SDB Tool Firefox Plug-in • Free 49
  • 50.
    Tools ‣ Migration von MySQL auf SimpleDB • http://learnaws.s3.amazonaws.com/Migrating_MySQL_to_SimpleDB.pdf 50
  • 51.
    Getting started ‣ AWS Account eröffnen • http://aws.amazon.com ‣ SDKs und Tools herunterladen ‣ Loslegen :-) 51
  • 52.
    Getting started ‣ „With SimpleDB you get a rock-solid, globally available database which can be scaled infinitely. But I don't say that it is the best NoSQL-database, but maybe a good start for people coming from the SQL-world and want to jumpstart into NoSQL.“ 52
  • 53.
  • 54.
    pixeltex.com ‣ PIXELTEX • Enterprise Web-Engineering seit 1999 • 14 Mitarbeiter, davon 11 in Entwicklung & Design • Zürich & Berlin ‣ Schwerpunkte • ColdFusion, Java, Node.js • JavaScript, HTML5 • AWS Cloud Computing 54
  • 55.
    pixeltex.com ‣ Louis Brauer • louis @ pixeltex.com • twitter.com/louisbrauer • Tel 044 515 1099 Wäre mit SimpleDB nicht passiert! :) 55