Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

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

Amazon DynamoDB 当前限制存储在表中的每个项目的大小(请参阅 DynamoDB 中的限制)。如果应用程序需要存储的项目数据超出 DynamoDB 允许的大小限制,可尝试压缩一个或多个大型属性,也可将它们作为对象存储在 Amazon Simple Storage Service (Amazon S3) 中并将 Amazon S3 对象标识符存储在 DynamoDB 项目中。

压缩大型属性值

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

例如,创建表并加载示例数据 一章中的 Reply 表中存储论坛用户写入的消息。这些用户回复可能包含长文本字符串,这些内容最适合压缩。

有关演示如何在 DynamoDB 中压缩此类消息的示例代码,请参阅:

在 Amazon S3 中存储大型属性值

如上所述,还可以利用 Amazon Simple Storage Service (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 开发人员指南

本页内容: