本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 DynamoDB 的資料上傳期間,有效率地分發寫入活動
通常,當您從其他資料來源載入資料時,Amazon DynamoDB 會將表格資料分割在多個伺服器上。如果您同時將資料上傳到所有已配置的伺服器,就能獲得更好的效能。
例如,假設您想要將使用者訊息上傳至使用複合主索引鍵的 DynamoDB 資料表,該資料表將 UserID
作為分割區索引鍵並將 MessageID
作為排序索引鍵。
當您上傳資料時,您可以採取的一種方法是一個接一個地上傳每位使用者的所有訊息項目:
UserID | MessageID |
---|---|
U1 |
1 |
U1 | 2 |
U1 | ... |
U1 | …最多可達 100 |
U2 |
1 |
U2 | 2 |
U2 | ... |
U2 | …最多可達 200 |
這個案例中的問題是您沒有將寫入請求分配到跨分割區索引鍵值的 DynamoDB。您一次需要一個分割區索引鍵值並上傳其所有項目,再轉到下一個分割區索引鍵值並執行相同操作。
在幕後,DynamoDB 會跨多個伺服器分割資料表中的資料。若要充分使用為資料表佈建的所有輸送容量,您必須將工作負載分配至各分割區索引鍵值。若您將不均勻數量的上傳工作導向所有具有相同分割區索引鍵值的項目,便無法完全使用 DynamoDB 為資料表佈建的所有資源。
您可以使用排序索引鍵,從每個分割區索引鍵值載入一個項目,再從每個分割區索引鍵值載入另一個項目,依此類推:
UserID | MessageID |
---|---|
U1 |
1 |
U2 | 1 |
U3 | 1 |
... | ... |
U1 |
2 |
U2 | 2 |
U3 | 2 |
... | ... |
此序列中的每次上傳都會使用不同的分割區索引鍵值,讓更多 DynamoDB 伺服器同時處於忙碌狀態,並改善您的輸送量效能。