簡體   English   中英

分區鍵與主表相同時的 DynamoDB GSI 表復制

[英]DynamoDB GSI table replication when partition key is same as the main table

情況 1) 當我們使用不同於主表分區鍵的分區鍵創建 GSI 時,發電機會在幕后將數據復制到另一個表中。 這是可以理解的。 情況 2) 如果我創建一個分區鍵與主表的 PK 相同但排序鍵不同的 GSI 怎么辦? 它會以與案例 1 相同的方式復制數據嗎? 這種情況聽起來很像 LSI,因為它們也與主表共享分區鍵。 如果我改為創建 LSI,它是否會為我節省任何數據復制以及與之相關的成本?

是的,它與案例 1 相同。一般情況下,人們應該使用 GSI,除非他們絕對需要 LSI。

LSI 的優點:

  • 啟用索引的強一致性讀取

LSI 的缺點:

  • 建表后不能增刪
  • 防止項目集合(具有相同 PK 的項目)增長超過 10 GB(因為要保持強大的讀取,項目集合必須位於同一位置)
  • 防止自適應容量跨不同分區隔離項目集合中的熱門項目(同樣,由於需要位於同一地點)
  • 增加了熱分區的可能性,因為基表寫入和 LSI 寫入總是進入同一個分區,限制了對該分區的寫入吞吐量(而 GSI 有自己的寫入容量)

說 LSI 不需要額外成本實際上是不正確的。 它們仍然消耗寫入容量,只是超出了基表的分配。

無論密鑰如何,任何 GSI 都是一個單獨的表,您需要額外付費。

LSI 並不像 GSI 那樣花錢。 特別是如果使用供應表。 此外,LSI 與基表一樣具有強一致性讀取。 GSI 只提供最終一致性讀取。

但是,使用 LSI 而不是 GSI 的缺點是,具有 LSI 的表的分區大小限制為 10GB。

換句話說,如果您嘗試在具有相同分區(又名散列)鍵的表中添加超過 10GB 的數據,如果有任何 LSI,它將失敗。

如果沒有 LSI,那么它將成功

項目集合大小限制
具有一個或多個本地二級索引的表的任何項目集合的最大大小為 10 GB。 這不適用於沒有本地二級索引的表中的項目集合,也不適用於全局二級索引中的項目集合。 只有具有一個或多個本地二級索引的表會受到影響。

因此,根據您的數據,即使 LSI 可以代替,您也應該為 GSI 付費。

暫無
暫無

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

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