Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Puoi utilizzare il AWS CLI per creare una tabella Amazon DynamoDB con uno o più indici secondari globali, descrivere gli indici sulla tabella ed eseguire query utilizzando gli indici.
Argomenti
Creazione di una tabella con un indice secondario globale
Gli indici secondari globali possono essere creati al momento della creazione di una tabella. A tale scopo, utilizza il parametro create-table
e fornire le specifiche per uno o più indici secondari globali. Nell'esempio seguente viene creata una tabella denominata GameScores
con un indice secondario globale denominato GameTitleIndex
. La tabella base ha una chiave di partizione UserId
e una chiave di ordinamento diGameTitle
, che ti consentono di trovare il punteggio migliore di un singolo utente per un gioco specifico in modo efficiente, mentre GSI ha una chiave di partizione GameTitle
e una chiave di ordinamento diTopScore
, che ti consentono di trovare rapidamente il punteggio più alto complessivo per un determinato gioco.
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 } } ]"
È necessario attendere fino a quando DynamoDB crea la tabella e imposta lo stato su ACTIVE
. Dopodiché, puoi iniziare a inserire item di dati nella tabella. È possibile utilizzare describe-table per determinare lo stato di avanzamento della creazione della tabella.
Aggiunta di un indice secondario globale a una tabella esistente
Gli indici secondari globali possono essere aggiunti o modificati anche dopo la creazione della tabella. A tale scopo, utilizza il parametro update-table
e fornire le specifiche per uno o più indici secondari globali. L'esempio seguente utilizza lo stesso schema dell'esempio precedente, ma presuppone che la tabella sia già stata creata e che venga aggiunta la tabella successiva. GSI
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\"] } } } ]"
Descrizione di una tabella con un indice secondario globale
Per ottenere informazioni sugli indici secondari globali in una tabella, utilizza il parametro describe-table
. Puoi accedere al nome, allo schema della chiave e agli attributi proiettati di ciascun indice.
aws dynamodb describe-table --table-name GameScores
Esecuzione di query su un indice secondario globale
È possibile utilizzare l'operazione query
su un indice secondario globale nello stesso modo in cui si esegue una query
su una tabella. È necessario specificare il nome dell'indice, i criteri della query per la chiave di ordinamento dell'indice e gli attributi da restituire. In questo esempio, l'indice è GameTitleIndex
e la chiave di ordinamento dell'indice è GameTitle
.
Gli unici attributi restituiti sono quelli proiettati nell'indice. È possibile modificare questa query per selezionare anche attributi non chiave, ma ciò richiederebbe un'attività di recupero della tabella relativamente costosa. Per ulteriori informazioni sul recupero delle tabelle, consulta Proiezioni di attributi.
aws dynamodb query --table-name GameScores\ --index-name GameTitleIndex \ --key-condition-expression "GameTitle = :v_game" \ --expression-attribute-values '{":v_game":{"S":"Alien Adventure"} }'