2017-10-21 98 views
1

我是nosql/DynamoDB的新手。如何更新DynamoDB中的所有記錄?

我有〜10 000容器項記錄的列表,其被每6小時更新:

[ 
    { containerId: '1a3z5', items: ['B2a3, Z324, D339, M413'] }, 
    { containerId: '42as1', items: ['YY23, K132'] }, 
    ... 
] 

(主鍵=數據筒)

  1. 它是可行的只需刪除表,並重新創建新的值?

  2. 或者我應該循環遍歷新列表的每個項目,並有條件地更新/寫入/刪除當前的DynamoDB記錄(使用批處理)?

回答

1

對於這種情況批量更新是更好的方法。你有兩種情況:

  • 如果你只需要更新某些記錄,而不是批量更新更高效。您可以掃描整個表格並迭代思考記錄並僅更新某些記錄。
  • 如果您需要每6小時更新一次所有記錄,批量更新將更加高效,因爲如果您刪除表並重新創建表,那也意味着您必須重新創建索引,這不是一個非常快的過程。在重新創建表格之後,您仍然需要執行插入操作,同時您必須將所有記錄保存在另一個數據庫或內存中。其中,刪除整個表

一種情形就是一個很好的方法,如果你需要數千甚至更多的記錄從表中刪除所有數據,比其更快的重建表,不是刪除儘管API的所有記錄。

還有一個建議您考慮過替代方案,因爲您的問題看起來不像DynamoDB的一個好用例。例如,MongoDB和Cassandra支持通過開箱即用的查詢進行更新。

+0

感謝您的回覆。 您可能是正確的,DynamoDB不適合此用例。 基本上我緩存另一個數據庫(我從中獲取數據的API)的結果。所以現在我想可能最好使用Amazon ElastiCache來存儲數據。你怎麼看? – T1000

+0

dynamo似乎不支持批量更新,所以他需要執行批量寫入,所以首先他需要讀取所有項目 – Yerken

相關問題