Вопрос или проблема
Я долгое время использовал influxdb как базу данных временных рядов для данных, связанных с IoT. Но их недавняя история в области управления продуктами заставляет меня пересмотреть свое мнение о них для нового программного стека для стартапа. Интересно, что люди рекомендуют с учетом следующих требований:
- Язык запросов, похожий на SQL
- нет ограничений на хранение данных
- позволяет выполнять эффективные запросы и агрегирование за любой временной интервал (группировка по временному интервалу)
- высокий уровень принятия в индустрии, с повышенными шансами на продолжительное долгосрочное обслуживание и поддержку
- облачное предложение без сервера
- не привязывается к конкретному облачному поставщику (доступно несколько облачных поставщиков или возможность запустить самому в виртуальной машине/контейнерном решении у любого облачного поставщика)
- издание сообщества/свободного программного обеспечения с возможностью локального запуска для личных/экспериментальных IoT проектов
- политики хранения данных, позволяющие уменьшение выборки данных для снижения затрат на долгосрочное хранение данных при сохранении доступа к историческим значениям и наличии высокочастотных значений для недавних данных (например: сохранять все значения за последний месяц данных, хранить медианные/минимальные/максимальные значения в час за последние полгода и в день за последние 2 года)
- Желательно: возможность хранить резервную копию всех данных в каком-либо решении холодного хранения для обучения моделей ИИ в будущем.
Ответ или решение
При выборе временного ряда базы данных (time series database – TSDB) для вашего стартапа, важно учитывать несколько ключевых факторов, чтобы обеспечить оптимальные результаты на долгосрочной основе. Вы уже упомянули, что рассматривали InfluxDB, однако из-за недавних управленческих решений этой компании ищете альтернативы. Рассмотрим требования, которые вы упомянули, и предложим несколько решений, основываясь на современных тенденциях и высоком уровне адаптации в индустрии.
Теория
Временные ряды базы данных играют ключевую роль при работе с IoT данными, обеспечивая хранение и обработку больших объемов данных, поступающих с устройств в реальном времени. Основные требования к таким системам часто включают в себя:
- Поддержка SQL-подобного языка запросов – для упрощения взаимодействия, аналитики и интеграции с существующими решениями.
- Отсутствие ограничений на хранение данных – чтобы обеспечить долговременное хранение данных без риска потери.
- Эффективные запросы и агрегации – возможность быстро и эффективно агрегировать данные по различным временным интервалам.
- Высокий уровень адаптации в индустрии – обеспечивает уверенность в том, что технология будет поддерживаться и развиваться в будущем.
- Облачные решения без привязки к одному поставщику – гибкость в выборе инфраструктуры и возможность избежать зависимости от одного поставщика.
- Наличие версии с открытым исходным кодом – для возможности локального развертывания и экспериментов.
- Политики хранения данных – адаптация хранения данных для снижения затрат при сохранении детализации в недавних данных.
- Резервное копирование – важность сохранения бэкапов данных для последующего использования в тренировке моделей машинного обучения.
Примеры
На рынке доступны несколько платформ, отвечающих вашим требованиям. Рассмотрим некоторые из них:
-
TimescaleDB: это расширение для PostgreSQL, предоставляющее возможность работы с временными рядами данных. SQL-поддержка является естественной частью TimescaleDB благодаря основе на PostgreSQL. Кроме того, это решение поддерживает гибкую агрегацию данных по временным интервалам и обеспечивает инструменты для управления ретенцией данных, включая возможность гибкого настроя. TimescaleDB имеет активное сообщество и коммерческую поддержку. Возможность развертывания в облаке и локально дает большую гибкость в выборе инфраструктурной платформы.
-
Prometheus: широко используется для мониторинга и алертинга, особенно в экосистеме Kubernetes. Хотя PromQL не похож на традиционный SQL, он предоставляет мощные средства для работы с временными рядами данных, включая агрегации и алертинг. Prometheus также поддерживает модули экспортеров, которые делают его гибким для различных нужд. Основное ограничение – это обычно ценность для мониторинга инфраструктуры, а не для общего использования IoT данных.
-
OpenTSDB: строится на базе HBase (Hadoop), предоставляя хорошую масштабируемость и поддерживает язык запросов, похожий на SQL. Он эффективно обрабатывает большие объемы данных и часто используется в больших инфраструктурах. Платформа свободная (FOSS) и может разворачиваться в различных средах, но может потребовать значительных настроек для оптимальной работы.
Применение
Учитывая все это, можно сделать следующие предложения для использования в вашем стартапе:
-
Оцените TimescaleDB как основное решение для работы с временными рядами IoT данных. Его поддержка SQL, гибкие политики ретенции данных и возможность развертывания как в облаке, так и локально, делают его идеальным кандидатом для ваших нужд. Это также даст возможность сохранить единообразие в аналитической цепочке, минимизировать необходимое обучение команды и использовать существующую инфраструктуру на базе PostgreSQL.
-
Рассмотрите вариант использования Prometheus для мониторинга вашей IoT инфраструктуры (дополнительно к основному решению), так как его сильные стороны включают надежное обнаружение аномалий и управление алертами.
-
Исследуйте OpenTSDB для задач, где нужна работа с очень большими объемами данных в распределенной среде, однако учтите дополнительные затраты на управление и конфигурацию.
-
При необходимости глубокой аналитики и работы с искусственным интеллектом, храните данные в холодных архивах или даже используйте готовые решения для облачных хранилищ, которые могут интегрироваться с вашими выбраны TSDB, для последующего анализа.
Внедрение временных рядов баз данных в IoT системы требует внимательного подхода не только к текущим потребностям, но и дальновидности, чтобы выбранное решение могло развиваться вместе с вашим проектом. Выбор инструмента, подходящего как для коммерческого, так и для локального развертывания, обеспечит вашему стартапу максимальную адаптивность.