Мы пытаемся использовать огромное преимущество AWS * DynamoDB '* NoSQL с IoT , но мы не уверены в том, какие передовые практики касаются длины элемента или вставки элемента.
Идет процесс, каждое устройство может читать данные среды, в зависимости от типа захваченных данных,устройство отправляет это "событие" JSON
сообщение на IoT брокер , а затем на Lambda функцию для сопоставления этой полезной нагрузки,обработайте его и запишите в DynamoDB таблицу.
Затем существует одна таблица для каждого типа захваченного события и элемент для каждого сообщения о событии, полученного от устройств.Но мы осознали, что это просто еще один псевдо-реляционный подход.
Прочитайте документы и подумайте только об одной таблице как о лучшей практике, и об одном элементе на устройство, растущем внутри, с массивомэти JSON
события, классифицируемые по имени ключа.
Что-то вроде:
{
"partition":"<str_an_id>"",
"range":<uint_maybe_a_timestamp>,
"event_soil":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
],
"event_humidity":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
],
"event_light":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
],
"event_temperature":[
{<<object with variable length #0},
{<<object with variable length #1}
...
{<<object with variable length #n}
]
}
В настоящее время у нас есть два устройства, поэтому мы ожидаем, что два элемента будут расти вместе с JSON
полезная нагрузка от устройств.Но в какой-то момент порог памяти достигнут, и код ошибки 400
из DynamoDB повышается.
Правильный ли этот подход?Или совершенно не так?
Есть ли какой-нибудь подход к тому, чтобы узнать, когда достичь этого предела?Например, какая-то нумерация страниц или что-то в этом роде?
Трудно привести математику вычисления размера элемента, потому что JSON
объекты в настоящее время различаются по длине и могут измениться в будущем.
Такжемы начали думать о создании элементов каждые один или два месяца (теоретически, так как мы ускоряем устройства) для каждого устройства.Но не уверен.