Upload
one-schweiz
View
627
Download
1
Embed Size (px)
DESCRIPTION
Ein Vortrag von Louis Brauer @ ONE Konferenz Zürich 2012
Citation preview
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
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