Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

处理表:Java

您可以使用AWS SDK for Java创建、更新和删除表,以及列出您账户中所有的表或者获取有关某个特定表的信息。

下面是使用 AWS SDK for Java 文档 API 执行表操作的常见步骤。

创建表

要创建表,您必须提供表名称、表的主键以及预置的吞吐量值。下面的 代码段会创建一个将数字型属性 Id 用作主键的示例表。

使用 AWS SDK for Java API 创建表:

  1. 创建 DynamoDB 类的实例。

  2. 实例化 CreateTableRequest 以提供请求信息。

    您必须提供表名称、属性定义、键架构以及预置吞吐量值。

  3. 以参数形式提供请求数据元,以执行 createTable 方法。

以下 代码段执行的就是上述步骤。

Copy
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();

在 DynamoDB 创建表并且将其状态设置为 ACTIVE 之前,表将无法使用。createTable 请求返回 Table 对象,您可以用它来获取有关表的更多信息。

Copy
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());

您可以随时调用客户端的 describe 方法来获取表信息。

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

更新表

您可以仅更新现有表的预置吞吐量值。您可能需要根据应用程序的要求更新这些值。

注意

您可以根据需要多次增加吞吐容量,并在单个 UTC 日历日内将每个表的吞吐容量减少最多 九次。有关更多信息,请参阅 DynamoDB 中的限制

使用 AWS SDK for Java API 更新表:

  1. 创建 Table 类的实例。

  2. 创建 ProvisionedThroughput 类的实例以提供新吞吐量值。

  3. 提供 ProvisionedThroughput 实例作为参数来执行 updateTable 方法。

以下 代码段执行的就是上述步骤。

Copy
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();

删除表

删除表:

  1. 创建 Table 类的实例。

  2. 创建一个 DeleteTableRequest 类的实例,并提供您想要删除的表的名称。

  3. 提供 Table 实例作为参数来执行 deleteTable 方法。

以下 代码段执行的就是上述步骤。

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

列出表

要列出您账户中的表,请创建 DynamoDB 的实例并执行 listTables 方法。ListTables 操作无需使用参数。

Copy
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()); }