Как получить данные за последние 30 дней из dynamo db

#amazon-dynamodb

#amazon-dynamodb

Вопрос:

Я хочу получить данные за последние 30 дней из dynamo db. Я могу извлекать только один идентификатор за раз. Как я могу получить все данные за 30 дней из dynamo db.

 $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. В чем проблема? Ожидание неясно в сообщении. Пожалуйста, обновите сообщение.

2. Я хочу получить данные за последние 30 дней из dynamo db. Я могу получить только одни данные. Как я могу получить все данные из базы данных (например, в sql, который мы используем * для сбора данных)

3. Какой у вас ключ раздела и ключ диапазона? Является ли «date_time» ключом диапазона? Вы определили date_time как строку? Можете ли вы показать некоторые примеры данных? Я смогу помочь, если вы предоставите эти подробности. Какой AWS SDK вы используете? Я могу предоставить решение на Java, JS, NodeJS.

4. Я использую php sdk.

5. Элемент{3} date_timeString: 2016-10-17 06:08:02 idString: 351 messageString: 23.328 рупий в месяц

Ответ №1:

Вы могли бы использовать новую функцию TTL, потоки и лямбда для поддержания скользящего 30-дневного окна данных в новой таблице, называемой скользящей. Шаги:

  1. Создайте новую таблицу с именем sliding с той же схемой, что и ваша базовая таблица. В этой таблице должен быть включен TTL для атрибута с именем myttl .
  2. Включите поток DynamoDB вашей исходной таблицы как со старыми, так и с новыми изображениями.
  3. Присоедините лямбда-функцию к потоку вашей исходной таблицы. Этот лямбда-код будет записывать все создания / обновления / удаления элементов из базовой таблицы в скользящую таблицу.
  4. Похоже, что каждый элемент может уже содержать временную метку. Отсканируйте исходную таблицу и добавьте атрибут N с именем myttl , равным отметке времени 30 дней в эпоху, если отметка времени элемента была за последние 30 дней.

Результатом шагов 1-4 будет скользящая таблица, которая содержит в конечном итоге согласованное представление данных за последние 30 дней.