本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
高效大量操作
適用情境
這些模式可協助在 DynamoDB 項目上高效執行大量更新。
DynamoDB-shell 不支援用於生產環境。
TransactWriteItems– 最多可執行 100 個有或無條件的個別更新,並以「全有或全無」的 ACID 套件方式運行取捨 – 額外消耗輸送量,每 1 KB 寫入需耗用 2 WCUs。
PartiQL
BatchExecuteStatement– 最多可執行 25 個有或無條件的更新。取捨 – 需額外邏輯以 25 筆為一批分配請求。
AWS Step Functions – 開發人員熟悉的速率限制大量操作 AWS Lambda。
取捨 – 執行時期與速率限制成反比。受限於 Lambda 函式的最大逾時時間。此功能意味著讀取與寫入之間的資料變更可能被覆寫。如需更多資訊,請參閱使用 Amazon EMR 回填 Amazon DynamoDB 存留時間屬性:第 2 部分
。 -
AWS Glue 和 Amazon EMR – 具有受管平行處理的速率限制大量操作。對於非即時的應用程式或更新,這些選項可在背景執行,僅耗用少量輸送量。兩項服務皆透過 emr-dynamodb-connector 執行 DynamoDB 操作。這些服務會先進行大量讀取,再進行大量寫入更新項目,並可設定速率限制。
取捨 – 執行時期與速率限制成反比。功能包括可覆寫讀取與寫入期間發生的資料變更。您無法從全域次要索引 (GSIs) 讀取資料。請參閱使用 Amazon EMR 回填 Amazon DynamoDB 存留時間屬性:第 2 部分
。 -
DynamoDB Shell – 透過類似 SQL 的查詢執行具速率限制的大量操作。您可從 GSIs 讀取資料以提升效率。
取捨 – 執行時期與速率限制成反比。請參閱在 DynamoDB Shell 中進行速率限制大量操作
。
使用此模式
大量更新可能顯著影響成本,特別是在使用隨需輸送量模式時。使用佈建輸送量模式時,速度與成本之間需要權衡。將 rate-limit 參數設定得過於嚴格,可能會造成處理時間過長。您可以根據平均項目大小和速率限制,大致估算更新速度。
或者,您可以根據更新程序的預期持續時間與平均項目大小,估算所需的輸送量。每個模式附帶的部落格參考說明使用該模式的策略、實作方式與限制。如需更多資訊,請參閱使用 Amazon DynamoDB 進行具成本效益的大量處理
可使用多種方法對即時 DynamoDB 資料表執行大量更新。適合的方法取決於 ACID 與/或冪等性需求、更新項目數量,以及對 API 的熟悉程度。必須同時考量成本與時間的權衡,上述多數方法皆可設定速率限制以控制大量更新任務的輸送量。