Auf einen Blick: Das DynamoDB Bulk Insert-Tutorial bietet Anleitungen zur Durchführung von Masseneinfügungen und -löschungen mit der AWS-CLI, mit JSON-Formatierungsbeispielen aus IMDB-Daten. Es behandelt Operationsgrenzen und bietet Anleitungen zur Tabellenerstellung und Datenlade.
- Massenoperationen unterstützen bis zu 25 Anfragen pro Datei.
- Enthält JSON-Formatierungsbeispiele und Details zu Attributtypen.
In diesem Artikel zeigen wir, wie man Masseneinsätze in DynamoDB erstellt. Wenn Sie neu bei Amazon DynamoDB sind, beginnen Sie mit diesen Ressourcen:
Masseneinfügungen und -löschungen
DynamoDB kann Bulk-Einsätze und Massenlöschungen verarbeiten. Wir verwenden die CLI, da sie sprachunabhängig ist. Die Datei kann bis zu 16 MB groß sein, darf aber nicht mehr als 25 Anfrageoperationen in einer Datei haben.
Anfrageoperationen können folgendermaßen sein:
- PutRequest
- DeleteRequest
Die Massenanfrage verarbeitet keine Updates.
Daten von IMDB
Zur Veranschaulichung haben wir 24 Einträge aus der IMDB (Internet Movie Database) gezogen und in JSON-Format eingefügt. Sie können diese Daten hier herunterladen.
Das Format für die Bulk-Operation ist:
Hier ein Beispiel:
{ "table name: [
"request operation": {
"item: {
(put your item here in Attribute value format)
}
}
}]
}
Hier ein Beispiel:
{
"title": [{
"PutRequest": {
"Item": {
"tconst": {
"S": "tt0276132"
},
"titleType": {
"S": "movie"
},
"primaryTitle": {
"S": "The Fetishist"
},
"originalTitle": {
"S": "The Fetishist"
},
"isAdult": {
"S": "0"
},
"startYear": {
"S": "2019"
},
"endYear": {
"S": "\\N"
},
"runtimeMinutes": {
"S": "\\N"
},
"genres": {
"S": "Animation"
}
}
}
}]
}
Wenn du DynamoDB lokal ausführst, starte es so:
java -Djava.library.path=./DynamoDBLoc_lib -jar DynamoDBLocal.jar -sharedDb
Erstellen Sie eine Tabelle wie diese:
aws dynamodb create-table \
--table-name title \
--attribute-definitions AttributeName=tconst,AttributeType=S \
--key-schema AttributeName=tconst,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--endpoint-url http://localhost:8000
Dann laden Sie die Daten so, nachdem Sie die IMDB-Daten in der Datei 100.basics.json gespeichert haben.
Es antwortet:
aws dynamodb batch-write-item \
--endpoint-url http://localhost:8000 \
--request-items file:////Users/walkerrowe/Documents/imdb/100.basics.json \
--return-consumed-capacity TOTAL \
--return-item-collection-metrics SIZE
Es antwortet:
{
"UnprocessedItems": {},
"ConsumedCapacity": [
{
"CapacityUnits": 23.0,
"TableName": "title"
}
]
}
Es zeigte an, wie viele Datensätze es geschrieben hat. Du kannst anfragen, dass es so funktionierte:
aws dynamodb query \
--endpoint-url http://localhost:8000 \
--table-name title \
--key-condition-expression "tconst = :tconst" \
--expression-attribute-values '{ ":tconst":{"S":"tt0276132"}}'
Attributtypen und AttributeValue
Hier zeigen wir einige der AttributeValues, also Attribut- oder Datentypen, die von DynamoDB unterstützt werden. Diese sind:
- S
- BOOL
- L
- M
- usw.
Hinweis: Selbst bei numerischen Werten werden sie in Anführungszeichen eingewickelt.
| Attributtyp | Beschreibung |
|---|---|
| S | Saite Beachten Sie, dass ein Datum im ISO-8601-Wert steht, wie folgt: "currentTime": {"S": "2020-07-24T09:25:49+0000"} |
| BOOL | Boolean. Benutze wahr oder falsch. |
| L |
Eine Liste von Werten ohne AttributeValue, also ohne Attributname: "sonstiges": { "L": [{"S": "Paris"}, {"N": "13000000"}] } |
| M |
Map, das Attributwerte enthält. Das ist wie ein JSON-Objekt, nur dass es Attributwerte hat. Es ist also wie eine Liste benannter Attribute. "map": { "M": {"Name": {"S": "Joe"}, "Alter": {"N": "35"}} } } |
Hier ist ein Beispiel, das zeigt, wie man diese DynamoDB-Attributtypen verwendet.
{
"title": [{
"PutRequest": {
"Item": {
"tconst": {
"S": "tt9276132"
},
"titleType": {
"S": "movie"
},
"primaryTitle": {
"S": "Zorba"
},
"isAdult": {
"BOOL": true
},
"Years": {
"NS": ["2019","2020"]
},
"actors": {
"SS": ["Anthony Quinn", "Marcel Marciano", "David Niven", "Peter Sellers"]
},
"currentTime": {
"S": "2020-07-24T09:25:49+0000"
},
"other": {
"L": [{"S": "Paris"},
{"N": "13000000"}]
},
"map": {
"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
}
}
}
}]
}
Zusätzliche Ressourcen
Mehr zu diesem Thema finden Sie im BMC Machine Learning & Big Data Blog und diesen Ressourcen:
- AWS-Leitfaden mit 15+ Artikeln und Tutorials zu AWS
- Verfügbarkeitsregionen und -zonen für AWS, Azure & GCP
- Datenbanken auf AWS: Wie Cloud-Datenbanken in eine Multi-Cloud-Welt passen
- Eine Einführung in die Datenbankzuverlässigkeit
DynamoDB-Leitfaden
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.