Muszę zapewnić usługę IoT dla mojego klienta. Komponenty MQTT, Kafka i Rest Services będą wykorzystywane do pozyskiwania danych z urządzeń do bazy danych. Muszę przeprowadzić analizę danych w zapleczu. Rozmiar danych wynosiłby 135 bajtów / urządzenie i 6000 urządzeń / sekundę. Udostępniłem tutaj architekturę, aby zrozumieć wymagania i komponenty.
Zbadałem informacje o magazynach danych (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) i wszyscy dostawcy udowodnili, że ich baza danych jest odpowiednia dla przypadku użycia Internetu Rzeczy. Myliłem się co do używania sprawdzonej / najbardziej niezawodnej / skalowalnej bazy danych dla Internetu Rzeczy.
Jaka baza danych może być najlepiej odpowiednia do przyjęcia tak dużej ilości danych i przeprowadzenia analizy?
Czy istnieje jakiś sprawdzony punkt odniesienia dla odpowiedniej bazy danych dla Internetu Rzeczy?
Proszę podać swoje przemyślenia i sugestie.
źródło
Odpowiedzi:
Jesteś ograniczony do baz danych NoSQL, ponieważ żadna baza danych SQL nie pozwoli Ci na 6K TPS bezpośrednio na serwerze ani nie możesz korzystać z żadnej usługi w chmurze SaaS lub platformy specjalizującej się już w tego rodzaju operacjach - np. Odbierać dane telematyczne przez MQTT / Kafka, podziel go i zapisz dla tych 6000 urządzeń i zapewnij prosty interfejs API REST, aby uzyskać dostęp do danych telemetrycznych. Jak flespi lub coś podobnego.
źródło
IoT to dane szeregów czasowych. Istnieje kilka TSDB: InfluxDB, OpenTSDB, GridDB itp. Wszystkie mają wersję community / oss, więc możesz sprawdzić, czy odpowiada Twoim potrzebom. InfluxDB jest popularny, ale należy pamiętać, że klastrowanie jest dostępne tylko dla wersji płatnej. OpenTSD to czysty system operacyjny, a GridDB stwierdza, że jest zorientowany na IoT i szybszy niż InfluxDB. W zależności od potrzeb, może chcesz poszukać takiego, który ma szybkie przyjmowanie.
źródło
Timescaledb, rozszerzenie Postgres dostosowane do zestawów danych timeseries, działa naprawdę dobrze. Otrzymujesz zwykłe funkcje relacyjnej bazy danych, użycie SQL, niezawodność, indeksy, skalowalność.
źródło
Pytanie jest ogólne i nie można udzielić dokładnej odpowiedzi, ale te linki mogą pomóc:
http://outlyer.com/blog/top10-open-source-time-series-databases/
Kontynuacja dzięki testom porównawczym: http://outlyer.com/blog/time-series-database-benchmarks/
Inne porównanie: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798
źródło
Oprócz poprzednich odpowiedzi, polecam również przyjrzeć się Tarantool , ClickHouse i ScyllaDB . Te rozwiązania są wystarczające w większości przypadków.
Tyle że w niektórych sytuacjach, szczególnie do osadzania, przydatne może być MDBX (lub coś w tym rodzaju).
źródło