本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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
資料表。此資料表中的項目會存放項目價格、描述、書籍作者和其他產品維度的資訊。如果您希望存放的每個產品影像太大而無法在項目中容納,您可以將影像存放在 Amazon S3 而不是在 DynamoDB 中。
實作此策略時,請注意下列各項:
-
DynamoDB 不支援跨 Amazon S3 和 DynamoDB 的交易。因此,應用程式能必須處理任何錯誤,其可能會包含清理遺棄的 Amazon S3 物件。
-
Amazon S3 會限制物件識別碼的長度。因此,您必須以不會產生過長物件識別碼或違反其他 Amazon S3 限制的方法來整理您的資料。
有關如何使用 Amazon S3 的詳細資訊,請參閱Amazon Simple Storage Service 使用者指南。