【发布时间】:2021-12-30 20:25:48
【问题描述】:
我有一个简单的时序表:
{
"n": "EXAMPLE", # Name, Hash Key
"t": 1640893628, # Unix Timestamp, Range Key
"v": 10 # Value being stored
}
每 15 分钟我将轮询数据并插入表中。如果我想查询 24 小时内的值,这很有效 - 这相当于总共 96 条记录。
现在,假设我想查询更大的时间跨度 - 1 年或 2 年。现在有数万条记录,并且(在我看来)定期进行是不切实际的。这将需要多个查询来检索更大的时间范围,这将对响应时间产生负面影响并且成本更高。
我已经想到了解决这个问题的几个潜在解决方案:
1. 复制另一个表中的数据,增量更大。例如,每 6 小时有一条记录的表。
2. 有另一个表来存储常见的查询结果,例如过去一周、一个月和一年(分别)的“EXAMPLE”记录。我会定期更新新表中的记录以保存主表中的每 N 条记录(总共 100 条)。比如:
{
"n": "EXAMPLE#WEEKLY",
"v": [
{
"t": 1640893628,
"v": 10
},
{
"t": 1640993628,
"v": 15
},
... 98 more.
]
}
我相信#2 是一种可靠的方法。在我看来,这将是一个足够普遍的问题,所以我很想听听其他人是如何解决这个问题的。
【问题讨论】:
标签: time-series amazon-dynamodb dynamodb-queries