DynamoDB decoded, Teil 4 Nutzung von AWS DynamoDB

Von Yannik Rust* 5 min Lesedauer

Anbieter zum Thema

Die Amazon DynamoDB bietet mehrere Interaktionsmöglichkeiten wie die Management-Konsole und die Befehlszeilen-Schnittstelle. Doch erst mit den AWS SDKs, sprich Software Development Kits, lässt sich das volle Potenzial von DynamoDB ausschöpfen.

Über einen Stream erhält DynamoDB die Informationen über jede Änderung an den Datenelementen der Tabelle. (Bild:  Drilling / AWS Germany GmbH)
Über einen Stream erhält DynamoDB die Informationen über jede Änderung an den Datenelementen der Tabelle.
(Bild: Drilling / AWS Germany GmbH)

Über die AWS Management Console ist es möglich, grundlegende Operationen durchzuführen. Dies umfasst einen Überblick sowie detaillierte Informationen zu den provisionierten Tabellen und der bereitgestellten Kapazität. Darüber hinaus können Einstellungen zum Monitoring, zur Verschlüsselung und zu Backups vorgenommen werden. Zudem lassen sich hier neue Tabellen, Items und sekundäre Indizes erstellen, anpassen und löschen.

Ähnliche Funktionalitäten bietet das AWS Command Line Interface (CLI). Das AWS CLI ermöglicht es, Amazon-Services einschließlich DynamoDB über die Kommandozeile und automatisierte Skripte zu steuern. Das CLI eignet sich gut für Ad-hoc-Operationen wie das Erstellen von Tabellen.

Sowohl Management Console als auch Befehlszeilen-Schnittstelle ermöglichen eine interaktive Nutzung von DynamoDB. Um jedoch das volle Potenzial dieser NoSQL-Datenbank auszuschöpfen und Abfragen in eigenen Applikationen auszuführen, empfiehlt sich die Nutzung der AWS SDKs. Diese bieten umfassende Unterstützung für DynamoDB in Sprachen wie Java, JavaScript, .NET, Node.js, PHP, Python, Ruby, C++, Go, Android und iOS.

Die Abfragestruktur unterscheidet sich dabei erheblich von der in typischen relationalen Datenbanken. Während bei relationalen Datenbanken üblicherweise eine persistente Verbindung aufgebaut und SQL-Befehle verwendet werden, nutzt DynamoDB HTTP-Anfragen mit spezialisierten API-Operationen. Dadurch ist keine dauerhafte Datenbankverbindung erforderlich, was eine hohe Skalierbarkeit sowie schnelle und gleichzeitige Anfragebearbeitung ermöglicht.

API-Abfragen

Im Folgenden erläutert der Autor einige der wichtigsten API-Operationen zum Arbeiten mit DynamoDB und zeigt ein praktisches Beispiel für die Programmiersprache Python. Aber Achtung: Die Implementierung der Anfragen variiert stark zwischen den einzelnen unterstützten Sprachen. Für detailliertere Informationen sollte die AWS-Dokumentation konsultiert werden.

Erstellen von Daten

  • PutItem – Schreibt ein einzelnes Item in eine Tabelle, wobei der Primärschlüssel angegeben werden muss.
  • BatchWriteItem – Schreibt bis zu 25 Items in eine Tabelle. Batch-Operationen sind effizienter als mehrmaliges Aufrufen des Put-Aufrufs.

Lesen von Daten

  • GetItem – Ruft ein einzelnes Item basierend auf seinem Primärschlüssels aus einer Tabelle ab.
  • BatchGetItem – Ruft bis zu 100 Items aus einer oder mehreren Tabellen ab.
  • Query – Ruft alle Items ab, die einen bestimmten Partitionsschlüssel haben. Optional kann eine Bedingung für die Sortierschlüsselwerte festgelegt werden, sodass nur eine Teilmenge der Daten abgerufen wird, die denselben Partitionsschlüssel haben.
  • Scan – Ruft alle Items in der angegebenen Tabelle oder im Index ab. Hierbei können Filter Bedingungen angewendet werden, um die Teilmenge einzuschränken.

Aktualisieren von Daten

  • UpdateItem – Ändert ein oder mehrere Attribute in einem Item, wobei der Primärschlüssel des zu ändernden Items angegeben werden muss.

Löschen von Daten

  • DeleteItem – Löscht ein einzelnes Item aus einer Tabelle.
  • BatchWriteItem – Löscht bis zu 25 Elemente aus einer oder mehreren Tabellen.

Der Beispielcode im folgenden Abschnitt zeigt, wie man mithilfe von Python und der AWS SDK (boto3) ein Item aus einer DynamoDB-Tabelle abfragt.

# Beispiel-Python-Code, um vom DynamoDB-Client ein Objekt (Metadaten eines Spielers) zu erhaltenimport boto3# Initialisierung des DynamoDB-Clients
dynamodb_client = boto3.client('dynamodb', region_name='eu-central-1')
# Anfrage an die DynamoDB
antwort = dynamodb_client.get_item(
TableName="SPIELER_DATEN",
   Key={
      'Partitionsschlüssel': {'S': 'spieler001'},
      'Sortierungsschlüssel': {'S': 'METADATEN#spieler001'}
   }
)
# Ausgabe der Antwort
if 'Item' in antwort:
   print(antwort['Item'])
