亚马逊AWS官方博客

创建新年的解决方案:关注 Amazon DynamoDB 最佳实践


新年伊始,我们希望您遵循Amazon DynamoBD的最佳实践来创建您的解决方案。循这些最佳实践,可以帮助您在使用 DynamoDB 时最大限度地提高性能和降低吞吐量成本。单击以下链接,了解关于 DynamoDB 文档中每种最佳实践的更多信息。

  • 有效的设计和使用分区键 唯一标识DynamoDB 表中每个项目的主键可能是简单结构(仅分区键)或复合结构(分区键与排序键的组合)。您应针对跨表中所有逻辑分区键及表的二级索引的统一活动来设计应用程序。。您还可以获得突增容量自适应容量写入分片方面的优势。
  • 使用排序键组织数据 设计良好的排序键将相关信息集中在一起,可以对其进行高效查询。利用组合排序键,可以在数据中定义可在任何层次结构级别查询的层次 (一对多) 关系。您也可以将排序键用于版本控制。
  • 高效使用二级索引 二级索引通常对于支持应用程序所需的查询模式至关重要。但是,低效使用二级索引会增加不必要的成本,并会降低性能。了解如何使用稀疏索引,以及如何使用全局二级索引来实现具体化聚合查询创建最终一致的副本
  • 了解如何存储大型项目和属性 DynamoDB 当前会限制存储在表中的每个项目的大小。如果您的应用程序需要在一个项目中存储超出大小限制的数据,则可以尝试压缩一个或多个大属性,或将该项目拆分为多个项目(通过排序键有效索引)。您还可以将项目作为对象存储在 Amazon S3 中,并将 Amazon S3 对象标识符存储在 DynamoDB 项目中。
  • 每个时段每个应用程序使用一个表来处理时间序列数据 根据 DynamoDB 中的常规设计原则,建议将使用的表数量保持在最低限度。对于大多数应用程序,只需要一个表。但是,对于时间序列数据,每个应用程序每个时段可以使用一个表。
  • 管理多对多关系 邻接表是设计模式的一部分,它对于在DynamoDB中建模多对多关系非常有用。一般来说,它们提供了一种在 DynamoDB 中表示图形数据(节点和边)的方法。
  • 实施混合数据库系统 在某些情况下,从一个或多个关系型数据库管理系统迁移到 DynamoDB 可能并非理想之选。在这些情况下,最好创建一个混合系统。
  • 在 DynamoDB 中对关系数据进行建模 当您的企业需要对高流量查询做出低延迟响应时,利用 NoSQL 系统通常具有技术和经济意义的优势。DynamoDB 避免了相关系统的扩展性限制。
  • 高效查询和扫描数据 请遵循文档中的提示,了解适用于扫描和查询的场景, 以及如何利用并行扫描的优势。
  • 使用全局表在 AWS 区域之间复制表数据 DynamoDB 全局表提供一个完全托管的解决方案,可以部署多区域、多主数据库,无需构建和维护您自己的复制解决方案。在创建全局表时,请指定您希望表可用的 AWS 区域。DynamoDB将执行所有必要的任务以在这些区域创建相同的表并将正在进行中的数据变更传播到所有表中。
  • 观看 AWS re:Invent 2019 大会上 Rick Houlihan 的“DynamoDB 高级设计模式”研讨会 许多人告诉我们,观看 Rick 的研讨会(即使他们不得不看五遍,因为里面有很多东西要消化),改变了他们理解和使用 DynamoDB 的方式。每年这都是最受关注的dynamodb相关的研讨会,是我们极力推荐的对象。

遵循今年的 DynamoDB 最佳实践,实现最佳性能和最低成本! 如果您对 DynamoDB 最佳实践有疑问或反馈,请在 Twitter 上通过 @DynamoDB 告诉我们。

本篇作者

Craig Liebendorfer

是 Amazon Web Services 的高级技术编辑。他还负责 @DynamoDB 帐户的运营。