簡體   English   中英

在 DynamoDB 中更新批量數據而不是掃描和查詢的最有效方法是什么

[英]what is the most efficient way to update bulk data inside DynamoDB rather than scan and query

我有一個包含大量類別鍵的表。 我想通過批量請求(例如 update key#1, key#3 )更新其中一些類別,表架構如下:

PK SK
鍵#1 名字#1
鍵#2 姓名#2
鍵#4 姓名#4

如您所見,表中沒有鍵#3。 我想根據我的批量請求編寫一個高效的查詢來更新 (key#1, key#3)。
所以我想要最有效的方法來做到這一點,同時我不希望我的更新失敗而不被注意到。

  • 我知道一種方法是執行掃描操作以查看表是否包含我的數組,這根本沒有效率。
  • 另一個將使用循環來查詢數據庫以標記哪些鍵存在,哪些不存在。 然后嘗試更新其余的。 我也不認為這可能是個好主意。
  • 我想到的最后一件事,我認為可能可行的是,嘗試使用包含所有更新的交易項目來更新數據庫,而不檢查這些記錄是否存在。 因為我希望如果這些鍵中的任何一個更新操作失敗,這一個會返回一個錯誤。 直覺上我認為這可能是一種更有效的方式(它來自我的 SQL 背景)。

所以我想知道是否有比上述三種更有效的方法?
以及我的最新方法是否合適。
這樣做的利弊是什么?

經過大量挖掘,我發現沒有直接的解決方案。 但我們可以使用條件表達式並利用本地編程語言的多線程、多處理等類似功能以某種方式模擬它。

這是我發現的:

  • 實現這一點的方法是通過條件表達式,您可以在其中定義屬性的狀態或其存在狀態。
  • 問題是條件表達式不適用於 batchWriteItems,它們僅適用於 TransactWriteItems。
  • TransactWriteItems 比正常操作慢兩倍。 因此,關於性能要求,這將不適用。
  • 所以最好的方法是多次使用帶有條件表達式的單個 putItem。
  • 為了獲得最佳性能,我們可以根據我們使用的編程語言利用多線程或並發或多處理功能,並同時並行調用例如 100 個查詢(AWS-DynamoDB 可以處理)。只要確保您已經處理好吞吐量).

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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