如何从dynamo db获取过去30天的数据

时间:2016-10-19 05:40:21

标签: amazon-dynamodb

我想从dynamo db获取过去30天的数据。我一次只能获取一个id。如何从dynamo db获取30天的所有数据。

$sevenDaysAgo = date('Y-m-d H:i:s', strtotime('30 days')); 
echo  $response = $dynamodb->query([ 'TableName' => 'notifications',
'KeyConditionExpression' => 'id = :id and date_time >= :datess',     'ExpressionAttributeValues' =>  [ ':id' => ['S' => '350'],
':datess' => ['S' => $sevenDaysAgo] ],
 'ProjectionExpression' => 'id', 'ConsistentRead' => true ]);

1 个答案:

答案 0 :(得分:0)

您可以使用新的TTL功能,Streams和Lambda在一个名为sliding的新表中维护一个30天的滑动数据窗口。步骤进行:

  1. 创建一个名为sliding的新表,其架构与基表相同。此表应在名为myttl的属性上启用TTL。
  2. 使用旧图像和新图像启用原始表格的DynamoDB Stream。
  3. 将lambda函数附加到原始表的Stream。这个lambda会将所有项目创建/更新/删除从基表写入滑动表。
  4. 似乎每个项目可能已包含时间戳。如果项目的时间戳位于过去30天内,请扫描原始表格,并在纪元时间内添加名为myttl的N属性等于时间戳+ 30天。
  5. 步骤1-4的结果将是一个表滑动,其中包含最近30天数据的最终一致视图。