В настоящее время я пытаюсь объединить данные акселерометра, когда они загружаются в нашу таблицу динамо.Я хотел бы агрегировать в 5-минутных временных окнах для каждого пользователя и вставлять результат агрегирования в другую таблицу динамо.Поскольку я не очень хорошо разбираюсь в «Динамо» или «Лямбде», я надеюсь, что кто-то может направить меня в другом направлении, если я пропущу лучшие решения.
Я думаю, что лучший способ сделать это - использовать рычагиDynamoDB Streams и имеет лямбду, которая работает с данными, агрегируя их по мере поступления, поэтому нам не нужно запрашивать таблицу DynamoDB у каждого пользователя каждые 5 минут.Последнее, безусловно, делает Lambda более простым, но я предполагаю, что это существенно сократит наши возможности чтения и также приведет к увеличению времени выполнения Lambda.
Итак, моя идея состоит в том, чтобы обрабатывать поток внутри лямбды, который запускается каждые 1000 записей, и делать так, чтобы он сохранял запись в новой таблице для каждого пользователя в течение каждого 5-минутного временного окна в течение дня,начиная с полуночи как времени 0. Запись будет вставлена, если для этого временного окна для пользователя не существует ни одной записи.Если запись существует, она будет обновлять агрегацию условно.
Таблица будет состоять из идентификатора пользователя, который является ключом раздела, в формате <\ company id> | <\ user id>, окнавремя начала (<\ date> 00:00, 00:05, 00:10 и т. д.), которое будет ключом сортировки, суммой данных, которые я собираю, и количеством записей, используемых для вычисления этогосумма и среднее значение.
С этой структурой, я полагаю, можно затем извлекать данные по отдельным пользователям для конкретной компании в течение периода времени, который я указываю в своем запросе.
Кажется ли это правильным способом решения агрегации данных с помощью Dynamo?Есть ли что-то, на что мне нужно обращать внимание как с точки зрения лямбды, так и с точки зрения потоков, что может привести к проблемам с масштабируемостью или запросам на основе структуры, которую я обрисовал выше?
Спасибо!