儲存大型項目和屬性的最佳實務 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

儲存大型項目和屬性的最佳實務

Amazon DynamoDB 會將您存放在表格中的每個項目的大小限制為 400 KB (請參閱Amazon DynamoDB 中的服務、帳戶和資料表配額)。若您的應用程式需要在項目中存放比 DynamoDB 大小限制所允許大小更多的資料,您可以嘗試壓縮一或多個大型屬性,或將項目分成多個項目 (即以排序索引鍵編製索引)。您也可以將項目作為物件存放在 Amazon Simple Storage Service (Amazon S3) 中,接著在您的 DynamoDB 項目中存放 Amazon S3 物件的識別符。

最佳作法是,在撰寫項目時應該利用ReturnConsumedCapacity參數來監視和警示接近 400 KB 項目大小上限的項目大小。超過最大項目大小將導致寫入嘗試失敗。監視和警示項目大小可讓您在項目大小問題影響您的應用程式之前緩解這些問題。

壓縮大型屬性值

壓縮大型屬性值可以讓它們符合 DynamoDB 中的項目限制,並減少您的儲存成本。壓縮演算法 (例如 GZIP 或 LZO) 會產生二進位輸出,然後您可以將其儲存在項目內的Binary屬性類型中。

舉例來說,假設一個儲存由論壇使用者撰寫之郵件的表格。這些消息通常包含長字符串的文本,這些文本是壓縮的候選人。雖然壓縮可以減少項目大小,但缺點是壓縮的屬性值對於篩選沒有用處。

如需示範如何在 DynamoDB 中壓縮這類訊息的範本程式碼,請參閱以下內容:

垂直分割

處理大型項目的替代解決方案是將它們分解為較小的數據塊,並通過分區鍵值關聯所有相關項目。然後,您可以使用排序索引鍵字串來識別儲存在其旁邊的關聯資訊。這樣做,並讓多個項目由相同的分區索引鍵值分組,您正在創建一個項目集合

如需此方法的詳細資訊,請參閱:

在 Amazon S3 中存放大型屬性值

如先前所述,您可以使用 Amazon S3 來存放在 DynamoDB 項目中不符合的大型屬性值。您可以將它們作為物件存放在 Amazon S3 中,接著在您的 DynamoDB 項目中存放物件的識別符。

您也可以使用 Amazon S3 中的物件中繼資料支援,將連結提供回 DynamoDB 中的父項目。在 Amazon S3 中以物件 Amazon S3 中繼資料的形式存放項目的主索引鍵值。此通常可協助維護 Amazon S3 物件。

例如,假設在「ProductCatalog」一節中定義的 在 DynamoDB 中建立資料表,以及載入程式碼範例的資料 資料表。此資料表中的項目會存放項目價格、描述、書籍作者和其他產品維度的資訊。如果您希望存放的每個產品影像太大而無法在項目中容納,您可以將影像存放在 Amazon S3 而不是在 DynamoDB 中。

實作此策略時,請注意下列各項:

  • DynamoDB 不支援跨 Amazon S3 和 DynamoDB 的交易。因此,應用程式能必須處理任何錯誤,其可能會包含清理遺棄的 Amazon S3 物件。

  • Amazon S3 會限制物件識別碼的長度。因此,您必須以不會產生過長物件識別碼或違反其他 Amazon S3 限制的方法來整理您的資料。

有關如何使用 Amazon S3 的詳細資訊,請參閱Amazon Simple Storage Service 使用者指南