Что мне выбрать: MongoDB / Cassandra / Redis / CouchDB? [закрыто]

Мы разрабатываем действительно большой проект, и мне было интересно, кто-нибудь может дать мне несколько советов о том, какую базу данных БД мы должны выбрать.

Наша система состоит из 1100 электронных устройств, которые отправляют сигнал на центральный сервер, а затем сервер сохраняет информацию о сигнале (длина сигнала составляет около 35 байтов). Как бы то ни было, эти устройства будут отправлять около 3 сигналов в минуту каждое, поэтому, если мы сделаем цифры, это будет 4.752.000 новых записей в день в базе данных и в общей сложности 142.560.000 новых записей в месяц.

Нам нужен бэкэнд БД, который светит быстро и надежно. Конечно, нам нужно провести сложный анализ данных в этой БД. Мы проводим некоторые исследования MongoDB / Cassandra / Redis / CouchDB, однако сайты с документацией все еще находятся на ранних стадиях.

Любая помощь? Идеи?

Большое спасибо!

72
задан Community 22 September 2017 в 17:57
поделиться

6 ответов

Я использовал MongoDB из Incanter , и он мне понравился. Хотя я не могу говорить о скорости с такими большими наборами данных, Clojure (на котором основан Incanter) очень надежен с точки зрения управления транзакциями. Incanter также предоставляет отличные инструменты анализа, поэтому, если вы планируете анализировать все эти данные, MongoDB + Incanter может быть мощной комбинацией.

2
ответ дан 24 November 2019 в 12:36
поделиться

Вы ищете хранилище данных, которое может обеспечивать «молниеносную» запись (данные сохраняются на диске), а анализ данных будет выполняться на более позднем этапе (это цикл READ). Кроме того, учитывая цифры, которые вы указываете, оказывается, что вы будете собирать все 159 МБ информации в день, или примерно 5 ГБ в месяц.

В таком случае почему бы не взглянуть на Redis.

Вы всегда можете заархивировать ежедневный файл данных Redis и обратиться к нему позже (если у вас есть проблемы с загрузкой 5 ГБ или больше места в ОЗУ, тогда это архивирование может быть обходным решением)

Redis довольно быстр, на основе цифр, опубликованных на этом сайте. Надеюсь это поможет. Киран

4
ответ дан 24 November 2019 в 12:36
поделиться

~ 3000 сигналов в минуту = 50 операций записи в секунду, с которыми любая из этих систем сможет легко справиться.

Cassandra, вероятно, будет работать лучше всего, поскольку размер вашего набора данных превышает объем памяти, а интеграция с Hadoop поможет в интеллектуальном анализе данных.

9
ответ дан 24 November 2019 в 12:36
поделиться

Если вам нравится внешний вид Cassandra из-за ее изначально спроектированной способности масштабироваться по горизонтали, согласованности настройки в зависимости от доступности и т. Д., То вы также можете взглянуть на Riak , в котором есть аналогичный набор функций, но другой подход.

2
ответ дан 24 November 2019 в 12:36
поделиться

Итак, вы храните данные в центральной базе данных для сбор данных? Нет обработки онлайн-транзакций?

Я не думаю, что MongoDB хорошо справляется с задачей обеспечения надежности. См. http://nosql.mypopescu.com/post/392868405/mongodb-durability-a-tradeoff-to-be-aware-of .

Может быть, вы можете использовать аналитику db Infobright, у нее есть версия сообщества: http://www.infobright.org/ ?

4
ответ дан 24 November 2019 в 12:36
поделиться

CouchDB очень надежен, обеспечивает отличную устойчивость, и вы будете испытывать очень низкую нагрузку на ЦП. . Он также отлично подходит для репликации между несколькими узлами как по требованию, так и непрерывно.

Благодаря возможностям репликации и RESTful API (в качестве API используется HTTP) вы можете довольно легко масштабировать по горизонтали, используя зрелые инструменты.(Nginx или Apache для обратного проксирования, балансировщики нагрузки HTTP и т. д.)

Вы пишете функции map/reduce на JavaScript для предварительного вычисления запросов. Результаты накапливаются на диске постепенно, что означает, что их нужно вычислять только один раз для каждого сигнала. Другими словами, запросы могут быть очень быстрыми, потому что они должны выполнять вычисления только с данными сигнала, записанными с момента последнего выполнения запроса.

CouchDB жертвует дисковым пространством в обмен на производительность, поэтому вы можете рассчитывать на использование большого количества дискового пространства. Ваши запросы могут быть молниеносными и экономить место на диске, если вы правильно их реализуете.

Попробуйте CouchDB.

Прочитайте Почему ученые, работающие на Большом адронном коллайдере, используют CouchDB и CouchDB на BBC в качестве отказоустойчивого, масштабируемого хранилища ключей и значений с несколькими центрами обработки данных

13
ответ дан 24 November 2019 в 12:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: