dynamoDB + DAX如何与时间序列一起使用?

时间:2018-07-13 16:25:11

标签: amazon-dynamodb-dax

我想知道DAX如何与时间序列一起工作。我想每分钟插入一些数据,添加TTL以在14天后删除它,并在每次插入后获取最后3个小时的数据:

  • 每分钟插入1KB
  • 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();

1 个答案:

答案 0 :(得分:1)

DAX caches items and queries separately,并且查询缓存存储由参数键入的整个响应。在这种情况下,请将查询TTL设置为1分钟,并确保:time_from和:time_to仅具有1分钟的分辨率。

如果您每分钟只调用一次查询,那么DAX不会带来太多好处(因为每次刷新都必须转到DynamoDB)。

如果您每分钟多次调用查询,但只希望每分钟更新一次数据(即重复刷新仪表板),则每分钟只有1次对DynamoDB的调用才能刷新,并且所有其他请求将从缓存中得到服务。