Quelle base de données d'arrière-plan convient à la mise en œuvre de l'IoT


15

Je dois fournir le service IoT à mon client. Les composants MQTT, Kafka et Rest Services seront utilisés pour ingérer les données des appareils dans la base de données. J'ai besoin de faire des analyses sur les données du backend. La taille des données serait de 135 octets / périphérique et de 6000 périphériques / seconde. J'ai partagé l'architecture ici pour comprendre l'exigence et les composants.

entrez la description de l'image ici

J'ai enquêté sur les magasins de données (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) et tous les fournisseurs ont prouvé que leur base de données était adaptée au cas d'utilisation de l'IoT. Je suis confus quant à l'utilisation de la base de données éprouvée / la plus fiable / évolutive pour l'IoT.

Quelle pourrait être la base de données la mieux adaptée pour ingérer autant de données et effectuer des analyses?

Existe-t-il une référence éprouvée pour la base de données appropriée pour l'IoT?

Veuillez donner vos pensées et suggestions.


J'ai récemment utilisé ElasticSearch pour un cas d'utilisation similaire. Mais je ne peux pas dire pourquoi c'est mieux que d'autres, cette partie est principalement basée sur l'opinion. J'ai littéralement utilisé Kafka pour connecter des capteurs à DB. Il existe de belles bibliothèques qui prennent en charge le traitement de flux de Kafka avec Elasticsearch
atakanyenel

2
Le «cas d'utilisation de l'IoT» est beaucoup trop large pour classer les implémentations. Chacun a ses forces et ses faiblesses.
Gilles 'SO- arrête d'être méchant'

1
Pas mon domaine, mais je serais surpris si une base de données moderne ressemblait à un mauvais ajustement ici. Utilisez ce que vous connaissez ou disposez de l'outillage le plus brillant.
Sean Houlihane

Réponses:


4

Vous êtes limité aux bases de données NoSQL, car aucune base de données SQL ne vous autorisera 6K TPS directement sur le serveur et vous ne pouvez pas utiliser de service cloud SaaS ou de plateforme déjà spécialisée dans ce type d'opérations - par exemple, recevoir des données télématiques via MQTT / Kafka, divisez-le et stockez-le pour ces 6000 appareils et fournissez une API REST simple pour accéder aux données de télémétrie. Comme flespi ou quelque chose de similaire.


a obtenu votre point et merci. Pourriez-vous me dire quelle base de données NoSQL convient le mieux à mon cas d'utilisation?
Mourish Khan

Cela dépend vraiment de votre expérience et de l'environnement d'exécution. Pour AWS / GoogleCloud, ce sera un choix, pour une installation locale, je recommanderais à LevelDB ou à l'un de ses concurrents, recherchez simplement levelDB sur Google et vous en verrez la liste complète. Dans toute variante, vous devrez implémenter une API intermédiaire entre l'application Web et la base de données, cela dépend donc également du type de backend que vous utilisez pour cela. Exactement votre cas décrit dans cet article , lorsque vous remplissez des données avec mqtt et y accédez et l'historique à partir du Web.
shal

1
btw, j'ai essayé au cours des 15 dernières années plusieurs de ces bases de données NoSQL. A commencé à Berkeley DB à ses débuts. À la fin, lorsque vous avez besoin de la pleine puissance et des performances dans vos applications et que vous essayez de tirer le maximum des IOP et du débit de la base de données, je ne trouve pas d'autre moyen, mais de développer un moteur de base de données propre, spécifiquement ciblé sur le cas d'utilisation et les exigences de la télématique (IoT). Mais c'était mon expérience +)
shal

"6K TPS" ?? 6 To / seconde?
Mawg dit réintégrer Monica le

6.000 transactions / seconde
shal

4

L'IoT est à peu près des données de séries chronologiques. Il y a quelques TSDB là-bas: InfluxDB, OpenTSDB, GridDB, etc. Ils ont tous la version communauté / oss afin que vous puissiez voir si elle convient à vos besoins. InfluxDB est populaire, mais notez que le clustering n'est disponible que pour la version payante. OpenTSD est pur oss, et GridDB déclare qu'il est orienté IoT et plus rapide que InfluxDB. Selon vos besoins, vous voudrez peut-être en chercher un qui a une ingestion rapide.


2

Timescaledb, une extension postgres personnalisée pour les jeux de données série temporelle fonctionne très bien. Et vous obtenez les fonctionnalités de base de données relationnelles habituelles, l'utilisation de SQL, la fiabilité, les index, l'évolutivité.


1

La question est large et aucune réponse précise ne peut être donnée, mais ces liens peuvent aider:

http://outlyer.com/blog/top10-open-source-time-series-databases/ entrez la description de l'image ici

Suivi avec des benchmarks: http://outlyer.com/blog/time-series-database-benchmarks/

Autre comparaison: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798

J'ai défini quelques règles pour tenter de limiter la portée, sinon ce blog ne se terminerait jamais.

Seules les bases de données de séries chronologiques gratuites et open source et leurs fonctionnalités ont été comparées. Par conséquent, quelqu'un demande «avez-vous essayé Kdb + et Informix?», La réponse sera non. Ils sont probablement impressionnants cependant.

La liste inclura uniquement des bases de données qui se classent dans leur matériel marketing en tant que séries chronologiques, ou ont été écrites sur un blog par une entreprise sympa comme quelque chose qu'elles utilisent pour les données de séries chronologiques.

Ce qui a été fait est de lire les documents officiels, de lire StackOverflow, de parcourir les problèmes et le code Github et de pirater généralement les informations ensemble. Dans cet esprit, certains faits peuvent être incorrects.

Si quelqu'un remarque quelque chose de mal, veuillez me le faire savoir et je mettrai à jour le blog.

L'analyse comparative a été basée sur des allégations et des estimations marketing. Pourquoi? Parce que l'analyse comparative est un gros morceau de travail et sujette à l'erreur. Vous obtenez toujours «vous devriez avoir réglé ce paramètre spécial non documenté». Les chiffres indiqués sont très favorables à la plupart des bases de données. Ce sont soit les numéros blogués ou revendiqués sur Twitter à un moment donné dans le passé. Si vous pensez que des chiffres sont erronés, faites-le moi savoir et je les mettrai à jour.


0

En plus des réponses précédentes, je recommande également de regarder Tarantool , ClickHouse et ScyllaDB . Ces solutions sont plus que suffisantes pour la plupart des cas.

Sauf que dans certaines situations, en particulier pour l'incorporation, le MDBX (ou quelque chose comme ça) peut être utile.


3
Souhaitez-vous expliquer pourquoi vous les recommandez?
Helmar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.