DynamoDB 資料表上的基本操作 - Amazon DynamoDB

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

DynamoDB 資料表上的基本操作

與其他資料庫系統類似,Amazon DynamoDB 會將資料存放在資料表中。您可使用幾個基本操作來管理您的資料表。

建立資料表

使用 CreateTable 操作在 Amazon DynamoDB 中建立資料表。若要建立資料表,您必須提供以下資訊:

  • 資料表名稱 名稱必須符合 DynamoDB 命名規則,且目前 AWS 帳戶和區域必須是唯一的。例如,您可以在美國東部 (維吉尼亞北部) 建立 People 資料表,在歐洲 (愛爾蘭) 建立另一個 People 資料表。不過,這兩個資料表彼此必須完全不同。如需詳細資訊,請參閱 Amazon DynamoDB 中支援的資料類型和命名規則

  • 主索引鍵。主索引鍵可以包含一個屬性 (分割區索引鍵) 或兩個屬性 (分割區索引鍵和排序索引鍵)。您需要提供屬性名稱、資料類型和每個屬性的角色:HASH (適用於分割區索引鍵) 和 RANGE (適用於排序索引鍵)。如需詳細資訊,請參閱 主索引鍵

  • 輸送量設定 (針對佈建的資料表)。如果使用佈建的模式,您必須指定資料表的讀取和寫入初始輸送量設定。您稍後可以修改這些設定,或讓 DynamoDB Auto Scaling 功能來管理設定。如需詳細資訊,請參閱 DynamoDB 佈建容量模式使用 DynamoDB Auto Scaling 功能自動管理輸送容量

範例 1:建立佈建的資料表

下列 AWS CLI 範例示範如何建立資料表 (Music)。主索引鍵包含 Artist (分割區索引鍵) 和 SongTitle (排序索引鍵),而且它們每一個的資料類型都是 String。此資料表的輸送上限是 10 個讀取容量單位和 5 個寫入容量單位。

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5

CreateTable 操作會傳回資料表的中繼資料,如下所示。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

TableStatus 元素指出資料表的目前狀態 (CREATING)。根據您指定的 ReadCapacityUnitsWriteCapacityUnits 值,可能需要一些時間才能建立資料表。這些項目的較大值需要 DynamoDB 為資料表配置更多資源。

範例 2:建立隨需資料表

使用隨需模式來建立相同的資料表 Music

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode=PAY_PER_REQUEST

CreateTable 操作會傳回資料表的中繼資料,如下所示。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
重要

呼叫隨需資料表上的 DescribeTable 時,讀取容量單位與寫入容量單位設為 0。

範例 3:使用 DynamoDB 標準的不常存取資料表類別建立資料表

若要建立相同的 Music 資料表,使用 DynamoDB 標準–不常存取資料表類別。

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --table-class STANDARD_INFREQUENT_ACCESS

CreateTable 操作會傳回資料表的中繼資料,如下所示。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableClassSummary": { "LastUpdateDateTime": 1542397215.37, "TableClass": "STANDARD_INFREQUENT_ACCESS" }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

說明資料表

若要檢視資料表的詳細資訊,請使用 DescribeTable 操作。您必須提供資料表名稱。DescribeTable 中輸出的格式與 CreateTable 相同。它包含建立資料表的時間戳記、其索引鍵結構描述、其佈建的輸送量設定、其預估大小以及任何現有的次要索引。

重要

呼叫隨需資料表上的 DescribeTable 時,讀取容量單位與寫入容量單位設為 0。

範例
aws dynamodb describe-table --table-name Music

TableStatusCREATING 變更為 ACTIVE 之後,就表示資料表準備就緒可供使用。

注意

如果您在 CreateTable 請求之後立即發出 DescribeTable 請求,則 DynamoDB 可能會傳回錯誤 (ResourceNotFoundException)。原因是 DescribeTable 使用最終一致查詢,而且您資料表的中繼資料目前可能無法使用。請等待幾秒,然後再次重試 DescribeTable 請求。

為計算費用,您的 DynamoDB 儲存費用包含 100 個位元組的個別項目成本。(如需詳細資訊,請前往 DynamoDB 定價。) 個別項目的這個額外 100 個位元組不會用於容量單位計算,或不供 DescribeTable 操作使用。

更新資料表

UpdateTable 操作可讓您執行下列其中一項:

範例

下列 AWS CLI 範例示範如何修改資料表的佈建輸送量設定。

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
注意

當您發出 UpdateTable 請求時,資料表的狀態會從 AVAILABLE 變更為 UPDATING。資料表在處於 UPDATING 時仍然完全可供使用。此程序完成時,資料表狀態會從 UPDATING 變更為 AVAILABLE

範例

下列 AWS CLI 範例示範如何將資料表的讀取/寫入容量模式修改為隨需模式。

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

刪除資料表

您可以使用 DeleteTable 操作來移除未使用的資料表。刪除資料表是無法復原的操作。

範例

下列 AWS CLI 範例示範如何刪除資料表。

aws dynamodb delete-table --table-name Music

當您發出 DeleteTable 請求時,資料表的狀態會從 ACTIVE 變更為 DELETING。根據使用的資源 (例如資料表中所存放的資料,以及資料表上的任何串流或索引),可能需要一些時間才能刪除資料表。

DeleteTable 操作結束時,資料表就不再存在於 DynamoDB 中。

使用刪除保護

您可以使用刪除保護屬性,來保護表格免於遭到意外刪除。為資料表啟用此屬性有助於確保管理員在常態資料表管理操作期間,不會意外刪除資料表。這將有助於防止您的正常業務營運中斷。

資料表擁有者或授權管理員可控制每個資料表的刪除保護內容。每個資料表的刪除保護屬性預設是關閉的。這包括全域複本,以及從備份還原的資料表。當資料表的刪除保護已停用時,任何獲得 Identity and Access Management (IAM) 政策授權的使用者都可以刪除資料表。資料表啟用刪除保護時,沒有人可將其刪除。

若要變更此設定,請移至資料表的其他設定,瀏覽至刪除保護面板,然後選取啟用刪除保護

DynamoDB 主控台、、APICLI/SDK 和 支援刪除保護屬性 AWS CloudFormation。CreateTable API 支援資料表建立時間的刪除保護屬性,且 UpdateTableAPI支援變更現有資料表的刪除保護屬性。

注意
  • 如果刪除 AWS 帳戶,該帳戶的所有資料,包括資料表的資料仍會在 90 天內刪除。

  • 如果 DynamoDB 喪失用來加密資料表的客戶受管金鑰存取權,它仍會封存資料表。存檔涉及製作資料表的備份和刪除原始資料表。

列出資料表名稱

ListTables 操作會傳回目前 AWS 帳戶和區域的 DynamoDB 資料表名稱。

範例

下列 AWS CLI 範例示範如何列出 DynamoDB 資料表名稱。

aws dynamodb list-tables

說明佈建輸送量配額

DescribeLimits 操作會傳回目前 AWS 帳戶和區域的目前讀取和寫入容量配額。

範例

下列 AWS CLI 範例示範如何描述目前佈建的輸送量配額。

aws dynamodb describe-limits

輸出顯示目前 AWS 帳戶和區域的讀取和寫入容量單位配額上限。

如需這些配額以及如何請求提高配額的詳細資訊,請參閱輸送量預設配額