Какая база данных подходит для реализации IoT


15

Я должен предоставить услугу IoT для своего клиента. Компоненты MQTT, Kafka и Rest Services будут использоваться для загрузки данных с устройств в базу данных. Мне нужно сделать некоторую аналитику по данным в бэкэнде. Размер данных будет 135 байтов / устройство и 6000 устройств / секунду. Я поделился архитектурой здесь, чтобы понять требования и компоненты.

введите описание изображения здесь

Я исследовал хранилища данных (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra), и все поставщики доказали, что их база данных подходит для варианта использования IoT. Я запутался в использовании проверенной / самой надежной / масштабируемой базы данных для IoT.

Что может быть наилучшей подходящей базой данных, чтобы проглотить это большое количество данных и сделать аналитику?

Есть ли проверенный эталон для подходящей базы данных для IoT?

Пожалуйста, дайте свои мысли и предложения.


Я недавно использовал ElasticSearch для аналогичного варианта использования. Но я не могу сказать, почему это лучше, чем другие, эта часть в основном основана на мнении. Я буквально использовал Kafka для подключения датчиков к БД. Есть хорошие библиотеки, которые поддерживают потоковую обработку Kafka с
Elasticsearch

2
«Вариант использования IoT» слишком широк для ранжирования реализаций. У каждого есть свои сильные и слабые стороны.
Жиль "ТАК - перестань быть злым"

1
Не моя сфера, но я был бы удивлен, если бы какой-нибудь современный БД выглядел бы здесь не очень хорошо. Используйте то, что вы знакомы, или имеет самый блестящий инструмент.
Шон Хоулихейн

Ответы:


4

Вы ограничены либо базами данных NoSQL, потому что любая база данных SQL не позволит вам использовать 6K TPS непосредственно на сервере, а также вы не можете использовать какой-либо облачный сервис SaaS или платформу, уже специализирующуюся на таких операциях - например, получать телематические данные через MQTT / Kafka, разделите его и сохраните для этих 6000 устройств и предоставьте простой REST API для доступа к данным телеметрии. Как флеспи или что-то подобное.


получил вашу точку зрения и спасибо. Не могли бы вы сказать, какая база данных NoSQL лучше всего подходит для моего варианта использования?
Мориш Хан

Это действительно зависит от вашего опыта и среды выполнения. Для AWS / GoogleCloud это будет один из вариантов, для локальной установки я бы порекомендовал LevelDB или любому из ее конкурентов, просто поищите levelDB в Google, и вы увидите их полный список. В любом варианте вам потребуется реализовать промежуточный API между веб-приложением и базой данных, поэтому это также зависит от того, какой бэкэнд вы используете для этого. Именно ваш случай описан в этой статье , когда вы заполняете данные с помощью mqtt и получаете доступ к ним и истории из Интернета.
Шал

1
Кстати, я пытался в последние 15 лет многие из этих баз данных NoSQL. Начал с Беркли DB в его раннем возрасте. В конце, когда вам требуется полная мощность и производительность в ваших приложениях, и вы пытаетесь выжать из максимальной IOP и пропускной способности базы данных, я не нахожу другого пути, кроме как разработать собственный движок базы данных, специально предназначенный для использования и требований использования телематики (IoT). Но это был мой опыт +)
шал


6.000 сделки / второй
ШЭЛ

4

IoT - это в значительной степени данные временных рядов. Существует несколько TSDB: InfluxDB, OpenTSDB, GridDB и т. Д. Все они имеют версию сообщества / oss, поэтому вы можете увидеть, соответствует ли она вашим потребностям. InfluxDB является популярным, но обратите внимание, что кластеризация доступна только для платной версии. OpenTSD - чистый oss, и GridDB утверждает, что он ориентирован на IoT и быстрее, чем InfluxDB. В зависимости от ваших потребностей, возможно, вы захотите найти тот, который имеет быстрый прием.


2

Timescaledb, расширение postgres, настроенное для наборов данных временных рядов, работает очень хорошо. И вы получаете обычные функции реляционной базы данных, использование SQL, надежность, индексы, масштабируемость.


1

Вопрос широкий и точного ответа дать невозможно, но эти ссылки могут помочь:

http://outlyer.com/blog/top10-open-source-time-series-databases/ введите описание изображения здесь

Продолжение с тестами: http://outlyer.com/blog/time-series-database-benchmarks/

Другое сравнение: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798

Я установил некоторые правила, чтобы попытаться ограничить сферу, иначе этот блог никогда не закончится.

Были сравнены только бесплатные базы данных временных рядов с открытым исходным кодом и их функции. Поэтому кто-то спрашивает: «Вы пробовали Kdb + и Informix?», Ответ будет «нет». Они, вероятно, потрясающие, хотя.

Список будет включать только базы данных, которые либо классифицируют себя в своих маркетинговых материалах как временные ряды, либо были описаны в блоге крутой компанией как нечто, что они используют для данных временных рядов.

Что было сделано, так это чтение официальных документов, чтение StackOverflow, просмотр проблем и кода на Github и, как правило, совместное взламывание информации. Учитывая это, некоторые факты могут быть неверными.

Если кто-то обнаружит что-то на самом деле не так, пожалуйста, дайте мне знать, и я обновлю блог.

Бенчмаркинг был основан на маркетинговых заявлениях и оценке. Почему? Потому что бенчмаркинг - это значительный объем работы и подвержен ошибкам. Вы всегда получаете «вы должны были настроить эту особую недокументированную настройку». Указанные числа очень благоприятны для большинства баз данных. Это либо цифры, о которых пишут в блоге, либо они были опубликованы в Твиттере в прошлом. Если вы считаете, что какие-то цифры неверны, дайте мне знать, и я обновлю их.


0

В дополнение к предыдущим ответам я также рекомендую взглянуть на Tarantool , ClickHouse и ScyllaDB . Этих решений более чем достаточно для большинства случаев.

За исключением того, что в некоторых ситуациях, особенно для встраивания, MDBX (или что-то подобное) может быть полезным.


3
Хотели бы вы уточнить, почему вы рекомендуете это?
Хелмар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.