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.
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.
la source
Réponses:
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.
la source
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.
la source
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é.
la source
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/
Suivi avec des benchmarks: http://outlyer.com/blog/time-series-database-benchmarks/
Autre comparaison: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798
la source
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.
la source