Arbeiten mit globalen Sekundärindizes in DynamoDB mit AWS CLI - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit globalen Sekundärindizes in DynamoDB mit AWS CLI

Sie können den verwenden AWS CLI , um eine Amazon DynamoDB-Tabelle mit einem oder mehreren globalen Sekundärindizes zu erstellen, die Indizes in der Tabelle zu beschreiben und Abfragen mithilfe der Indizes durchzuführen.

Erstellen einer Tabelle mit einem globalen sekundären Index

Globale sekundäre Indizes können gleichzeitig mit der Tabelle erstellt werden. Zu diesem Zweck verwenden Sie den create-table-Parameter und geben Ihre Spezifikationen für ein oder mehrere globale sekundäre Indizes an. Im folgenden Beispiel wird eine Tabelle mit dem Namen GameScores mit einem globalen sekundären Index GameTitleIndex erstellt. Die Basistabelle hat einen Partitionsschlüssel von UserId und einen Sortierschlüssel vonGameTitle, sodass Sie effizient die beste Punktzahl eines einzelnen Benutzers für ein bestimmtes Spiel ermitteln können, wohingegen die Tabelle GSI über einen Partitionsschlüssel GameTitle und einen Sortierschlüssel von verfügtTopScore, sodass Sie schnell die höchste Gesamtpunktzahl für ein bestimmtes Spiel ermitteln können.

aws dynamodb create-table \ --table-name GameScores \ --attribute-definitions AttributeName=UserId,AttributeType=S \ AttributeName=GameTitle,AttributeType=S \ AttributeName=TopScore,AttributeType=N \ --key-schema AttributeName=UserId,KeyType=HASH \ AttributeName=GameTitle,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 \ --global-secondary-indexes \ "[ { \"IndexName\": \"GameTitleIndex\", \"KeySchema\": [{\"AttributeName\":\"GameTitle\",\"KeyType\":\"HASH\"}, {\"AttributeName\":\"TopScore\",\"KeyType\":\"RANGE\"}], \"Projection\":{ \"ProjectionType\":\"INCLUDE\", \"NonKeyAttributes\":[\"UserId\"] }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": 10, \"WriteCapacityUnits\": 5 } } ]"

Sie müssen warten bis DynamoDB die Tabelle erstellt und den Tabellenstatus auf ACTIVE setzt. Im Anschluss können Sie die Daten in der Tabelle ablegen. Mit describe-table können Sie den Status der Tabellenerstellung ermitteln.

Hinzufügen eines globalen sekundären Indexes zu einer vorhandenen Tabelle

Globale sekundäre Indizes können auch nach der Tabellenerstellung hinzugefügt oder geändert werden. Zu diesem Zweck verwenden Sie den update-table-Parameter und geben Ihre Spezifikationen für ein oder mehrere globale sekundäre Indizes an. Das folgende Beispiel verwendet dasselbe Schema wie das vorherige Beispiel, geht jedoch davon aus, dass die Tabelle bereits erstellt wurde, und wir fügen sie GSI später hinzu.

aws dynamodb update-table \ --table-name GameScores \ --attribute-definitions AttributeName=TopScore,AttributeType=N \ --global-secondary-index-updates \ "[ { \"Create\": { \"IndexName\": \"GameTitleIndex\", \"KeySchema\": [{\"AttributeName\":\"GameTitle\",\"KeyType\":\"HASH\"}, {\"AttributeName\":\"TopScore\",\"KeyType\":\"RANGE\"}], \"Projection\":{ \"ProjectionType\":\"INCLUDE\", \"NonKeyAttributes\":[\"UserId\"] } } } ]"

Beschreiben einer Tabelle mit einem globalen sekundären Index

Um Informationen zu globalen sekundären Indizes in einer Tabelle zu erhalten, verwenden Sie den Parameter describe-table. Sie können auf den Namen, das Schlüsselschema und die projizierten Attribute von jedem Index zugreifen.

aws dynamodb describe-table --table-name GameScores

Abfragen eines globalen sekundären Indexes

Sie können die Operation query für einen globalen sekundären Index genauso nutzen, wie Sie query für eine Tabelle nutzen. Sie müssen den Indexnamen, die Abfragekriterien für den Indexsortierschlüssel und die Attribute angeben, die Sie zurückgeben möchten. In diesem Beispiel ist der Index GameTitleIndex und der Indexsortierschlüssel GameTitle.

Die einzigen zurückgegebenen Attribute sind die, die in den Index projiziert wurden. Sie könnten diese Abfrage ändern, um auch Nicht-Schlüsselattribute auszuwählen, aber dies würde eine Tabellenabrufaktivität erfordern, die relativ teuer ist. Weitere Informationen zum Abrufen von Tabellen finden Sie unter Attributprojektionen.

aws dynamodb query --table-name GameScores\ --index-name GameTitleIndex \ --key-condition-expression "GameTitle = :v_game" \ --expression-attribute-values '{":v_game":{"S":"Alien Adventure"} }'