Quale database back-end è adatto per l'implementazione IoT


15

Devo fornire il servizio IoT per il mio cliente. I componenti MQTT, Kafka e Rest Services verranno utilizzati per inserire i dati dai dispositivi nel database. Ho bisogno di fare un po 'di analisi sui dati nel backend. La dimensione dei dati sarebbe 135 byte / dispositivo e 6000 dispositivo / secondo. Ho condiviso l'architettura qui per comprendere i requisiti e i componenti.

inserisci qui la descrizione dell'immagine

Ho studiato gli archivi di dati (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) e tutti i fornitori hanno dimostrato che il loro database è adatto al caso d'uso dell'IoT. Mi sono confuso sull'uso del database comprovato / più affidabile / scalabile per l'IoT.

Quale potrebbe essere il database più adatto per ingerire così tanti dati e fare analisi?

Esiste un benchmark provato per il database adatto per l'IoT?

Per favore, dai i tuoi pensieri e suggerimenti.


Di recente ho usato ElasticSearch per un caso d'uso simile. Ma non posso dire perché sia ​​meglio di altri, quella parte è per lo più basata sull'opinione. Ho letteralmente usato Kafka per collegare i sensori al DB. Ci sono belle librerie che supportano l'elaborazione in streaming di Kafka con Elasticsearch
atakanyenel

2
Il "caso d'uso dell'IoT" è troppo vasto per classificare le implementazioni. Ognuno ha i suoi punti di forza e di debolezza.
Gilles 'SO- smetti di essere malvagio' il

1
Non è il mio campo, ma sarei sorpreso se qualsiasi db moderno sembrasse un cattivo adattamento qui. Usa ciò che conosci o ha gli strumenti più brillanti.
Sean Houlihane,

Risposte:


4

Sei limitato a entrambi i database NoSQL, perché qualsiasi database SQL non ti consentirà TPS 6K direttamente sul server né puoi utilizzare alcun servizio cloud SaaS o piattaforma già specializzata in questo tipo di operazioni, ad esempio ricevere dati telematici tramite MQTT / Kafka, suddividerlo e archiviarlo per questi 6000 dispositivi e fornire una semplice API REST per accedere ai dati di telemetria. Come flespi o simili.


capito e grazie. Potresti dirmi quale database NoSQL è più adatto al mio caso d'uso?
Mourish Khan,

Dipende molto dalla tua esperienza e dall'ambiente di runtime. Per AWS / GoogleCloud sarà una scelta, per l'installazione locale consiglierei LevelDB o uno dei suoi concorrenti, basta cercare levelDB su google e ne vedrai l'elenco completo. In qualsiasi variante dovrai implementare API intermedie tra l'applicazione web e il database, quindi dipende anche dal tipo di backend che stai utilizzando per questo. Esattamente il tuo caso descritto in questo articolo , quando riempi i dati con mqtt e accedi ad essi e alla cronologia dal web.
shal

1
tra l'altro, ho provato negli ultimi 15 anni molti di questi database NoSQL. Iniziato da Berkeley DB nei suoi primi anni. Alla fine, quando hai bisogno di piena potenza e prestazioni nelle tue applicazioni e provi a spremere dal massimo IOP e throughput del database, non trovo altro modo, ma per sviluppare il proprio motore di database, specificamente mirato ai casi d'uso e ai requisiti della telematica (IoT). Ma è stata la mia esperienza +)
shal

"6K TPS" ?? 6 TB / secondo?
Mawg dice di ripristinare Monica il

6.000 transazioni / secondo
shal

4

L'IoT è praticamente una serie temporale. Ci sono alcuni TSDB là fuori: InfluxDB, OpenTSDB, GridDB, ecc. Hanno tutti la versione community / oss in modo da poter vedere se si adatta alle tue necessità. InfluxDB è popolare ma nota che il clustering è disponibile solo per la versione a pagamento. OpenTSD è puro oss e GridDB afferma che è orientato all'IoT e più veloce di InfluxDB. A seconda delle tue esigenze, forse vuoi cercarne uno che abbia ingerito rapidamente.


2

Timescaledb, un'estensione postgres personalizzata per i set di dati della serie temporale funziona davvero bene. E ottieni le solite funzionalità del database relazionale, uso di SQL, affidabilità, indici, scalabilità.


1

La domanda è ampia e non è possibile dare una risposta precisa, ma questi collegamenti possono aiutare:

http://outlyer.com/blog/top10-open-source-time-series-databases/ inserisci qui la descrizione dell'immagine

Follow-up con benchmark: http://outlyer.com/blog/time-series-database-benchmarks/

Altro confronto: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798

Ho impostato alcune regole per tentare di limitare l'ambito altrimenti questo blog non finirebbe mai.

Sono stati confrontati solo i database di serie storiche liberi e open source e le loro funzionalità. Pertanto qualcuno chiede "hai provato Kdb + e Informix?" La risposta sarà no. Probabilmente sono comunque fantastici.

L'elenco includerà solo database che si classificano nel loro materiale di marketing come serie temporali o che sono stati scritti in un blog da una società interessante come qualcosa che stanno utilizzando per i dati delle serie temporali.

Ciò che è stato fatto è leggere i documenti ufficiali, leggere StackOverflow, esaminare i problemi e il codice di Github e generalmente hackerare le informazioni insieme. Con questo in mente alcuni fatti potrebbero essere errati.

Se qualcuno rileva qualcosa di effettivamente sbagliato, per favore fatemelo sapere e aggiornerò il blog.

Il benchmarking si è basato su dichiarazioni e stime di marketing. Perché? Perché il benchmarking è un grosso pezzo di lavoro e soggetto a errori. Ottieni sempre "dovresti aver sintonizzato questa speciale impostazione non documentata". I numeri elencati sono molto favorevoli alla maggior parte dei database. Sono i numeri di cui sono stati bloggati o rivendicati su Twitter in qualche momento in passato. Se ritieni che i numeri siano errati fammi sapere e li aggiornerò.


0

Oltre alle risposte precedenti, consiglio anche di guardare Tarantool , ClickHouse e ScyllaDB . Queste soluzioni sono più che sufficienti per la maggior parte dei casi.

Tranne che in alcune situazioni, specialmente per l'incorporamento, l' MDBX (o qualcosa del genere) può essere utile.


2
Ti piacerebbe elaborare perché mi consiglia?
Helmar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.