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

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

在 DynamoDB 中儲存大型項目與屬性的最佳實務

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

根據最佳實務,撰寫項目時應使用 ReturnConsumedCapacity 參數,以監控並警示項目大小是否接近 400 KB 上限。若超出項目大小上限,寫入作業將會失敗。DynamoDB 將回傳 ValidationException 錯誤。透過監控與警示項目大小,您可在問題影響應用程式前先行防範。

壓縮大型屬性值

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

例如,可考慮一個儲存論壇使用者訊息的資料表。這類訊息通常包含長文字字串,適合作為壓縮對象。雖然壓縮可減少項目大小,但壓縮後的屬性值無法用於篩選。

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

垂直分割

處理大型項目的另一種方法是將其拆分為較小的資料區塊,並依分割區索引鍵值將所有相關項目建立關聯。接著,您可以使用排序索引鍵字串來識別與之相關的儲存資訊。透過此作法,將多個項目依相同的分割區索引鍵值分組時,您便建立了項目集合

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

在 Amazon S3 中存放大型屬性值

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

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

例如,請參考 ProductCatalog 資料表。此資料表中的項目會存放項目價格、描述、書籍作者和其他產品維度的資訊。如果您希望存放的每個產品影像太大而無法在項目中容納,您可以將影像存放在 Amazon S3 而不是在 DynamoDB 中。

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

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

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

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