本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
)。根據您指定的 ReadCapacityUnits
和 WriteCapacityUnits
值,可能需要一些時間才能建立資料表。這些項目的較大值需要 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
TableStatus
從 CREATING
變更為 ACTIVE
之後,就表示資料表準備就緒可供使用。
注意
如果您在 CreateTable
請求之後立即發出 DescribeTable
請求,則 DynamoDB 可能會傳回錯誤 (ResourceNotFoundException
)。原因是 DescribeTable
使用最終一致查詢,而且您資料表的中繼資料目前可能無法使用。請等待幾秒,然後再次重試 DescribeTable
請求。
為計算費用,您的 DynamoDB 儲存費用包含 100 個位元組的個別項目成本。(如需詳細資訊,請前往 DynamoDB 定價DescribeTable
操作使用。
更新資料表
UpdateTable
操作可讓您執行下列其中一項:
-
修改資料表的佈建輸送量設定 (針對佈建模式的資料表)。
-
變更資料表的讀取/寫入容量模式。
-
在資料表中修改全域次要索引 (請參閱在 DynamoDB 中使用全域次要索引)。
-
啟用或停用資料表上的 DynamoDB Streams (請參閱 DynamoDB Streams 的變更資料擷取)。
範例
下列 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 支援資料表建立時間的刪除保護屬性,且 UpdateTable
API支援變更現有資料表的刪除保護屬性。
注意
-
如果刪除 AWS 帳戶,該帳戶的所有資料,包括資料表的資料仍會在 90 天內刪除。
-
如果 DynamoDB 喪失用來加密資料表的客戶受管金鑰存取權,它仍會封存資料表。存檔涉及製作資料表的備份和刪除原始資料表。
列出資料表名稱
ListTables
操作會傳回目前 AWS 帳戶和區域的 DynamoDB 資料表名稱。
範例
下列 AWS CLI 範例示範如何列出 DynamoDB 資料表名稱。
aws dynamodb list-tables
說明佈建輸送量配額
DescribeLimits
操作會傳回目前 AWS 帳戶和區域的目前讀取和寫入容量配額。
範例
下列 AWS CLI 範例示範如何描述目前佈建的輸送量配額。
aws dynamodb describe-limits
輸出顯示目前 AWS 帳戶和區域的讀取和寫入容量單位配額上限。
如需這些配額以及如何請求提高配額的詳細資訊,請參閱輸送量預設配額。