У меня есть мобильное приложение, которое получает данные с датчиков и отправляет эти данные в AWS IoT Core Topi c. Я хочу передать эти данные в AWS IoT Analytics, а затем проанализировать их с помощью собственного кода машинного обучения - используя наборы контейнерных данных. Важно убедиться, что события разделены и сгруппированы по device_id
и проанализированы за 30 минут - windows. В моем случае имеет смысл только анализировать группу событий, генерируемых одним и тем же device_id. Полезная нагрузка события уже содержит уникальное свойство device_id. Первое решение, которое приходит на ум, - это отдельная настройка Channel -> Pipeline -> DataStore -> SQL DataSet -> Container Data Set
для каждого из мобильных клиентов. Визуально изображено так: Учитывая, что количество устройств равно N, проблема этой архитектуры состоит в том, что мне потребуется N каналов, N конвейеров, которые фактически идентичны, N хранилищ данных, которые хранить идентичный тип / схему данных и, наконец, 2 * N наборов данных. Поэтому, если у меня 50 000 устройств, количество ресурсов огромно. Это заставляет меня понять, что это не очень хорошее решение. Следующая идея, которая приходит мне в голову, состоит в том, чтобы иметь только один канал, один конвейер и одно хранилище данных для всех устройств и иметь только разные наборы данных SQL и разные наборы данных контейнера для каждого устройства. Это выглядит следующим образом: Эта архитектура теперь выглядит намного лучше, но если бы у меня было 50 000 устройств, мне все равно потребовалось бы 100 000 различных наборов данных. По умолчанию предел AWS составляет 100 наборов данных для каждой учетной записи. Конечно, я могу запросить увеличение лимита, но если ограничение по умолчанию составляет 100 наборов данных, то мне интересно, имеет ли смысл запрашивать увеличение лимита, которое в 1000 раз превышает значение по умолчанию? Является ли какая-либо из этих двух архитектур способом использования AWS IoT Analytics или я что-то упустил?