代码之家  ›  专栏  ›  技术社区  ›  Lukas Liesis

dynamodb+dax如何与timeseries一起工作?

  •  1
  • Lukas Liesis  · 技术社区  · 6 年前

    我想知道dax是如何处理时间序列的。我想每分钟插入一些数据,14天后添加ttl将其删除,每次插入后获取最后3小时的数据:

    • 每分钟插入1KB
    • 14天后过期
    • 每次插入后,读取最近3小时的数据

    3小时是180分钟,所以大部分时间我需要最后180个项目。有时数据在一段时间内不会出现,所以可能只有不到180项。

    因此,有20160个项目——14天的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 回复  |  直到 6 年前
        1
  •  1
  •   Jeff Hardy    6 年前

    达克斯 caches items and queries separately ,查询缓存存储由参数设置键的整个响应。在这种情况下,将查询ttl设置为1分钟,并确保:time_from和:time_只有1分钟的分辨率。

    如果您每分钟只调用一次query,那么您将看不到dax带来的多大好处(因为每次刷新都必须转到dynamodb)。

    如果您每分钟多次调用query,但只希望数据每分钟更新一次(即重复刷新仪表板),那么每分钟只需要调用一次dynamodb进行刷新,所有其他请求都将从缓存提供。

    推荐文章