Яка резервна база даних підходить для реалізації IoT


15

Я повинен надати послугу IoT для свого клієнта. Компоненти MQTT, Kafka та Rest Services будуть використовуватися для передачі даних із пристроїв у базу даних. Мені потрібно зробити деяку аналітику над даними в бекенді. Розмір даних склав би 135 байт / пристрій і 6000 пристрою / секунду. Я поділився архітектурою тут, щоб зрозуміти вимоги та компоненти.

введіть тут опис зображення

Я досліджував сховища даних (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra), і кожен постачальник довів, що їх база даних підходить для використання в Інтернеті. Я заплутався у використанні перевіреної / найнадійнішої / масштабованої бази даних для IoT.

Що може бути найкращою базою даних для поглинання такої кількості даних та проведення аналітики?

Чи є перевірений орієнтир для відповідної бази даних для IoT?

Будь ласка, дайте свої думки та пропозиції.


Я нещодавно використовував ElasticSearch для подібного випадку використання. Але я не можу сказати, чому це краще, ніж інші, це частина, в основному, заснована на думці. Я буквально використовував Kafka для підключення датчиків до БД. Є приємні бібліотеки, які підтримують потокову обробку Kafka з Elasticsearch
atakanyenel

2
"Використовуючий випадок використання IoT" є занадто широким для ранжирування реалізацій. У кожного є свої сильні та слабкі сторони.
Жил "ТАК - перестань бути злим"

1
Не моє поле, але я був би здивований, якби будь-який сучасний db виглядав би тут погано. Використовуйте те, що вам знайоме, або має найяскравіші інструменти.
Шон Хуліхане

Відповіді:


4

Ви обмежені або базами даних NoSQL, тому що будь-яка база даних SQL не дозволяє вам 6K TPS безпосередньо на сервері, і ви не можете використовувати будь-яку хмарну службу SaaS або платформу, яка вже спеціалізується на таких операціях - наприклад, отримувати телематичні дані через MQTT / Kafka, розділіть його та зберігайте для цих 6000 пристроїв та надайте простий REST API для доступу до даних телеметрії. Як флеспі чи щось подібне.


Ви зрозуміли свою подяку та подяку. Не могли б ви сказати мені, яка база даних NoSQL найкраще підходить для мого використання?
Муріш хан

Це дійсно залежить від вашого досвіду та умов виконання. Для AWS / GoogleCloud це буде один вибір, для локальної установки я рекомендую LevelDB або будь-якому з його конкурентів, просто шукайте levelDB в google, і ви побачите повний їх список. У будь-якому варіанті вам потрібно буде впровадити проміжний API між веб-додатком та базою даних, тому це також залежить від того, який тип бекенда ви використовуєте для цього. Саме ваш випадок описаний у цій статті , коли ви заповнюєте дані mqtt та отримуєте доступ до них та історію з Інтернету.
ШЕЛ

1
btw, я спробував за останні 15 років багато цих баз даних NoSQL. Почав з Берклі БД у своїх ранніх віках. Зрештою, коли вам потрібна повна потужність та продуктивність у ваших програмах та намагаються витіснити з баз даних максимум ІОП та пропускну спроможність, я не знаю іншого способу, окрім як розробити власний механізм баз даних, спеціально орієнтований на використання телематики (IoT) та використання вимог. Але це був мій досвід +)
ШЕЛ

"6K TPS" ?? 6tB / секунду?
Мауг каже, що повернути Моніку

6.000 угоди / другий
ШЕЛ

4

Дані IoT - це майже багато часових рядів. Там є кілька TSDB: InfluxDB, OpenTSDB, GridDB і т. Д. Усі вони мають версію спільноти / oss, щоб ви могли побачити, чи відповідає вона вашим потребам. InfluxDB є популярним, але зауважте, що кластеризація доступна лише для платних версій. OpenTSD є чистою косою, і GridDB констатує, що вона орієнтована на IoT та швидша, ніж InfluxDB. Залежно від ваших потреб, можливо, ви хочете шукати той, який швидко вживається.


2

Timescaledb, розширення postgres, налаштоване для наборів даних тимчасових журналів, працює дуже добре. І ви отримуєте звичайні функції реляційних баз даних, використання SQL, надійність, індекси, масштабованість.


1

Питання є широким, точної відповіді не можна дати, але ці посилання можуть допомогти:

http://outlyer.com/blog/top10-open-source-time-series-databases/ введіть тут опис зображення

Продовження роботи з орієнтирами: http://outlyer.com/blog/time-series-database-benchmarks/

Інше порівняння: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798

Я встановив деякі правила, щоб спробувати обмежити сферу застосування, інакше цей блог ніколи не закінчиться.

Порівняно лише бази вільних та відкритих джерел тимчасових рядів та їх особливості. Тому хтось запитує: "ви пробували Kdb + та Informix?", Відповідь буде "ні". Вони, мабуть, дивовижні, хоча.

Список буде містити лише бази даних, які або класифікують себе у своєму маркетинговому матеріалі як часові ряди, або про них написано в блозі прохолодною компанією як щось, що вони використовують для даних часових рядів.

Що було зроблено - це читання офіційних документів, читання StackOverflow, перегляд проблем і кодів Github і взагалі взломання інформації разом. Зважаючи на це, деякі факти можуть бути помилковими.

Якщо хтось помітить щось фактично неправильне, будь ласка, дайте мені знати, і я оновлю блог.

Бенчмаркінг ґрунтувався на маркетингових претензіях та оцінці. Чому? Тому що бенчмаркінг - це значна частина роботи та схильна до помилок. Ви завжди отримуєте "ви повинні були налаштувати цю спеціальну бездокументовану настройку". Перераховані номери дуже сприятливі для більшості баз даних. Це або номери, про які блогували, або заявлені у Twitter на певний час у минулому. Якщо ви вважаєте, що будь-які цифри помиляються, повідомте мене, і я оновлю їх.


0

Окрім попередніх відповідей, рекомендую також переглянути Tarantool , ClickHouse та ScyllaDB . Цих рішень більш ніж достатньо для більшості випадків.

За винятком того, що в деяких ситуаціях, особливо для вбудовування, MDBX (або щось подібне) може бути корисним.


3
Чи хотіли б ви детальніше пояснити, чому ви їх рекомендуєте?
Гельмар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.