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.
Themen
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"} }'