Utilisation des tables DynamoDB dans Java - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation des tables DynamoDB dans Java

Vous pouvez utiliser le AWS SDK for Java pour créer, mettre à jour et supprimer des tables Amazon DynamoDB, répertorier toutes les tables de votre compte ou obtenir des informations sur une table spécifique.

Création d'une table

Pour créer une table, vous devez fournir le nom de la table, sa clé primaire et les valeurs de débit approvisionné. L'exemple de code suivant crée un exemple de table qui utilise un Id d'attribut de type numérique comme clé primaire.

Pour créer un tableau à l'aide du AWS SDK for Java API
  1. Créez une instance de la classe DynamoDB.

  2. Instanciez un CreateTableRequest pour fournir les informations de demande.

    Vous devez fournir le nom de la table, les définitions d'attribut, le schéma de clé et les valeurs de débit provisionné.

  3. Exécutez la méthode createTable en fournissant l'objet de demande comme paramètre.

L'exemple de code suivant illustre les étapes précédentes.

Java 2.x
import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse; import software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest; import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement; import software.amazon.awssdk.services.dynamodb.model.KeyType; import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class CreateTable { public static void main(String[] args) { final String usage = """ Usage: <tableName> <key> Where: tableName - The Amazon DynamoDB table to create (for example, Music3). key - The key for the Amazon DynamoDB table (for example, Artist). """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String tableName = args[0]; String key = args[1]; System.out.println("Creating an Amazon DynamoDB table " + tableName + " with a simple primary key: " + key); Region region = Region.US_EAST_1; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build(); String result = createTable(ddb, tableName, key); System.out.println("New table is " + result); ddb.close(); } public static String createTable(DynamoDbClient ddb, String tableName, String key) { DynamoDbWaiter dbWaiter = ddb.waiter(); CreateTableRequest request = CreateTableRequest.builder() .attributeDefinitions(AttributeDefinition.builder() .attributeName(key) .attributeType(ScalarAttributeType.S) .build()) .keySchema(KeySchemaElement.builder() .attributeName(key) .keyType(KeyType.HASH) .build()) .provisionedThroughput(ProvisionedThroughput.builder() .readCapacityUnits(10L) .writeCapacityUnits(10L) .build()) .tableName(tableName) .build(); String newTable; try { CreateTableResponse response = ddb.createTable(request); DescribeTableRequest tableRequest = DescribeTableRequest.builder() .tableName(tableName) .build(); // Wait until the Amazon DynamoDB table is created. WaiterResponse<DescribeTableResponse> waiterResponse = dbWaiter.waitUntilTableExists(tableRequest); waiterResponse.matched().response().ifPresent(System.out::println); newTable = response.tableDescription().tableName(); return newTable; } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } return ""; } }
Java
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); List<AttributeDefinition> attributeDefinitions= new ArrayList<AttributeDefinition>(); attributeDefinitions.add(new AttributeDefinition().withAttributeName("Id").withAttributeType("N")); List<KeySchemaElement> keySchema = new ArrayList<KeySchemaElement>(); keySchema.add(new KeySchemaElement().withAttributeName("Id").withKeyType(KeyType.HASH)); CreateTableRequest request = new CreateTableRequest() .withTableName(tableName) .withKeySchema(keySchema) .withAttributeDefinitions(attributeDefinitions) .withProvisionedThroughput(new ProvisionedThroughput() .withReadCapacityUnits(5L) .withWriteCapacityUnits(6L)); Table table = dynamoDB.createTable(request); table.waitForActive();

La table n'est pas prête à être utilisée tant que DynamoDB ne l'a pas créée et n'a pas défini son statut sur. ACTIVE La demande createTable retourne un objet Table que vous pouvez utiliser pour obtenir plus d'informations sur la table.

Exemple
TableDescription tableDescription = dynamoDB.getTable(tableName).describe(); System.out.printf("%s: %s \t ReadCapacityUnits: %d \t WriteCapacityUnits: %d", tableDescription.getTableStatus(), tableDescription.getTableName(), tableDescription.getProvisionedThroughput().getReadCapacityUnits(), tableDescription.getProvisionedThroughput().getWriteCapacityUnits());

Vous pouvez appeler la méthode describe du client pour obtenir les informations de table à tout moment.

Exemple
TableDescription tableDescription = dynamoDB.getTable(tableName).describe();

Mise à jour d'une table

Vous pouvez mettre à jour uniquement les valeurs de débit approvisionné d'une table existante. Selon les exigences de votre application, vous pourrez avoir besoin de mettre à jour ces valeurs.

Note

Pour plus d'informations sur les augmentations et réductions de débit par jour, consultez Quotas de service, de compte et de table dans Amazon DynamoDB.

Pour mettre à jour un tableau à l'aide du AWS SDK for Java API
  1. Créez une instance de la classe Table.

  2. Créez une instance de la classe ProvisionedThroughput pour fournir les nouvelles valeurs de débit.

  3. Exécutez la méthode updateTable en fournissant l'instance ProvisionedThroughput comme paramètre.

L'exemple de code suivant illustre les étapes précédentes.

Exemple
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); Table table = dynamoDB.getTable("ProductCatalog"); ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput() .withReadCapacityUnits(15L) .withWriteCapacityUnits(12L); table.updateTable(provisionedThroughput); table.waitForActive();

Suppression d'une table

Pour supprimer un tableau à l'aide du AWS SDK for Java API
  1. Créez une instance de la classe Table.

  2. Créez une instance de la classe DeleteTableRequest et fournissez le nom de la table que vous voulez supprimer.

  3. Exécutez la méthode deleteTable en fournissant l'instance Table comme paramètre.

L'exemple de code suivant illustre les étapes précédentes.

Exemple
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); Table table = dynamoDB.getTable("ProductCatalog"); table.delete(); table.waitForDelete();

Liste des tables

Pour répertorier les tables de votre compte, créez une instance de DynamoDB et exécutez la méthode listTables. L'opération ListTables ne requiert aucun paramètre.

Exemple
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); TableCollection<ListTablesResult> tables = dynamoDB.listTables(); Iterator<Table> iterator = tables.iterator(); while (iterator.hasNext()) { Table table = iterator.next(); System.out.println(table.getTableName()); }