在 .NET 中處理 DynamoDB 資料表 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 .NET 中處理 DynamoDB 資料表

您可以使用AWS SDK for .NET建立、更新及刪除資料表;列出您帳戶中的所有資料表;或是取得特定資料表的相關資訊。

下列是使用 AWS SDK for .NET 執行 Amazon DynamoDB 資料表操作的一般步驟。

  1. 建立 AmazonDynamoDBClient 類別的執行個體 (用戶端)。

  2. 透過建立對應的請求物件,為操作提供必要及選用的參數。

    例如,建立 CreateTableRequest 物件來建立資料表,以及建立 UpdateTableRequest 物件來更新現有的資料表。

  3. 執行您在前一步驟中建立之用戶端所提供的適當方法。

注意

本節中的範例不使用 .NET Core,因為它不支援同步方法。如需詳細資訊,請參閱適用於 .NET 的 AWS 非同步 API

建立資料表

若要建立資料表,您必須提供資料表名稱、其主索引鍵,以及佈建的輸送量數值。

使用AWS SDK for .NET低階 API 建立資料表
  1. 建立 AmazonDynamoDBClient 類別的執行個體。

  2. 建立 CreateTableRequest 類別的執行個體,以提供請求資訊。

    您必須提供資料表名稱、主索引鍵,以及佈建的輸送量數值。

  3. 以參數形式提供請求物件,以便執行 AmazonDynamoDBClient.CreateTable 方法。

下列 C# 範例示範前述步驟。此範例會建立使用 Id 做為主索引鍵的資料表 (ProductCatalog) 以及一組佈建輸送量值。您可以視您應用程式的需求,使用 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 建立資料表,並將資料表狀態設定為 ACTIVECreateTable 回應包含提供必要資料表資訊的 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 中的服務、帳戶和資料表配額

使用AWS 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 刪除資料表。

使用AWS 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);

列出資料表

若要使用 AWS 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);