在 DynamoDB 中查询最近 7 天的数据
To query Last 7 days data in DynamoDB
我的发电机数据库 table 如下:
HashKey(日期),RangeKey(时间戳)
DB存储每一天的数据(hash key)和时间戳(range key)。
现在我想查询最近7天的数据。
我可以在一个查询中执行此操作吗?或者我需要每天打电话给dbb 7次吗?数据的顺序并不重要所以,有人可以建议一个有效的查询来做到这一点。
我想你在这里有几个选择。
- BatchGetItem - BatchGetItem 操作returns 一个或多个表中的一个或多个项目的属性。您通过主键识别请求的项目。您可以指定所有 7 个主键并触发单个请求。
- 7 次调用 DynamoDB。不理想,但可以完成工作。
- 引入一个全局二级索引,将您的数据投射到您的应用程序需要的形状中。例如,您可以通过使用截断的时间戳来引入表示整周的属性:
2021-02-08 (represents the week of 02/08/21T00:00:00 - 02/14/21T12:59:59)
2021-02-16 (represents the week of 02/15/21T00:00:00 - 02/22/21T12:59:59)
我称之为“截断的时间戳”,因为我实际上忽略了时间戳的 HH:MM:SS 部分。当您在 DDB 中创建一个新项目时,您可以引入一个截断的时间戳来表示它被插入的那一周。因此,在同一周内插入的所有项目都将显示在您的 GSI 中的同一项目集合中。
- 根据您要处理的数据量,您还可以考虑使用单独的表来隔离数据范围。 AWS 有一个 article describing this pattern.
我的发电机数据库 table 如下:
HashKey(日期),RangeKey(时间戳)
DB存储每一天的数据(hash key)和时间戳(range key)。
现在我想查询最近7天的数据。 我可以在一个查询中执行此操作吗?或者我需要每天打电话给dbb 7次吗?数据的顺序并不重要所以,有人可以建议一个有效的查询来做到这一点。
我想你在这里有几个选择。
- BatchGetItem - BatchGetItem 操作returns 一个或多个表中的一个或多个项目的属性。您通过主键识别请求的项目。您可以指定所有 7 个主键并触发单个请求。
- 7 次调用 DynamoDB。不理想,但可以完成工作。
- 引入一个全局二级索引,将您的数据投射到您的应用程序需要的形状中。例如,您可以通过使用截断的时间戳来引入表示整周的属性:
2021-02-08 (represents the week of 02/08/21T00:00:00 - 02/14/21T12:59:59)
2021-02-16 (represents the week of 02/15/21T00:00:00 - 02/22/21T12:59:59)
我称之为“截断的时间戳”,因为我实际上忽略了时间戳的 HH:MM:SS 部分。当您在 DDB 中创建一个新项目时,您可以引入一个截断的时间戳来表示它被插入的那一周。因此,在同一周内插入的所有项目都将显示在您的 GSI 中的同一项目集合中。
- 根据您要处理的数据量,您还可以考虑使用单独的表来隔离数据范围。 AWS 有一个 article describing this pattern.