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-readerzwingt starke Konsistenz. batch-write-itemschreibt 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).