存储大型项目和属性的最佳实践 - Amazon DynamoDB

存储大型项目和属性的最佳实践

Amazon DynamoDB 当前限制表中存储的每个项目的大小(请参阅 Amazon DynamoDB 中的服务、账户和表配额)。如果应用程序需要存储的项目数据超出 DynamoDB 限制允许,可以尝试压缩一个或多个大型属性,或者将项目拆分为多个项目(按照排序键高效索引)。还可以将项目作为对象存储在 Amazon Simple Storage Service (Amazon S3) 中,然后将 Amazon S3 对象标识符存储在 DynamoDB 项目中。

压缩大型属性值

压缩大型属性值可以让属性值符合 DynamoDB 的项目限制,降低存储成本。压缩算法(如 GZIP 或 LZO)将产生的二进制输出可以存储在 Binary 属性类型中。

例如,为 DynamoDB 中的代码示例创建表和加载数据 章节的 Reply 表存储论坛用户写的消息。这些用户回复可能包含长文本字符串,非常适合压缩。

有关演示如何在 DynamoDB 中压缩此类消息的示例代码,请参见以下内容:

在 Amazon S3 中存储大型属性值

如前所述,还可以使用 Amazon S3 存储无法放入 DynamoDB 项目的大型属性值。可以将它们作为对象存储在 Amazon S3 中,然后将对象标识符存储在 DynamoDB 项目中。

还可使用 Amazon S3 的对象元数据支持,提供返回至 DynamoDB 中父项目的链接。将项目的主键值作为对象的 Amazon S3 元数据存储在 Amazon S3 中。这样做通常有助于维护 Amazon S3 对象。

例如,考虑 为 DynamoDB 中的代码示例创建表和加载数据 章节中的 ProductCatalog 表。此表中的项目存储商品价格、描述、书的作者以及其他产品尺寸的信息。如果要存储的每个产品的图片过大,无法放入项目,可以将图片存储在 Amazon S3 而不是 DynamoDB 中。

实施此策略时,请记住以下几点:

  • DynamoDB 不支持跨 Amazon S3 和 DynamoDB 的事务。因此,应用程序必须处理任何故障,包括清理孤立的 Amazon S3 对象。

  • Amazon S3 限制对象标识符长度。因此组织数据时必须确保,不会生成过长对象标识符或违反其他 Amazon S3 约束。

有关如何使用 Amazon S3 的更多信息,请参阅 Amazon Simple Storage Service 开发人员指南