Мне интересно, знает ли кто-нибудь хороший способ хранения данных временных рядов с разным разрешением времени в DynamoDB.
Например, у меня есть устройства, которые отправляют данные в DynamoDB каждые 30 секунд. Отдельные показания хранятся в таблице с уникальным идентификатором устройства в качестве ключа хеширования и меткой времени в качестве ключа диапазона.
Я хочу агрегировать эти данные за различные временные шаги (30 минут, 1 час, 1 день и т. Д.), Используя лямбду, и также сохранять агрегаты в DynamoDB. Затем я хочу иметь возможность получать любые данные разрешения за любой конкретный интервал времени, например, 48 30-минутных агрегатов за последние 24 часа или каждую ежедневную статистику за этот месяц прошлого года.
Я не уверен, должно ли каждое новое разрешение иметь свои собственные таблицы, data_30min
, data_1hr
и т. Д., Или если лучший подход был бы чем-то вроде создания составного ключа хеш-функции путем объединения разрешения с идентификатором устройства и сохранения всей совокупности данные в одной таблице.
Например, если идентификатор устройства равен abc123
, все 30-минутные данные могут быть сохранены с помощью хэш-ключа abc123_30m
, а данные за 1 час могут быть сохранены с помощью HK abc123_1h
, и каждый из них будет по-прежнему использовать временную метку в качестве диапазона ключ.
Каковы некоторые плюсы и минусы каждого из этих подходов, и есть ли решение, о котором я не думаю, которое было бы полезно в этой ситуации?
Заранее спасибо.