Лучшая база данных Интернета вещей?

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

  • поддержка JSON
  • Масштабируемость
  • Гибкость для автоматического добавления нескольких столбцов в соответствии с полезной нагрузкой
  • Поддержка Python и PHP
  • Чрезвычайно быстрое чтение, запись
  • Возможность экспорта данных как минимум за 6 месяцев в формате CSV


Пожалуйста, вернитесь в ближайшее время. Любая помощь будет оценена.

Спасибо


person Abhay Bh    schedule 04.12.2017    source источник


Ответы (2)


Формирование базы данных на основе входных данных является ошибкой. Подумайте о том, что завтра ваши данные будут в формате CSV или XML в немного другом формате. Создайте свою базу данных на основе абстрактной модели данных, нормализуйте ее и примените существующие данные к своей модели. Формируйте свою структуру на основе того, какие входные данные у вас есть и какой результат вы планируете получить. Если вы извлекаете тот же контент, что и входные данные, хранения данных в файлах будет достаточно, вам не нужна база данных.

Кроме того, вы не хотите хранить «сырые» записи в базе данных. Даже если ваша база данных может составить запись данных из необработанного элемента во время выполнения, вы не сможете выполнить выборку на основе определенного извлеченного элемента, не просматривая все записи.

Большинство баз данных позволяют подключаться откуда угодно (лучшей поддержки PostgreSQL в Java по сравнению с Python не бывает, но качество и уровень стандартизации драйверов могут различаться). Вопрос в том, какие функции должен поддерживать ваш драйвер. Например, вам может потребоваться поддержка массового импорта (не отправляйте в базу данных большие наборы INSERT).

То, что вы на самом деле ищете, это:

  • Масштабируемость: может ли ваша база данных расти вместе с вашими данными? Выиграет ли БД добавление дополнительных процессоров (особенно MySQL не подходит для больших запросов). Можете ли вы разбить базу данных на несколько экземпляров? (MySQL снова не справляется с этим).
  • ваша модель похожа на снежинку? Если да, вы можете рассмотреть NoSQL, в противном случае держитесь подальше от него. Если вам удается моделировать в виде снежинки (и это означает, что вы открыты для компромиссов), вы можете использовать что-нибудь вроде поисковых продуктов на основе Lucene, Mongo, Cassandra и т. д. Тот факт, что у вас есть временные ряды, не дает вам права на NoSQL. Например, у вас может быть 10 тыс. устройств, выдающих 5 тыс. типов сообщений. Конкретные данные избыточно записываются на уровне устройства и на уровне типа сообщения. В этом случае из-за отношения n:m у вас больше нет снежинки.
  • зачем вы храните данные? Какие запросы вы собираетесь выдавать?
person Community    schedule 05.12.2017
comment
Привет @Razvan, спасибо за прекрасный ответ. Согласно вашему пункту 1: MySQL не кажется хорошим вариантом с точки зрения масштабируемости. Согласно пункту 2: только 5-8 таблиц будут связаны друг с другом из 500 таблиц. В соответствии с пунктом 3: я храню данные, чтобы в основном анализировать их, отображать их соответствующим образом, уведомлять меня о моих счетах и ​​оценках затрат в зависимости от данных за предыдущие 6 месяцев или более, чтобы предупредить меня, когда какая-то часть машины не работает больше чем 3 часа или около того. Итак, о MYSQL сейчас не может быть и речи. Вернитесь назад, чтобы продолжить обсуждение. Спасибо - person Abhay Bh; 05.12.2017
comment
NoSQL не является ни типом базы данных, ни поставщиком. Это сравнение яблок с апельсинами. - person Aluan Haddad; 16.01.2018
comment
NoSQL — это тип базы данных, а не поставщик. Половина вашего утверждения верна, а половина нет. Яблоки и апельсины сравнивают так же, как SQL и NoSQL. Существуют общие функции, предоставляемые практически всеми поставщиками SQL, и функции, предоставляемые большинством баз данных NoSQL. Отсутствие транзакций и отношения N-to-M кажется повторяющимся шаблоном в мире NoSQL. - person ; 16.01.2018

Почему вы хотите уйти от MySQL? Это открытый исходный код и может соответствовать всем критериям, которые вы перечислили выше. Это очень субъективный вопрос, поэтому трудно дать хороший ответ, но MySQL — неплохой вариант.

person Lorna Mitchell    schedule 04.12.2017
comment
Мои данные - это данные TimeSeries. Я хочу принимать входящие полезные данные json (которые поступают с устройств) непосредственно в базу данных. В настоящее время у меня запущены сценарии, которые сначала создают таблицу, а затем вставляют запись. У меня также есть сценарии, которые ищут данные шестимесячной давности и позволяют мне загружать их из базы данных. Тем не менее, я хочу сократить время кодирования. Я думал об InfluxDB, Cassandra или MongoDB. Я сбит с толку. Что может оказаться лучшим решением в этом случае? - person Abhay Bh; 04.12.2017
comment
MySQL имеет поддержку JSON (начиная с версии 5.7 и далее), а также может удовлетворить все ваши другие требования, я думаю, в зависимости от того, что вам нужно от части CSV. Все базы данных, которые вы упомянули, могут покрыть некоторые из требований, но, насколько я знаю, MySQL имеет наибольшее покрытие - или, возможно, PostgreSQL, который имеет более полную поддержку JSON. - person Lorna Mitchell; 04.12.2017
comment
Хорошо, спасибо за ответ. Я проверю и PostgreSQL, а потом приду к выводу. - person Abhay Bh; 04.12.2017
comment
Привет, Лорна, я проверил PostgreSQL так же, как мы обсуждали ранее. Тем не менее, я еще не уверен, использовать ли его на полную ставку или нет, или остаться с MySQL. Как только я буду удовлетворен своим исследованием, я отмечу его как принятое :) - person Abhay Bh; 08.12.2017