我想知道DAX如何与时间序列一起工作。我想每分钟插入一些数据,添加TTL以在14天后删除它,并在每次插入后获取最后3个小时的数据:
3小时是180分钟,所以大多数时候我需要最后180个项目。有时一段时间没有数据,所以可能少于180个项目。
因此,有14天的20,160个项目±19MB数据。每分钟获取最后3个小时的数据时,我将使用多少DAX?是19MB还是180KB?
let params = {
TableName: 'prod_server_data',
KeyConditionExpression: 's = :server_id and t between :time_from and :time_to',
ExpressionAttributeValues: {
':server_id': serverId, // string
':time_from': from, // timestamp
':time_to': to, // timestamp
},
ReturnConsumedCapacity: 'TOTAL',
ScanIndexForward: false,
Limit: 1440, // 24h*60 = 1440. 1 check every 1 min
};
const queryResult = await dynamo.query(params).promise();
答案 0 :(得分:1)
DAX caches items and queries separately,并且查询缓存存储由参数键入的整个响应。在这种情况下,请将查询TTL设置为1分钟,并确保:time_from和:time_to仅具有1分钟的分辨率。
如果您每分钟只调用一次查询,那么DAX不会带来太多好处(因为每次刷新都必须转到DynamoDB)。
如果您每分钟多次调用查询,但只希望每分钟更新一次数据(即重复刷新仪表板),则每分钟只有1次对DynamoDB的调用才能刷新,并且所有其他请求将从缓存中得到服务。