簡體   English   中英

在不超過最大吞吐量的情況下更新 DynamoDB 中的多個項目

[英]Update Multiple Items in DynamoDB without exceeding Maximum Throughput

我正在嘗試為列表中的每個條目對我的 DynamoDB 執行update_item 在列表中,列是idtotal_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM