Webinar vom 18.12.2013
Amazon DynamoDB ist eine hoch skalierbare NoSQL Datenbank, die konsistente Lese- und Schreibperformance im einstelligen Millisekundenbereich auch für sehr große Anzahlen von Lese- und Schreibvorgängen bietet ohne dass sich der Entwickler um das Aufsetzen und die Wartung des Clusters kümmern muss. In diesem Webinar geben wir einen Überblick, erklären Datenmodelle und Anwendungfälle.
4. Globale Infrastruktur
Region
Eine unabhängige Menge von AWS Ressourcen in einem
definierten geografischen Gebiet
Eine solide Basis, um ortsabhängigen Privacy- und
Compliance-Anforderungen zu genügen
Availability Zone
Deployment & Administration
Entworfen als unabhängige Verfügbarkeitszone
Physisch getrennt innerhalb eines geografischen
Gebiets
App Services
Comput
e
Storage
Databas
e
Edge Location
Für die Auslieferung von Inhalten mit geringer Latenz
Networking
Globales Netzwerk von Edge Locations
Bietet globale DNS Infrastruktur (Route53) und CloudFront
AWS Global Infrastructure
Content Delivery Network
5. Datenbank
Relational Database Service (RDS)
Database-as-a-Service
Datenbank-Instanzen ohne Installation und Administration
Skalierbare und fehlertolerante Konfigurationen
DynamoDB
NoSQL Datenbank mit provisioniertem Durchsatz
Hohe, vorhersagbare Performance
Deployment & Administration
App Services
Compute
Storage
Vollständig verteilte, fehlertolerante Architektur
SimpleDB
Database
Networking
Redshift
Data Warehouse Dienst bis in den Petabyte-Bereich
Kostengünstig, vollständig verwaltet
AWS Global Infrastructure
Einfache Anbindung an BI Lösungen
6. DynamoDB ist ein verwalteter
NoSQL Datenbankdienst
Speichern und Lesen von beliebigen Datenmengen
Beliebige Anzahl Abfragen
29. Authentifizierung.
Auf Session-Basis zur Minimierung der Latenz.
Verwendet den Amazon Security Token Service.
Durch AWS SDKs behandelt.
Integration mit IAM.
Element/Attribut-Berechtigungen möglich.
39. id = 100
date = 2012-05-1609-00-10
total = 25.00
id = 101
date = 2012-05-1515-00-11
total = 35.00
id = 101
date = 2012-05-1612-00-10
total = 100.00
40. Tabelle
id = 100
date = 2012-05-1609-00-10
total = 25.00
id = 101
date = 2012-05-1515-00-11
total = 35.00
id = 101
date = 2012-05-1612-00-10
total = 100.00
41. id = 100
date = 2012-05-1609-00-10
total = 25.00
Element (Item)
id = 101
date = 2012-05-1515-00-11
total = 35.00
id = 101
date = 2012-05-1612-00-10
total = 100.00
42. id = 100
date = 2012-05-1609-00-10
total = 25.00
Attribut
id = 101
date = 2012-05-1515-00-11
total = 35.00
id = 101
date = 2012-05-1612-00-10
total = 100.00
43. Wo ist das Schema?
Tabellen benötigen kein formales Schema
Elemente sind Hashes beliebiger Größe
Sekundäre Indizes legen teilweise Schema fest
44. Indexe
Elemente werden über primäre und sekundäre Schlüssel indiziert
Primäre Schlüssel können zusammengesetzt werden
Sekundäre Schlüssel sind lokal oder global
45. ID
Date
Total
id = 100
date = 2012-05-16-09-00-10
total = 25.00
id = 101
date = 2012-05-15-15-00-11
total = 35.00
id = 101
date = 2012-05-16-12-00-10
total = 100.00
id = 102
date = 2012-03-20-18-23-10
total = 20.00
id = 102
date = 2012-03-20-18-23-10
total = 120.00
46. Hash key
ID
Date
Total
id = 100
date = 2012-05-16-09-00-10
total = 25.00
id = 101
date = 2012-05-15-15-00-11
total = 35.00
id = 101
date = 2012-05-16-12-00-10
total = 100.00
id = 102
date = 2012-03-20-18-23-10
total = 20.00
id = 102
date = 2012-03-20-18-23-10
total = 120.00
47. Hash key
ID
Range key
Date
Total
Zusammengesetzter Primärschlüssel
id = 100
date = 2012-05-16-09-00-10
total = 25.00
id = 101
date = 2012-05-15-15-00-11
total = 35.00
id = 101
date = 2012-05-16-12-00-10
total = 100.00
id = 102
date = 2012-03-20-18-23-10
total = 20.00
id = 102
date = 2012-03-20-18-23-10
total = 120.00
48. Hash key
ID
Range key
Date
Sekundärer range key
Total
id = 100
date = 2012-05-16-09-00-10
total = 25.00
id = 101
date = 2012-05-15-15-00-11
total = 35.00
id = 101
date = 2012-05-16-12-00-10
total = 100.00
id = 102
date = 2012-03-20-18-23-10
total = 20.00
id = 102
date = 2012-03-20-18-23-10
total = 120.00
49. Sekundärer Hash key
ID
Date
Sekundärer Range Key
Total
Neu
id = 100
date = 2012-05-16-09-00-10
total = 25.00
id = 101
date = 2012-05-15-15-00-11
total = 35.00
id = 101
date = 2012-05-16-12-00-10
total = 100.00
id = 102
date = 2012-03-20-18-23-10
total = 20.00
id = 102
date = 2012-03-20-18-23-10
total = 120.00
56. Ein API Aufruf, mehrere Elemente
BatchGet gibt mehrere Elemente nach Schlüssel zurück
BatchWrite führt bis zu 25 Put oder Delete Operationen aus
Durchsatz wird nach IOs berechnet, nicht nach API Aufrufen
58. Query kontra Scan
Query für Composite Key Abfragen
Scan für Full Table Scans, Exports.
Beide unterstützen Seiten und Begrenzungen.
Maximale Antwortgröße ist 1 MB
59. Abfragemuster
Alle Elemente nach Hash Key.
Range key Bedingungen:
==, <, >, >=, <=, begins with, between.
Count, Top und Bottom n Werte
Seitenweise Ergebnisse
68. Aufteilen auf mehrere Elemente
message_id = 1
part = 1
message =
<first 64k>
message_id = 1
part = 2
message =
<second 64k>
message_id = 1
part = 3
joined =
<third 64k>
75. Einheitliche Workload.
Daten in mehreren Partitionen
Daten hauptsächlich über Primärschlüssel verteilt
Provisionierter Durchsatz gleichmäßig über Partitionen verteilt
76. Um den vollen provisionierten Durchsatz zu
nutzen muss die Workload gleichmäßig auf die
Hash Keys verteilt sein
79. Viele Benutzer mit eindeutiger user_id.
Workload gut verteilt über Hash Keys
user_id =
mza
first_name =
Matt
last_name =
Wood
user_id =
jeffbarr
first_name =
Jeff
last_name =
Barr
user_id =
werner
first_name =
Werner
last_name =
Vogels
user_id =
simone
first_name =
Simone
last_name =
Brunozzi
...
...
...
80. BEST PRACTICE 2:
Vermeide begrenzte Hash Key Werte
Hash Keys sollten eine große Zahl
unterschiedlicher Werte haben
81. Geringe Anzahl Status Codes
Ungleichmäßig verteilte Schlüsselwerte
status =
200
date =
2012-04-01-00-00-01
status =
404
date =
2012-04-01-00-00-01
status
404
date =
2012-04-01-00-00-01
status =
404
date =
2012-04-01-00-00-01
82. BEST PRACTICE 3:
Modell für gleichmäßige Verteilung
Zugriff nach Hash Key Wert sollte gleichmäßig verteilt sein
83. Große Anzahl Geräte.
Wenige Geräte sind sehr populär, viele sind es nicht
Ungleichmäßig verteilte Workload
mobile_id =
100
access_date =
2012-04-01-00-00-01
mobile_id =
100
access_date =
2012-04-01-00-00-02
mobile_id =
100
access_date =
2012-04-01-00-00-03
mobile_id =
100
access_date =
2012-04-01-00-00-04
...
...
85. BEST PRACTICE 4:
Vermeide heiße Hash Keys
Keine streng monoton steigende Folge von Hash Keys
Aufsteigende Datums/Zeitwerte sind schlechte Hash Keys
Wenn Datum/Zeit,
dann mit niedrigstem Feld (z.B. Sekunde) beginnen