simpledb - chancen einer cloud datenbank

Post on 22-May-2015

627 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Ein Vortrag von Louis Brauer @ ONE Konferenz Zürich 2012

TRANSCRIPT

Amazon SimpleDBC h a n c e n e i n e r C l o u d - D a t e n b a n k

L o u i s B r a u e rONE-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

MySQLPostgreSQL

SQLDBs

NoSQLDBs

SQL ServerOracle

MongoDBCouchDB

CassandraAWS SimpleDB

Google BigTable

5

MySQLPostgreSQLSQLite

SQL ServerOracle

CouchDBMongoDB

AWS DynamoDBCassandra

AWS SimpleDBGoogle BigTable

Graph

Neo4j

Relationale DB Object DBKey/Value

Store

6

Local/Hosted

DB

CloudHosted

DBCloud

DB

‣ Eigene Infrastruktur

‣ Datenhoheit

‣ Volle Kontrolle

‣ Hohe Investitionen

‣ Hohe Betriebskosten

‣ Schlecht skalierbar

‣ Wartungsaufwändig

‣ VirtualisierteInfrastruktur

‣ Datenhoheit

‣ Niedrige Startup-Kosten

‣ Höhere Betriebskosten

‣ Schneller Skalierbar

‣ Weniger Wartung

‣ Keine Infrastruktur

‣ Datenhoheit (?)SLA!

‣ Keine Startup-Kosten

‣ Rein Nutzungsbasierte Kosten

‣ Automatische Skalierung

‣ Keine Wartung7

Was ist Amazon SimpleDB?

8

Relationale DB Object DBSimpleDB

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

FirewallLoad Balancer

DB-Master

DB-Replika DB-Replika DB-Replika

App-Server App-Server App-Server

Web-Server Web-Server Web-Server

16

17

18

FirewallLoad Balancer

DB-Master

DB-Replika DB-Replika DB-Replika

App-Server App-Server App-Server

Web-Server Web-Server Web-Server

19

FirewallLoad Balancer

DB-Master

DB-Replika DB-Replika DB-Replika

App-Server App-Server App-Server

Web-Server Web-Server Web-Server

SimpleDB

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_listfrom domainwhere expressionorder by sort_instructionlimit 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 CasesA n w e n d u n g s b e i s p i e l e

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• Java• PHP• Ruby (on Rails)• .NET• iOS• Android

‣ Community SDKs• C, C++, C#• ColdFusion• Erlang• Excel• Groovy• 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 ToolFirefox 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

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

pixeltex.com

Wäre mit SimpleDB nicht passiert! :)

55

top related