else:
   print("Kein Eintrag gefunden.")

TTL

Die Time-to-Live- oder TTL-Funktion von AWS DynamoDB ermöglicht die automatische Ablaufverwaltung von Datensätzen in einer Tabelle basierend auf einem festgelegten Ablaufdatum. Diese Funktion ist besonders nützlich für Anwendungen, die temporäre oder „verderbliche“ Daten verarbeiten, wie beispielsweise Sitzungsinformationen, temporäre Caches oder Ereignisprotokolle. Darüber hinaus hilft sie, Speicherplatz in der Tabelle zu sparen und die Datenintegrität zu gewährleisten, indem veraltete oder nicht mehr benötigte Datensätze automatisch entfernt werden.

Die Funktionsweise der TTL ist recht einfach: Jeder Datensatz in der DynamoDB-Tabelle kann ein optionales Ablaufdatum enthalten. Sobald die TTL für einen Datensatz abgelaufen ist, wird der Datensatz automatisch aus der Tabelle entfernt. Dieser Prozess wird von DynamoDB intern verwaltet, sodass Entwickler sich nicht um die manuelle Löschung abgelaufener Datensätze kümmern müssen.

Um die TTL-Funktion zu nutzen, muss lediglich ein TTL-Attribut (Zeitstempel) in der Tabelle definiert werden, dass das Ablaufdatum für jeden Datensatz speichert. Wird ein Datensatz unter Angabe eines Ablaufdatums eingefügt oder aktualisiert, überwacht DynamoDB dieses Datum automatisch und entfernt den Datensatz, sobald die TTL abgelaufen ist.

Streams

DynamoDB Streams ist eine Funktion von AWS DynamoDB, die Echtzeit-Änderungsdaten von einer Tabelle erfasst und in einem Stream speichert. Diese Streams ermöglichen es Entwicklern und Entwicklerinnen, Änderungen an den Daten in Echtzeit zu erfassen und darauf zu reagieren, ohne die Hauptdatenbank zu beeinträchtigen.

DynamoDB Streams erlauben es, Anwendungen zu erstellen, die reaktionsfähig auf Datenänderungen sind – zum Beispiel für die Durchführung von Echtzeit-Analysen, die Aktualisierung von Cache-Systemen oder die Auslösung von Benachrichtigungen und Workflow-Automatisierungen. Die Streams bieten eine zuverlässige und skalierbare Möglichkeit, um auf Datenänderungen in DynamoDB-Tabellen zu reagieren und damit eine nahtlose Integration in verschiedene Anwendungsszenarien zu ermöglichen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Global Tables

Global Tables in DynamoDB ist eine Funktion, die es ermöglicht, Daten über mehrere AWS-Regionen hinweg zu replizieren und somit globale Verfügbarkeit und Redundanz für Anwendungen zu gewährleisten. Mit Global Tables können Entwickler ihre Daten in DynamoDB in verschiedenen geografischen Regionen replizieren lassen, um höhere Ausfallsicherheit und bessere Leistung für Endbenutzer weltweit zu erreichen.

Dabei werden die Daten in Echtzeit synchronisiert, sodass Änderungen in einer Region sofort in alle anderen Regionen repliziert werden. Dies ermöglicht eine nahtlose Skalierung und verbessert die Zugriffszeiten für Benutzer in verschiedenen geografischen Standorten. Global Tables bieten eine einfache Möglichkeit, globale Anwendungen zu entwickeln und dabei die hohe Verfügbarkeit und Skalierbarkeit von DynamoDB optimal zu nutzen.

Nach der detaillierten Erörterung der Nutzungsmöglichkeiten von AWS DynamoDB durch Entwickler, einschließlich der API-Schnittstellen und speziellen Funktionalitäten, erfolgt im letzten Teil der Serie eine Betrachtung der Best Practices. Darüber hinaus wird die Funktionsweise des DynamoDB Accelerator (DAX) beschrieben sowie die wichtigsten Erkenntnisse aus dieser Artikelreihe zusammengefasst.

* Über den Autor
Yannik Rust arbeitet als Consultant bei adesso SE, wo er in diversen Cloud-Migrationsprojekten umfangreiche Erfahrungen mit verschiedenen SQL- und NoSQL-Datenbanken gesammelt hat. Als Experte auf dem Gebiet der Datenbank-Technologien berät Yannik Kunden aus unterschiedlichen Wirtschaftssektoren und unterstützt aktuell ein groß angelegtes Datenmigrationsprojekt in die AWS-Cloud unter Einbeziehung verschiedener NoSQL-Datenbanken und Cloud-Services. Yannik hält einen Abschluss in Wirtschaftsinformatik und ist zertifizierter AWS-Datenbankingenieur. Sein Fachwissen und seine praktische Erfahrung machen ihn zu einem gefragten Ansprechpartner für komplexe Datenbank-Architekturen und Cloud-Infrastrukturen.

Bildquelle: adesso SE

Artikelfiles und Artikellinks

(ID:50096056)