DynamoDB Bulk Insert: Ein einfaches Tutorial

DynamoDB Bulk Insert: Ein einfaches Tutorial

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Jul 30, 2020

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:

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.