在 .NET 中使用 DynamoDB 表
您可以使用 Amazon SDK for .NET 创建、更新和删除表,以及列出您账户中所有的表或者获取有关某个特定表的信息。
下面是使用 Amazon SDK for .NET 执行 Amazon DynamoDB 表操作的常见步骤。
-
创建
AmazonDynamoDBClient
类(客户端)的实例。 -
通过创建对应的请求对象,为操作提供必需参数和可选参数。
例如,通过创建
CreateTableRequest
数据元来创建表,以及创建UpdateTableRequest
数据元来更新现有表。 -
调用您在前面步骤中创建的客户端提供的适当方法。
本节中的示例不适用于 .NET Core,因为它不支持同步方法。有关更多信息,请参阅适用于 .NET 的 Amazon 异步 API。
创建表
要创建表,您必须提供表名称、表的主键以及预置的吞吐量值。
使用 Amazon SDK for .NET 低级别 API 创建表
-
创建
AmazonDynamoDBClient
类的实例。 -
创建
CreateTableRequest
类实例,以提供请求信息。您必须提供表名称、主键以及预置的吞吐量值。
-
以参数形式提供请求对象,运行
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 更新表
-
创建
AmazonDynamoDBClient
类的实例。 -
创建
UpdateTableRequest
类实例,以提供请求信息。您必须提供表名称和新的预置吞吐量值。
-
以参数形式提供请求对象,运行
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 删除表
-
创建
AmazonDynamoDBClient
类的实例。 -
创建一个
DeleteTableRequest
类的实例,并提供您想要删除的表的名称。 -
以参数形式提供请求对象,运行
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);