Ich muss den IoT-Service für meinen Kunden bereitstellen. MQTT-, Kafka- und Rest Services-Komponenten werden verwendet, um die Daten von den Geräten in die Datenbank aufzunehmen. Ich muss einige Analysen über die Daten im Backend durchführen. Die Datengröße würde 135 Bytes / Gerät und 6000 Geräte / Sekunde betragen. Ich habe die Architektur hier geteilt, um die Anforderungen und Komponenten zu verstehen.
Ich habe nach den Datenspeichern (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) gesucht und jeder Anbieter hat bewiesen, dass seine Datenbank für den IoT-Anwendungsfall geeignet ist. Ich habe mich verwirrt über die Verwendung der bewährten / zuverlässigsten / skalierbaren Datenbank für das IoT.
Welche Datenbank ist am besten geeignet, um so viele Daten aufzunehmen und die Analysen durchzuführen?
Gibt es einen bewährten Benchmark für die geeignete Datenbank für das IoT?
Bitte geben Sie Ihre Gedanken und Vorschläge.
quelle
Antworten:
Sie sind entweder auf NoSQL-Datenbanken beschränkt, da in einer SQL-Datenbank kein 6K-TPS direkt auf dem Server zulässig ist. Sie können auch keinen SaaS-Cloud-Dienst oder eine Plattform verwenden, die bereits auf solche Vorgänge spezialisiert ist - z. B. Telematikdaten über MQTT / Kafka empfangen. Teilen Sie es auf, speichern Sie es für diese 6000 Geräte und stellen Sie eine einfache REST-API für den Zugriff auf die Telemetriedaten bereit. Wie Flespi oder was auch immer.
quelle
IoT sind so ziemlich Zeitreihendaten. Es gibt einige TSDBs: InfluxDB, OpenTSDB, GridDB usw. Sie haben alle die Community- / OSS-Version, damit Sie sehen können, ob sie Ihren Anforderungen entspricht. InfluxDB ist sehr beliebt. Beachten Sie jedoch, dass Clustering nur für kostenpflichtige Versionen verfügbar ist. OpenTSD ist pure oss und laut GridDB ist es IoT-orientiert und schneller als InfluxDB. Abhängig von Ihren Bedürfnissen möchten Sie vielleicht nach einem suchen, der schnell aufgenommen wird.
quelle
Timescaledb, eine für Zeitreihen-Datasets angepasste Postgres-Erweiterung, funktioniert sehr gut. Sie erhalten die üblichen relationalen Datenbankfunktionen, SQL-Verwendung, Zuverlässigkeit, Indizes und Skalierbarkeit.
quelle
Zusätzlich zu den vorherigen Antworten empfehle ich, sich Tarantool , ClickHouse und ScyllaDB anzuschauen . Diese Lösungen sind für die meisten Fälle mehr als ausreichend.
Abgesehen davon, dass in einigen Situationen, insbesondere zum Einbetten, die MDBX (oder ähnliches) nützlich sein kann.
quelle
Die Frage ist weit gefasst und es kann keine genaue Antwort gegeben werden, aber diese Links können helfen:
http://outlyer.com/blog/top10-open-source-time-series-databases/
Follow-up mit Benchmarks: http://outlyer.com/blog/time-series-database-benchmarks/
Anderer Vergleich: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798
quelle