Данные в нашей реляционной СУБД становятся большими, не пора ли перейти на NoSQL?

17

Мы создали приложение социальной сети для целей электронного обучения. Это экспериментальный проект, который мы исследуем в нашей лаборатории. Некоторое время он использовался в некоторых примерах, и данные в нашей реляционной СУБД (SQL Server 2008) становятся большими. Теперь это несколько гигабайт, и таблицы тесно связаны друг с другом. Производительность все еще в порядке, но когда мы должны рассмотреть другие варианты? Это вопрос производительности?

ePezhman
источник
3
Для любых социальных сетей я бы настоятельно рекомендовал графическую базу данных, такую ​​как Neo4j или OrientDB
Apollo

Ответы:

14

Несколько гигабайт не очень " большие ". Это больше похоже на обычный размер корпоративной БД. Пока вы переходите на PK при присоединении к таблицам, это должно работать очень хорошо, даже в будущем (если вы не получаете ТБ данных в день).

Большинство профессионалов, работающих в среде больших данных, рассматривают > 5TB как начало термина большие данные. Но даже тогда это не всегда лучший способ просто установить следующую лучшую базу данных nosql. Вы всегда должны думать о задаче, которую вы хотите заархивировать с данными (агрегировать, читать, искать, мои, ...), чтобы найти лучшие инструменты для вашей проблемы.

то есть, если вы выполняете много операций поиска в вашей базе данных, вероятно, было бы лучше запустить экземпляр / кластер solr и время от времени денормализовать ваши данные из СУБД, такой как Postgres или SQL Server, и поместить их в solr вместо простого перемещения данных. от sql до nosql с точки зрения настойчивости и производительности.

Johnny000
источник
10

Чтобы ответить на этот вопрос, вы должны ответить, какой компромисс вы можете себе позволить. RDBMs реализует ACID . Это дорого с точки зрения ресурсов. Нет никаких решений NoSQL, которые являются ACID. См. Теорему CAP, чтобы углубиться в эти идеи.

Таким образом, вы должны понимать каждый компромисс, данный каждым решением, и выбирать тот, который наиболее подходит для вашей проблемы.

rapaio
источник
8

Большие данные на самом деле не так о том, «насколько они большие».

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

Тогда вы должны подумать о том, как вы используете свои данные.

  • Подход SQL: все данные ценны, хорошо собраны и отобраны, и основное внимание уделяется хранению ценных и хорошо структурированных данных. Это может быть дорогостоящим, все взаимосвязано, и это хорошо для хорошо структурированных системных и функциональных данных.
  • Подход больших данных: В больших данных вы в основном храните практически все, независимо от того, какое значение это имеет, а затем выполняете активный процесс анализа. Вещи не связаны, они скопированы. Например, допустим, у меня есть запись в блоге. В Big Data не будет ссылки на его автора, но автор будет встроен в запись блога. Путь более масштабируемый, но требует другого и более сложного подхода.

Если вы храните «функциональные» данные, используемые вашим приложением, я предлагаю вам остаться на SQL. Если вы храните данные для того, чтобы искать их позже или составлять отчеты, и если этот объем данных может быстро увеличиться, я предложу большие данные. На мой взгляд, большие данные полезны, когда вы имеете дело с реальными данными, которые нужно постоянно собирать и анализировать.

tanou
источник
8

Я опубликовал довольно подробный ответ на stackoverflow о том, когда целесообразно использовать реляционную базу данных (или NoSQL), здесь:

Мотивация использования реляционной базы данных / ORM или базы данных документов / ODM

Резюме:

  • для мелочей используйте все инструменты, с которыми вы знакомы

  • несколько гигабайт, безусловно, мелкие вещи: они не становятся большими, пока не станут слишком большими, чтобы поместиться в один MySQL Cluster с разумным количеством узлов (16-32), что означает, возможно, 8-16 ТБ данных и несколько миллионов транзакций. в секунду (или более обычная база данных на жестких дисках, содержащая до 100 ТБ данных и несколько тысяч транзакций в секунду).

  • если вы застряли с другой базой данных (не MySQL Cluster), получите больше пользы от нее, добавив аппаратное обеспечение FusionIO.

  • если у вас есть данные размером более нескольких ТБ и быстрее, чем тысячи транзакций в секунду, самое время посмотреть на переход к логическому разделению в коде приложения, а затем на NoSQL.

  • Кассандра :)

Алекс я
источник
6

Время перехода на NoSQL будет зависеть от 2 вещей:

  1. Характер / структура ваших данных
  2. Ваше текущее выступление

Базы данных SQL превосходны, когда данные хорошо структурированы (например, если их можно смоделировать как таблицу, электронную таблицу Excel или набор строк с фиксированным числом столбцов). Также хорошо, когда вам нужно сделать много объединений таблиц (что звучит так же, как и вы).

Базы данных NoSQL превосходны, когда данные не структурированы за пределами пар ключ-значение.

С точки зрения производительности, вы должны задать себе один вопрос: ваше текущее SQL-решение медленное ?

Если нет, воспользуйтесь принципом « IIABDFI ».

DVK
источник