簡體   English   中英

DynamoDB表遷移-有關保持數據同步的建議?

[英]DynamoDB table migration - Advice on keeping data in sync?

我的團隊正在將幾個不同的DynamoDB表遷移到一組兩個DynamoDB表中。 本質上,我們正在更改模型,並將大量數據合並到兩個表中(現在它分布在6個表中)。

我們正在考慮使用DynamoDB流,並讓它們觸發Lambda,該Lambda處理觸發某些寫入新表的API的邏輯。 但是,我也試圖找出如何處理數據的方法,因為我們還必須將表中已有的所有內容也遷移到新表中。

我猜一個選擇是運行某種程序,該程序掃描DynamoDB表中的每個項目(其中一些大約1億個),並為每個函數調用Lambda調用的相同API,以將新表寫入其中。 但是,我不確定在遷移過程中定期將新記錄定期寫入舊表時,舊表的掃描如何處理。

有沒有人建議進行這種遷移並使事情保持同步?

謝謝!

Streams和lambda是一個很好的解決方案(作者Abhaya Chauhan) ...
(也是復數視頻

在這種情況下,請嘗試利用DynamoDB Streams和AWS Lambda根據需要重塑數據。

重構表定義的一種不錯的方法是按照以下步驟利用DynamoDB觸發器:

  1. 創建一個具有所需鍵結構,LSI,GSI的新表(讓我們稱之為NewTable)。

  2. 在原始表上啟用DynamoDB流

  3. 將Lambda關聯到Stream,這會將記錄推入NewTable。 (此Lambda應該在步驟5中清除遷移標記)
  4. [ 可選 ]在原始表上創建GSI,以加快掃描項目的速度。 確保此GSI僅具有以下屬性:主鍵和已遷移(請參閱步驟5)。
  5. 掃描上一步(或整個表)中創建的GSI,並使用以下過濾器:FilterExpression =“ attribute_not_exists(Migrated)”用遷移標志更新表中的每個項目(即:“ Migrated”:{“ S”:“ 0”},將其發送到DynamoDB流(使用UpdateItem API,以確保不會發生數據丟失)。

注意您可能需要在更新過程中增加表上的寫容量單位。

  1. Lambda將提取所有項目,修剪Migrated標志並將其推入NewTable。
  2. 遷移所有項目后,將代碼重新指向新表
  3. 刪除原來的表,並且Lambda函數一旦幸福就好。

暫無
暫無

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

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