Использование базы данных NoSQL в науке о данных

16

Как базы данных NoSQL, такие как MongoDB, можно использовать для анализа данных? Какие функции в них могут сделать анализ данных быстрее и эффективнее?

jithinjustin
источник
2
Основное использование - хранение данных и получение данных. Фактически, речь идет только об использовании базы данных NOSQL или любой другой базы данных. Хотите сделать свой вопрос лучше?
Spacedman
Да, база данных в основном используется для хранения и извлечения данных. Как их можно использовать для анализа данных? Какие инструменты встроены в базы данных NOSQL, такие как mongodb, что делает анализ данных простым и мощным?
jithinjustin
1
Усовершенствуйте свой вопрос, отредактировав его, не добавляя в комментарии.
Spacedman

Ответы:

23

Честно говоря, большинство баз данных NoSQL не очень хорошо подходят для приложений с большими данными. Для подавляющего большинства всех приложений для работы с большими данными производительность MongoDB по сравнению с реляционной базой данных, такой как MySQL , значительно ниже , чтобы можно было полностью отказаться от чего-то вроде MongoDB.

С учетом вышесказанного есть несколько действительно полезных свойств баз данных NoSQL, которые, безусловно, работают в вашу пользу, когда вы работаете с большими наборами данных, хотя вероятность этих преимуществ перевешивает в целом низкую производительность NoSQL по сравнению с SQL для чтения. Интенсивные операции (наиболее похожие на типичные случаи использования больших данных) низкие.

  • Нет схемы - если вы работаете с большим количеством неструктурированных данных, может быть трудно принять решение и жестко применить схему. Базы данных NoSQL в целом очень поддерживают это и позволят вам вставлять документы без схемы на лету, что, безусловно, не то, что база данных SQL будет поддерживать.
  • JSON. Если вам довелось работать с документами в стиле JSON, а не сфайлами CSV , то вы увидите много преимуществ в использовании чего-то вроде MongoDB для уровня базы данных. Как правило, экономия рабочего процесса не перевешивает увеличение времени запросов.
  • Простота использования - я не говорю, что базы данных SQL всегда сложны в использовании или что Cassandra - самая простая в мире вещь для настройки, но в целом базы данных NoSQL проще в настройке и использовании, чем базы данных SQL. MongoDB является особенно убедительным примером этого, известного тем, что он является одним из самых простых в использовании уровней базы данных (вне SQLite ). SQL также имеет дело с большой нормализацией, и существует большое наследие лучших практик SQL, которые просто тормозят процесс разработки.

Лично я мог бы предложить вам также проверить графические базы данных, такие как Neo4j, которые показывают действительно хорошую производительность для определенных типов запросов, если вы хотите выбрать бэкэнд для своих приложений для обработки данных.

Indico
источник
Вы правы. Базы данных NOSQL в основном используются для хранения неструктурированных или полуструктурированных данных, таких как json. Можете ли вы объяснить некоторые виды анализа данных, которые мы можем сделать с ними. Какие инструменты встроены в mongodb, которые можно использовать для анализа данных?
jithinjustin
1
@jithinjustin нет инструментов анализа данных, встроенных в монго, или вообще никакой базы данных. Также jsonполностью структурированы данные. Технически вы можете выполнить любой анализ данных, используя базу данных NOSQL, на самом деле не связанную. Есть инструменты, построенные на вершине монго, как, например, аналитика.
индик
1
Я не знаю обо всем этом. MongoDB может работать лучше, чем MySQL. У вас будет лучший аргумент, если вы скажете PostgreSQL (который, кстати, может принять JSON). В любом случае, я бы не рассматривал какую-то произвольную «производительность» (мы не знаем, каков вариант использования) как причину не использовать NoSQL. Также не стоит сбрасывать со счетов несколько баз данных. Помните, MongoDB имеет удивительные функции агрегирования, которых нет в SQL.
Том
1
@ По производительности, вы обнаружите, что единственная задача, на которой Mongo действительно превосходит MySQL, - это вставки ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ), которые являются сравнительно небольшой частью анализа данных. Функции агрегации SQL гораздо более зрелые, чем у Mongo. Что касается MYSQL и Postgres, цифры очень временно искажены, и оба имеют тенденцию предлагать одинаковую производительность. MYSQL встречается чаще, поэтому я упомянул об этом, но они очень похожи.
индик
Я всегда видел лучшую производительность на MongoDB, когда вещи помещаются в память. Я беру тесты с большим успехом, потому что если вы немного погуглите в Google, вы найдете несколько тестов, показывающих MongoDB быстрее. Это действительно зависит от ваших потребностей. Тем не менее, чтобы помочь ответить на первоначальный вопрос - я думаю, что существует множество вариантов использования NoSQL в науке о больших данных и аналитике.
Том
4

