23. Best Practices: RDBMS auf AWS
• Verwenden Sie mehrere Availability Zones
– RDS bietet MultiAZ für Oracle, PostgreSQL und MySQL
• Verwenden Sie Provisioned IOPs
– Bis zu 30000 für RDS
– Bis zu 4000 für EBS Volumes
• Striping (RAID 0) möglich für mehr
• Backup nach S3
– Verwendung von DB Snapshots oder EBS Snapshots oder direktes S3
Backup wenn unterstützt (z.B. Oracle RMAN)
• Verwenden Sie geeignete Instanztypen -> m3, c3, m2
• Skalierung hoch/runter innerhalb von 5-20 Minuten durch
Änderung des Instanztyps
30. Typen von NoSQL Datenbanken
Stark vereinfacht, ohne Memory Caches & Analytische Datenbanken
Schlüssel
Wert
Schlüssel
Spalte
Spalte
Spalte
Schlüssel
Wert
Schlüssel
Spalte
Spalte
Spalte
z.B. Riak
z.B. DynamoDB, Cassandra
Schlüssel
{ “document” : “JSON”
}
Schlüssel
{ “document” : “JSON”
}
z.B. MongoDB, ClouchDB
Node
Node
Node
Node
Node
z.B. Neo4j
+ diverse andere Typen
31. NoSQL Datenbanken auf AWS
• Whitepaper dokumentieren NoSQL Datenbanken auf AWS
– http://aws.amazon.com/whitepapers
– Couchbase on AWS
– Riak on AWS
– MongoDB on AWS
• Für persistente Datenbanken: Cluster aus Hoch-IOPS Instanzen
– I2 Instanzen haben bis zu 350000 Write-IOPs
– Instance Store Disks, wenn Cluster redundant ist
32. NoSQL Datenbank
DynamoDB
NoSQL Datenbank mit provisioniertem Durchsatz
Hohe, vorhersagbare Performance
Vollständig verteilte, fehlertolerante Architektur
Feature
Details
Provisionierter
Durchsatz
Deployment & Administration
Storage
Vorhersagbare
Performance
Durchschnittliche Latenz im einstelligen
Millisekunden-Bereich durch SSDs
Starke Konsistenz
App Services
Compute
Lese/Schreibdurchsatz einfach nach Bedarf
erhöhen und vermindern
Fehlertolerant
Database
Monitoring
Sicher
Networking
Elastic MapReduce
AWS Global Infrastructure
Sicheres Lesen der aktuellsten Werte
Daten repliziert über mehrere Availability
Zones
Integration mit CloudWatch
Integration mit AWS Identity and Access
Management (IAM)
Integration mit Elastic MapReduce (Hadoop)
für komplexe Analysen oder große
Datenmengen
40. Amazon Redshift
Redshift
Schnelle und performante Analyse großer Datenmengen
1/10 der Kosten eines traditionellen Data Warehouse
Automatisches Deployment & Administration
Feature
Skalierung
Deployment & Administration
Niedrige Kosten
Columnstore
App Services
Fehlertolerant
Compute
Storage
Database
Vollständig
verwaltet
Networking
AWS Global Infrastructure
Sicher
Kompatibel
Details
Skaliert von Terabytes bis Petabytes
Preise ab US$999/TB/Jahr
Spaltenweise Speicherung optimiert für
DWH Workloads
Automatische Ersetzung von Nodes &
Disks, Automatisches Backup nach S3
Automatisches OS & Software Patching
Redshift Daten können verschlüsselt
werden
Kompatibel mit populären BI Tools über
ODBC und JDBC Treiber
47. Elastic MapReduce
Halt, was ist mit Hadoop?
• Viele Kunden verwenden Hadoop für DWH-artige Workloads
– Weil das lange Zeit die einzige skalierbare, kostengünstige
Möglichkeit war
– In vielen Fällen ist ein relationaler DWH-Dienst für DWH Workloads
schneller und preiswerter
• Hadoop/EMR ist erste Wahl für komplexe Berechnungen auf
großen Datenmengen
– Auch für explorative oder ETL-artige Jobs
53. Beispiel-Datenarchitektur
Join via Facebook
Add a Skill Page
Web Servers +
MS SQL Server
in RDS
Raw Data
Amazon S3
User Action Trace Events
Invite Friends
Get
Data
Aggregated Data
Amazon Redshift
Amazon S3
Raw Events
EMR
•
Tableau
Excel
•
•
Data Analyst
Internal Web
Hive Scripts Process Content
Process log files with regular
expressions to parse out the info
we need.
Processes cookies into useful
searchable data such as Session,
UserId, API Security token.
Filters surplus info like internal
varnish logging.
54. Zusammenfassung
• Wählen Sie das richtige Werkzeug für die Aufgabe
• Ihre Wahl: Relational oder NoSQL
– Verwenden Sie RDS für Prototyping und hochwertige Daten
– Verwenden Sie Amazon DynamoDB für hochperformante,
persistente, kostengünstige Speicherung
– Verwenden Sie Redshift für skalierbares, kostengünstiges Data
Warehousing
• Ihre Wahl: Do-it-yourself oder voll verwaltet
– Verwaltete Dienste ermöglichen Ihnen den Fokus auf die eigentliche
Aufgabe
55. Ressourcen
• http://aws.amazon.com/de
• Getting started with Free Tier:
http://aws.amazon.com/de/free/
• 25 US$ credits für neue Kunden:
http://aws.amazon.com/de/campaigns/account/
• Twitter: @AWS_Aktuell
• Facebook:
http://www.facebook.com/awsaktuell
• Webinare: http://aws.amazon.com/de/about-aws/events/
• Slides: http://de.slideshare.net/AWSAktuell
• Diese Präsentation: http://bit.ly/OOP2014Krause
56. WE ARE HIRING!
• Amazon Web Services wächst in Deutschland
• Wir suchen technische Sales – Consultants Entwickler (m/w) in:
– Berlin
– München
• Wir suchen Software – Entwickler (m/w) in:
– Dresden
– Berlin
• Bewerben Sie sich noch heute und wachsen Sie mit uns!
http://aws.amazon.com/de/careers/
Notes de l'éditeur
Konsistenz (C): Alle Knoten sehen zur selben Zeit dieselben Daten. Diese Konsistenz sollte nicht verwechselt werden mit der Konsistenz aus der ACID-Transaktionen, die nur die innere Konsistenz eines Datenbestandes betrifft.Verfügbarkeit (A): Alle Anfragen an das System werden stets beantwortet.Partitionstoleranz (P): Das System arbeitet auch bei Verlust von Nachrichten, einzelner Netzknoten oder Partition des Netzes weiter.Quelle: http://de.wikipedia.org/wiki/CAP-Theorem
http://de.wikipedia.org/wiki/ACID Atomarität (Abgeschlossenheit)Von einer atomaren Operation spricht man, wenn eine Sequenz von Daten-Operationen entweder ganz oder gar nicht ausgeführt wird (Alles-oder-nichts-Eigenschaft).[2] Dies wird üblicherweise durch Verwendung von Transaktionen erreicht. Das DBMS verhält sich dabei gegenüber dem Benutzer so, als ob die Transaktion eine einzelne elementare Operation wäre, die nicht von anderen Operationen unterbrochen werden kann. Praktisch werden die einzelnen Datenbankanweisungen, aus denen sich die Transaktion zusammensetzt, natürlich nacheinander ausgeführt, aber global erst dann „für gültig erklärt und in Kraft gesetzt“, wenn sie erfolgreich vollständig abgeschlossen sind. Sollte sich jedoch während der Transaktion herausstellen, dass diese nicht vollständig abgeschlossen werden kann, wird der ursprüngliche Bereich als gültig erklärt und ein Rollback durchgeführt, d. h. alle bisherig ausgeführten Anweisungen wieder rückgängig gemacht, sofern notwendig - oder einfach der zwischenzeitlich für die Änderungen genutzte Speicherbereich wieder freigegeben und die Gültigkeit beim bisherigen belassen.KonsistenzerhaltungKonsistenz heißt, dass eine Sequenz von Daten-Operationen nach Beendigung einen konsistenten Datenzustand hinterlässt, falls die Datenbank davor auch konsistent war. Dies wird durch Normalisierung des Datenbestands, sowie explizit definierte Integritätsbedingungen, insbesondere von Schlüssel- und Fremdschlüsselbedingungen, erreicht.Das Konsistenz-Kriterium bezieht sich vor allem auf die inhaltliche und referentielle Integrität eines Datenbestandes, die vor und nach einer Sequenz von Daten-Operationen gewährleistet bleiben muss. Während die Wahrung der inhaltlichen Integrität hauptsächlich von den verwendeten Datenbank-Operationen abhängt, lässt sich die referentielle Integrität automatisch gewährleisten, solange alle Redundanzen im Datenbestand automatisiert gehandhabt werden.Die Normalisierung eines Datenbestands hat zum Ziel, dass dort alle Redundanzen außer durch Primärschlüssel und Fremdschlüssel vermieden werden. Letztere Art von Redundanz ist unvermeidlich, da sie zur Definition von Relationen benötigt wird. Alle nach der Normalisierung übrig bleibenden Redundanzen (Fremdschlüssel, absichtlich erhaltene Redundanzen, usw.) müssen dann durch Integritätsbedingungen so gehandhabt werden, dass die referentielle Integrität bei allen möglichen Daten-Operationen gewahrt bleibt.Isolation (Abgrenzung)Durch das Prinzip der Isolation wird verhindert/eingeschränkt, dass sich nebenläufig in Ausführung befindliche Daten-Operationen gegenseitig beeinflussen. Realisiert wird dies üblicherweise durch Anwendung von Transaktionen bei gemischten Lese- und Schreib-Sequenzen, sowie insbesondere auch bei reinen Lesesequenzen. Der transaktionale Isolationsgrad definiert dabei die erlaubte Art der Beeinflussung, verbreitete Einstellungen sind dabei READ COMMITTED, REPEATABLE READ sowie SERIALIZABLE.Dauerhaftigkeit[Der Begriff Dauerhaftigkeit sagt aus, dass Daten nach dem erfolgreichen Abschluss einer Transaktion garantiert dauerhaft in der Datenbank gespeichert sind. Die dauerhafte Speicherung der Daten muss auch nach einem Systemfehler (Software-Fehler oder Hardware-Ausfall) garantiert sein. Insbesondere darf es nach einem Ausfall des Hauptspeichers nicht zu Datenverlusten kommen. Dauerhaftigkeit kann durch das Schreiben eines Transaktionslogs sichergestellt werden. Ein Transaktionslog erlaubt es, nach einem Systemausfall alle in der Datenbank fehlenden Schreib-Operationen zu reproduzieren.