簡體   English   中英

涉及嵌套屬性時如何減少 DynamoDB GSI 項目大小

[英]how to reduce DynamoDB GSI item size when nested attributes are involved

DynamoDB 將查詢響應大小限制為 1MB,因此為了最大化每個查詢返回的項目數,我想減少單個項目的大小。 由於我通過 GSI 進行查詢,因此一種自然的方法是減少投影的屬性數量。 問題是我需要的一些屬性是嵌套屬性而不是頂級屬性。 包括頂級屬性將使 GSI 中的項目條目太大。

我知道無法在 GSI 中投影嵌套屬性。 是否有任何解決方法可以減少項目大小,同時允許我在單個查詢中訪問嵌套屬性?

首先,我想說您的第一個假設,即 DynamoDB Query限制為 1MB,是不正確的。 事實上, Query將在讀取 1MB 數據后返回結果,但您可以繼續獲取下一個結果 - 這個過程稱為分頁 請參閱Query文檔,其中清楚地說明了如何執行此操作。

如果盡管了解了這一點,您仍然只想檢索每個項目的一部分而不是整個項目,這很容易做到 - 使用ProjectionExpression 如果您在Query期間傳遞ProjectionExpression ,它將僅返回部分檢索到的項目。 它甚至允許您只返回嵌套屬性的一部分,就像您想要的那樣。

但請注意,即使您只取回大件物品的小件,您仍需為取回整件物品付費 這是使用ProjectionExpression無法獲得的 GSI 的好處 - 您不會獲得更便宜的檢索。 此外,它不會幫助您開始單頁查詢,因為 1MB 頁面截斷發生在項目大小級別,而不是返回的數據長度級別。 所以你仍然需要實現分頁,而不是假設一個頁面總是足夠的。

暫無
暫無

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

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