Одно из преимуществ подхода NoSQL без схемы состоит в том, что вы не фиксируете преждевременно и можете применять правильную схему во время запроса, используя соответствующий инструмент, такой как Apache Drill . Смотрите эту презентацию для деталей. MySQL не будет моим первым выбором в условиях больших данных.

Эмре
источник
Вот связанный вопрос, касающийся NoSQL, JSON и Drill: datascience.stackexchange.com/questions/9568/…
sheldonkreger
4

Рассмотрим, попробуйте и, возможно, даже использовать несколько баз данных. Здесь дело не только в производительности. Это действительно будет сводиться к вашим требованиям. Сколько данных вы говорите? какие данные? как быстро тебе это нужно? Ты больше читаешь тяжелым или пишешь тяжелым?

Вот одна вещь, которую вы не можете сделать в базе данных SQL: Рассчитать настроения. http://www.slideshare.net/shift8/mongodb-machine-learning

Конечно, скорость в этом случае может быть недостаточно быстрой для ваших нужд, но это возможно. При некотором кешировании определенных агрегатных значений это было вполне приемлемо. Зачем ты это делаешь? Удобство.

На самом деле удобство - это то, что вы собираетесь убедить. Именно поэтому (на мой взгляд) были созданы базы данных NoSQL. Производительность тоже, конечно, но я стараюсь сбрасывать со счетов тесты и больше фокусироваться на других проблемах.

Базы данных MongoDB (и некоторые другие NoSQL) имеют некоторые очень мощные функции, такие как встроенная карта / уменьшение. Это может привести к экономии как затрат, так и времени по сравнению с использованием чего-то вроде Hadoop. Или он может предоставить прототип или MVP для запуска более крупного бизнеса.

Как насчет графовых баз данных? Они тоже "NoSQL". Посмотрите на базы данных, как OrientDB. Если вы хотите поспорить о производительности ... Я не думаю, что вы покажете мне базу данных SQL, которая быстрее там =) ... и графические базы данных имеют несколько действительно удивительных приложений, основанных на том, что вам нужно сделать.

Правило технологии (и интернета) не слишком удобно с одной вещью. Ты будешь ограничен и настроишься на провал.

Том
источник
1
Я не вижу ничего в этой ссылке или здесь, что доказывает, что вы не можете выполнять анализ настроений в базе данных SQL. Примеры mongoDB используют Javascript в БД, поэтому вы можете использовать любой встроенный язык в базе данных SQL. Например, Postgres + R.
Spacedman
Хотелось бы увидеть, где вы можете выполнить код и отобразить / уменьшить в этих базах данных. На полном серьезе (особенно Postgres). ... и даже если бы вы могли, это, между прочим, не делает ответ менее действительным. Можно просто захотеть использовать NoSQL. Это работает.
Том
1
Postgres + C, Python, Perl, R обеспечивают вашу базу данных Postgres новейшими алгоритмами машинного обучения. Легко: postgresql.org/docs/9.0/static/xplang.html
Spacedman
Ницца. Я должен буду попробовать это когда-нибудь. Как насчет MySQL?
Том