Która baza danych zaplecza jest odpowiednia dla implementacji IoT


15

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.

wprowadź opis zdjęcia tutaj

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.


Ostatnio użyłem ElasticSearch do podobnego przypadku użycia. Ale nie mogę powiedzieć, dlaczego jest lepszy od innych, ta część opiera się głównie na opiniach. Dosłownie użyłem Kafki do podłączenia czujników do DB. Istnieją ładne biblioteki, które obsługują przetwarzanie strumieniowe Kafki za pomocą Elasticsearch
atakanyenel

2
„Przypadek użycia Internetu Rzeczy” jest o wiele za szeroki, by oceniać implementacje. Każdy ma swoje mocne i słabe strony.
Gilles „SO- przestań być zły”

1
Nie moja dziedzina, ale byłbym zaskoczony, gdyby jakikolwiek nowoczesny db wyglądałby tutaj źle. Użyj tego, co znasz lub ma najcieńsze oprzyrządowanie.
Sean Houlihane

Odpowiedzi:


4

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.


rozumiem i dziękuję. Czy możesz mi powiedzieć, która baza danych NoSQL najlepiej pasuje do mojego przypadku użycia?
Mourish Khan

To zależy od twojego doświadczenia i środowiska uruchomieniowego. W przypadku AWS / GoogleCloud będzie to jeden wybór, do instalacji lokalnej poleciłbym LevelDB lub dowolnego z jego konkurentów, po prostu wyszukaj levelDB w google, a zobaczysz pełną listę. W każdym wariancie musisz zaimplementować pośredni interfejs API między aplikacją internetową a bazą danych, więc zależy to również od tego, jakiego rodzaju backendu używasz do tego. Dokładnie twój przypadek opisany w tym artykule , kiedy wypełniasz dane mqtt i uzyskujesz do nich dostęp oraz historię z sieci.
shal

1
btw, próbowałem w ciągu ostatnich 15 lat wielu z tych baz danych NoSQL. Zaczęło się od Berkeley DB we wczesnym wieku. Na koniec, kiedy potrzebujesz pełnej mocy i wydajności w swoich aplikacjach i próbujesz wycisnąć z bazy danych maksymalne procesory IOP i przepustowość, nie znajduję innego wyjścia, jak tylko opracować własny silnik bazy danych, specjalnie ukierunkowany na przypadek użycia i wymagania telematyki (IoT). Ale to było moje doświadczenie +)
Shal

„6K TPS” ?? 6tB / sekundę?
Mawg mówi o przywróceniu Moniki

6.000 transakcji / sekundę
Shal

4

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.


2

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ść.


1

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/ wprowadź opis zdjęcia tutaj

Kontynuacja dzięki testom porównawczym: http://outlyer.com/blog/time-series-database-benchmarks/

Inne porównanie: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798

Ustawiłem pewne zasady, aby spróbować ograniczyć zakres, w przeciwnym razie ten blog nigdy by się nie skończył.

Porównano tylko bazy danych szeregów czasowych darmowych i otwartych oraz ich funkcje. Dlatego ktoś pyta „czy próbowałeś Kdb + i Informix?”, Odpowiedź brzmi „nie”. Prawdopodobnie są niesamowite.

Lista będzie zawierać tylko bazy danych, które albo klasyfikują się w swoich materiałach marketingowych jako szeregi czasowe, albo zostały napisane na blogu przez fajną firmę jako coś, czego używają do danych szeregów czasowych.

To, co zostało zrobione, to czytanie oficjalnych dokumentów, czytanie StackOverflow, przeglądanie problemów i kodu Github oraz ogólnie hakowanie informacji razem. Mając to na uwadze, niektóre fakty mogą być niepoprawne.

Jeśli ktoś zauważy coś, co nie jest zgodne z prawdą, daj mi znać, a zaktualizuję bloga.

Benchmarking został oparty na oświadczeniach marketingowych i szacunkach. Dlaczego? Ponieważ testy porównawcze to znaczna część pracy i podatna na błędy. Zawsze dostajesz „powinieneś dostroić to specjalne nieudokumentowane ustawienie”. Podane liczby są bardzo korzystne dla większości baz danych. Są to liczby blogowane lub zgłaszane na Twitterze w pewnym momencie w przeszłości. Jeśli uważasz, że jakieś liczby są nieprawidłowe, daj mi znać, a ja je zaktualizuję.


0

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).


3
Czy chciałbyś wyjaśnić, dlaczego je polecasz?
Helmar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.