【发布时间】:2019-08-01 06:14:39
【问题描述】:
我有一个 DynamoDB 表,其中包含两个字段:entityID(哈希键)和 clickedCounter。 clickedCounter 是一个自动递增的计数器,用于计算用户单击 entityID 的次数,我将 clickedCounter 标记为 DynamoDB 版本属性(带有 java 注释 DynamoDBVersionAttribute)。 有了这样的表,我可以轻松地获得每个 entityID 一直被点击的次数的统计信息,但我需要仅在过去 N 天获得汇总统计数据(例如,每过去 7 天)。我该如何存档?
作为一个潜在的解决方案,我可以再添加两个字段:expiredTime(实际上是一个生存时间属性,所以旧数据会自动删除)和 dayOfYear。这里 dayOfYear 是哈希键,entityID 是范围键。例如,对于 1 月 10 日,应用程序将仅存储最近 3 天的 entityID 等于 1005 的以下数据(并且前几天的数据将被 TTL 管理器删除):
dayOfYear entityID clickedCounter expiredTime
10 1005 9 …
9 1005 10 …
8 1005 19 …
7 1005 12 …
为了获得上面例子的统计信息,我应该通过散列和范围键对(在这个例子中,通过对 , , , ) 并对所有 clickedCounter 值求和(这里的总和为 50)。
是否可以以更简单、更正确的方式仅获取最近 N 天的汇总统计信息?
【问题讨论】:
-
我不会有 'clickedCounter',而是 entityID (hashkey)、clickedTimestamp (sortkey)。每当您想获得总数时,请按照此处所述获取 ScannedCount 。 docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
标签: java amazon-web-services amazon-dynamodb