2016-09-09 37 views
0

我有一個帶有大約2800萬條記錄的發電機的活動表。
表中有許多GSI,我想要更改爲LSI,但LSI只能在創建表時創建。更改一個大的dynamodb表使用LSIs而不是GSI

我需要創建一個新表並以最少的停機時間遷移數據。我想我會做以下幾點: 用正確的索引創建新表。 更新代碼以將記錄寫入舊錶和新表。開始時,請記下第一條記錄的時間戳。 編寫一個簡單的流程,在我的第一次約會之前爲創建日期的任何事物同步現有數據。
我將不得不添加一個鎖定字段到新表,以防止現有記錄更新時的競爭條件。 當它全部同步後,我們會換用新表格。

我認爲這樣會起作用,但它相當複雜,並且容易出錯。有沒有人找到更好的方法來做到這一點?

回答

0

這裏有一個辦法:

(讓我們參考下表以GSIS作爲oldTable與LSI的作爲newtable的新表)。

  1. 用所需的LSI創建新表。
  2. 爲oldTable創建一個DynamoDB tirgger,這樣對於每個到oldTable的新記錄都將相同的記錄插入到newTable中。 (此邏輯需要位於AWS Lambda中)。
  3. 使您的應用程序指向newTable。
  4. 將oldTable中的所有記錄遷移到newTable。
+0

我不知道觸發器,我會試驗和更新。 – mark

相關問題