在 .NET 中 DynamoDB 表 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 .NET 中 DynamoDB 表

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

下面是使用 Amazon DynamoDB 表操作的常见步骤。Amazon SDK for .NET。

  1. 创建 AmazonDynamoDBClient 类(客户端)的实例。

  2. 通过创建对应的请求数据元,为操作提供必需参数和可选参数。

    例如,通过创建 CreateTableRequest 数据元来创建表,以及创建 UpdateTableRequest 数据元来更新现有表。

  3. 运行您在前面步骤中创建的客户端提供的适当方法。

注意

本节中的示例不适用于 .NET Core,因为它不支持同步方法。有关更多信息,请参阅 。Amazon适用于 .NET 的 异步 API

创建表

要创建表,您必须提供表名称、表的主键以及预置的吞吐量值。

使用Amazon SDK for .NET低级别 API 创建表

  1. 创建 AmazonDynamoDBClient 类的实例。

  2. 创建 CreateTableRequest 类实例,以提供请求信息。

    您必须提供表名称、主键以及预置的吞吐量值。

  3. 运行AmazonDynamoDBClient.CreateTable方法,以参数形式提供请求对象。

以下 C# 示例演示了上述步骤。该示例会创建一个表 (ProductCatalog),这个表将 Id 用作主键并使用预配置的一组吞吐量值。您可以根据应用程序要求,使用 UpdateTable API 更新预置的吞吐量值。

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new CreateTableRequest { TableName = tableName, AttributeDefinitions = new List<AttributeDefinition>() { new AttributeDefinition { AttributeName = "Id", AttributeType = "N" } }, KeySchema = new List<KeySchemaElement>() { new KeySchemaElement { AttributeName = "Id", KeyType = "HASH" //Partition key } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 10, WriteCapacityUnits = 5 } }; var response = client.CreateTable(request);

您必须等待 DynamoDB 创建该表并将其状态设置为ACTIVE。该 CreateTable 响应中包含 TableDescription 属性,从而提供必要的表信息。

var result = response.CreateTableResult; var tableDescription = result.TableDescription; Console.WriteLine("{1}: {0} \t ReadCapacityUnits: {2} \t WriteCapacityUnits: {3}", tableDescription.TableStatus, tableDescription.TableName, tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); string status = tableDescription.TableStatus; Console.WriteLine(tableName + " - " + status);

您也可以调用客户端的 DescribeTable 方法,随时获得表信息。

var res = client.DescribeTable(new DescribeTableRequest{TableName = "ProductCatalog"});

更新表

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

注意

您可以根据需要随时提高吞吐容量,以及使它减小到特定约束内。有关每天的吞吐量增加和减少的更多信息,请参阅Amazon DynamoDB 中的服务、账户和表配额

使用Amazon SDK for .NET低级别 API 更新表

  1. 创建 AmazonDynamoDBClient 类的实例。

  2. 创建 UpdateTableRequest 类实例,以提供请求信息。

    您必须提供表名称和新的预置吞吐量值。

  3. 运行AmazonDynamoDBClient.UpdateTable方法,以参数形式提供请求对象。

以下 C# 示例演示了上述步骤。

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ExampleTable"; var request = new UpdateTableRequest() { TableName = tableName, ProvisionedThroughput = new ProvisionedThroughput() { // Provide new values. ReadCapacityUnits = 20, WriteCapacityUnits = 10 } }; var response = client.UpdateTable(request);

删除表

按照以下步骤使用 .NET 低级 API 删除表。

使用Amazon SDK for .NET低级别 API 删除表

  1. 创建 AmazonDynamoDBClient 类的实例。

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

  3. 运行AmazonDynamoDBClient.DeleteTable方法,以参数形式提供请求对象。

以下 C# 代码示例演示了上述步骤。

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ExampleTable"; var request = new DeleteTableRequest{ TableName = tableName }; var response = client.DeleteTable(request);

列出表

要使用列出账户中的表Amazon SDK for .NET低级 API,请创建AmazonDynamoDBClient并运行ListTables方法。

这些区域有:ListTables操作无需使用参数。但是,您可以指定可选参数。例如,如果您想要通过分页限制每页中表名称的数量,可以设置 Limit 参数。这需要您创建 ListTablesRequest 对象并提供一些可选参数,如以下 C# 示例所示。在设置页面大小的同时,该请求还设置了 ExclusiveStartTableName 参数。ExclusiveStartTableName 初始为 null. 但是,在提取第一页结果之后,您必须将该参数的值设置为当前结果的 LastEvaluatedTableName 属性才能检索下一页。

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Initial value for the first page of table names. string lastEvaluatedTableName = null; do { // Create a request object to specify optional parameters. var request = new ListTablesRequest { Limit = 10, // Page size. ExclusiveStartTableName = lastEvaluatedTableName }; var response = client.ListTables(request); ListTablesResult result = response.ListTablesResult; foreach (string name in result.TableNames) Console.WriteLine(name); lastEvaluatedTableName = result.LastEvaluatedTableName; } while (lastEvaluatedTableName != null);