DynamoDB ist der verwaltete NoSQL-Dienst von Amazon Web Services: eine Key-Value- und Dokumentdatenbank, die sich ohne Serverbetrieb automatisch skaliert. Verwaltet wird sie über die AWS-CLI mit aws dynamodb ....

Tabellen anlegen und anzeigen

aws dynamodb create-table --table-name users     --attribute-definitions AttributeName=id,AttributeType=S     --key-schema AttributeName=id,KeyType=HASH     --billing-mode PAY_PER_REQUEST
aws dynamodb list-tables
aws dynamodb describe-table --table-name users

Der Primärschlüssel besteht aus einem Partition Key (HASH) und optional einem Sort Key (RANGE). PAY_PER_REQUEST (On-Demand) rechnet pro Anfrage; alternativ reserviert man Provisioned Capacity in Read/Write Capacity Units (RCU/WCU).

Daten lesen und schreiben

aws dynamodb put-item --table-name users     --item '{"id": {"S": "1"}, "name": {"S": "Ada"}, "jahr": {"N": "1843"}}'
aws dynamodb get-item --table-name users --key '{"id": {"S": "1"}}'
aws dynamodb update-item --table-name users     --key '{"id": {"S": "1"}}'     --update-expression "SET jahr = :j"     --expression-attribute-values '{":j": {"N": "1844"}}'
aws dynamodb delete-item --table-name users --key '{"id": {"S": "1"}}'

Datenwerte werden typisiert angegeben (S String, N Number, M Map, L Liste). query arbeitet zwingend über den Primärschlüssel, scan liest die ganze Tabelle (teuer!).

PartiQL und DynamoDB Local

aws dynamodb execute-statement     --statement "SELECT * FROM users WHERE id = '1'"
aws dynamodb execute-statement     --statement "INSERT INTO users VALUE {'id': {'S': '2'}, 'name': {'S': 'Grace'}}"

# Lokale Testinstanz (Port 8000)
aws dynamodb list-tables --endpoint-url http://localhost:8000

PartiQL ist eine SQL-ähnliche Abfragesprache für DynamoDB. Mit DynamoDB Local (Java-JAR von AWS) entwickelt man offline ohne Cloud-Kosten.

Praxis-Tipps

  • Standard ist eventually consistent; --consistent-read erzwingt starke Konsistenz.
  • batch-write-item schreibt bis zu 25 Items pro Aufruf.
  • TTL (Time to Live) löscht abgelaufene Einträge automatisch.

Verwandte Grundlagen: NoSQL-Datenbank, CouchDB-Befehle und Firebase-Befehle — beide sind verwaltete Cloud-Datenbanken (AWS beziehungsweise Google).