[英]Update Multiple Items in DynamoDB without exceeding Maximum Throughput
我正在嘗試為列表中的每個條目對我的 DynamoDB 執行update_item
。 在列表中,列是id
和total_sales
,其中總銷售額每小時更新一次。 這個想法是解析列表並更新每個項目(與列表中的 id 相關聯)並更新total_sales
值,但列表中有超過 5000 個條目,它超過了我的最大吞吐量。 有沒有比簡單地這樣做更有效的方法
def write_to_dynamo(id, total_sales):
response = table.update_item(
Key={
'id': id
},
UpdateExpression="set stats.revenue = :r",
ExpressionAttributeValues={
':r': total_sales
},
ReturnValues="UPDATED_NEW"
)
return response
def main():
for item in lst:
write_to_dynamo(item.id, item.total_sales)
在 DynamoDB 本身中 -沒有。
如果要使用UpdateItem
,則需要進行單獨的 API 調用。
如果你想替換一個項目,有BatchWriteItem
,它捆綁請求,但即使這樣也會消耗相同的吞吐量。
您可以將更改寫入 SQS 隊列,然后讓 Lambda Function 響應該隊列並更新項目。 當您超過吞吐量時,此設置會處理重試,並且可以使您的設置更具彈性,但仍會消耗相同的吞吐量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.