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

在 DynamoDB 中处理时间序列数据的最佳实践

DynamoDB 中的一般设计准则建议将使用的表的数量保持最小值。对于大多数应用程序,只需单个表即可。但是,对于时间序列数据,您通常可以每个时间段为每个应用程序使用一个表,以最佳方式进行处理。

时间序列数据的设计模式

考虑您想跟踪大量活动的典型时间序列场景。您的写入访问模式即要记录的所有事件都具有今日日期。您的读取访问模式读取今日事件的频率最高,读取昨日事件的频率小很多,而读取更早事件的频率是最低的。一种处理方式是将当前日期和时间构建成主键。

以下设计模式通常会高效地处理此类场景:

  • 每个时间段创建一个表,并为表预置所需的读取和写入容量以及所需的索引。

  • 在每个时间段结束之前,为下一个时间段预构建表。在当前时间段结束时,事件流量将定向至新表。可以为这些表分配名称以指明这些表所记录的时间段。

  • 只要表不再被写入,就将其预置的写入容量降至较低的值(例如,1 WCU)并预置适当的读取容量。随着时间推移,降低早期表的预置读取容量。您可以选择存档或删除极少或根本不需要其内容的表。

这种做法的目的是将所需的资源分配给承受最高流量的当前时间段,同时降低使用不活跃的旧表的预置资源,从而节省成本。根据您的业务需求,您可能需要考虑写入分片,以将流量均匀地分配到逻辑分区键。有关更多信息,请参阅使用写入分片均匀分发工作负载

时间序列表示例

以下是一个时间序列数据示例,其中,当前表预置了较高的读取/写入容量,而较早的表将缩小,因为它们不常得到访问:


        大量时间序列数据的表架构。