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à.
In questa sezione viene descritto come creare una tabella globale utilizzando la console Amazon DynamoDB o AWS Command Line Interface (AWS CLI).
Argomenti
Segui questi passaggi per creare una tabella globale utilizzando AWS Management Console. Il seguente esempio consente di creare una tabella globale con le tabelle di replica negli Stati Uniti e in Europa.
-
Apri la console DynamoDB a casa. https://console.aws.amazon.com/dynamodb/
Per questo esempio, scegli la regione Stati Uniti orientali (Ohio). -
Nel riquadro di navigazione sul lato sinistro della console scegli Tables (Tabelle).
-
Scegliere Create Table (Crea tabella).
-
Nella pagina Crea tabella, procedi come segue:
-
Nel campo Table name (Nome tabella) immetti
Music
. -
In Partition key (Chiave di partizione), inserisci
Artist
. -
Per il tasto Sort, immettere
SongTitle
. -
Mantieni la selezione predefinita di String sia per la chiave di partizione che per la chiave di ordinamento.
-
Mantieni le altre selezioni predefinite nella pagina, quindi scegli Crea tabella.
Questa nuova tabella funge da prima tabella di replica in una nuova tabella globale. È il prototipo per altre tabelle di replica che aggiungerai in seguito.
-
-
Nella pagina Tabelle, scegli la tabella Music appena creata, quindi procedi come segue:
-
Scegli la scheda Tabelle globali, quindi scegli Crea replica.
-
Nell'elenco a discesa Regioni di replica disponibili, selezionare US West (Oregon) us-west-2.
La console verifica che non esista una tabella con lo stesso nome nella regione selezionata. Se esiste una tabella con lo stesso nome, è necessario eliminare la tabella esistente prima di poter creare una nuova tabella di replica in quella regione.
-
Scegliere Crea replica. Questo avvia il processo di creazione della tabella nella regione us-west-2 degli Stati Uniti occidentali (Oregon).
La scheda Tabelle globali per la tabella Music (e per qualsiasi altra tabella di replica) mostra che la tabella è stata replicata in più regioni.
-
Aggiungi un'altra regione in modo che la tabella globale venga replicata e sincronizzata negli Stati Uniti d'America e in Europa. A tale scopo, ripeti il passaggio 5.b, ma questa volta specifica Europe (Frankfurt) eu-central-1 anziché US West (Oregon) us-west-2.
-
-
Assicurati di continuare a utilizzare la regione Stati Uniti orientali ( AWS Management Console Ohio). Successivamente, esegui queste operazioni:
-
Scegli Explore table items (Esplora elementi della tabella).
-
Scegli Crea elemento.
-
In Artist, digita
item_1
. -
In SongTitle, immettere
Song Value 1
. -
Per salvare l'articolo, scegli Crea articolo.
-
-
Dopo un breve periodo, l'item viene replicato in tutte e tre le regioni della tabella globale. Per verificarlo, nella console o con il selettore della regione in alto a destra, scegli Europa (Francoforte). Il tavolo Music in Europe (Francoforte) dovrebbe contenere il nuovo elemento.
-
Ripeti il passaggio 7 e scegli Stati Uniti occidentali (Oregon) per verificare la replica in quella regione.
Completa questa procedura per creare una tabella globale Music
utilizzando AWS CLI. Il seguente esempio consente di creare una tabella globale con le tabelle di replica negli Stati Uniti e in Europa.
-
Crea una nuova tabella (
Music
) nella regione Stati Uniti orientali (Ohio), con DynamoDB Streams abilitato (NEW_AND_OLD_IMAGES
).aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode PAY_PER_REQUEST \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-2
-
Crea una tabella
Music
identica nella regione Stati Uniti orientali (Virginia settentrionale).aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Create": { "RegionName": "us-east-1" } } ] }' \ --region=us-east-2
-
Ripeti la fase 2 per creare una tabella nella regione Europa (Irlanda) (eu-west-1).
-
È possibile visualizzare l'elenco delle repliche create utilizzando
describe-table
.aws dynamodb describe-table --table-name Music --region us-east-2
-
Per verificare che la replica sta funzionando come dovrebbe, aggiungere un nuovo elemento alla tabella
Music
nella regione Stati Uniti orientali (Ohio).aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
-
Attendere alcuni secondi, quindi verificare se l'elemento è stato replicato correttamente nelle regioni Stati Uniti orientali (Virginia settentrionale) e Europa (Irlanda).
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-1
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region eu-west-1
-
Eliminare la tabella di replica nella regione Europa (Irlanda).
aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Delete": { "RegionName": "eu-west-1" } } ] }'
Il seguente esempio di codice Java crea una tabella Music
nella regione Europa (Irlanda), quindi crea una replica nella regione Asia Pacifico (Seoul).
package com.amazonaws.codesamples.gtv2
import java.util.logging.Logger;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.BillingMode;
import com.amazonaws.services.dynamodbv2.model.CreateReplicationGroupMemberAction;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest;
import com.amazonaws.services.dynamodbv2.model.GlobalSecondaryIndex;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.Projection;
import com.amazonaws.services.dynamodbv2.model.ProjectionType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughputOverride;
import com.amazonaws.services.dynamodbv2.model.ReplicaGlobalSecondaryIndex;
import com.amazonaws.services.dynamodbv2.model.ReplicationGroupUpdate;
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
import com.amazonaws.services.dynamodbv2.model.StreamSpecification;
import com.amazonaws.services.dynamodbv2.model.StreamViewType;
import com.amazonaws.services.dynamodbv2.model.UpdateTableRequest;
import com.amazonaws.waiters.WaiterParameters;
public class App
{
private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
public static void main( String[] args )
{
String tableName = "Music";
String indexName = "index1";
Regions calledRegion = Regions.EU_WEST_1;
Regions destRegion = Regions.AP_NORTHEAST_2;
AmazonDynamoDB ddbClient = AmazonDynamoDBClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider("default"))
.withRegion(calledRegion)
.build();
LOGGER.info("Creating a regional table - TableName: " + tableName +", IndexName: " + indexName + " .....");
ddbClient.createTable(new CreateTableRequest()
.withTableName(tableName)
.withAttributeDefinitions(
new AttributeDefinition()
.withAttributeName("Artist").withAttributeType(ScalarAttributeType.S),
new AttributeDefinition()
.withAttributeName("SongTitle").withAttributeType(ScalarAttributeType.S))
.withKeySchema(
new KeySchemaElement().withAttributeName("Artist").withKeyType(KeyType.HASH),
new KeySchemaElement().withAttributeName("SongTitle").withKeyType(KeyType.RANGE))
.withBillingMode(BillingMode.PAY_PER_REQUEST)
.withGlobalSecondaryIndexes(new GlobalSecondaryIndex()
.withIndexName(indexName)
.withKeySchema(new KeySchemaElement()
.withAttributeName("SongTitle")
.withKeyType(KeyType.HASH))
.withProjection(new Projection().withProjectionType(ProjectionType.ALL)))
.withStreamSpecification(new StreamSpecification()
.withStreamEnabled(true)
.withStreamViewType(StreamViewType.NEW_AND_OLD_IMAGES)));
LOGGER.info("Waiting for ACTIVE table status .....");
ddbClient.waiters().tableExists().run(new WaiterParameters<>(new DescribeTableRequest(tableName)));
LOGGER.info("Testing parameters for adding a new Replica in " + destRegion + " .....");
CreateReplicationGroupMemberAction createReplicaAction = new CreateReplicationGroupMemberAction()
.withRegionName(destRegion.getName())
.withGlobalSecondaryIndexes(new ReplicaGlobalSecondaryIndex()
.withIndexName(indexName)
.withProvisionedThroughputOverride(new ProvisionedThroughputOverride()
.withReadCapacityUnits(15L)));
ddbClient.updateTable(new UpdateTableRequest()
.withTableName(tableName)
.withReplicaUpdates(new ReplicationGroupUpdate()
.withCreate(createReplicaAction.withKMSMasterKeyId(null))));
}
}