Переход с SQL на NoSQL и на какую БД? - PullRequest
7 голосов
/ 16 октября 2011

В последнее время у нас возникают серьезные проблемы с производительностью в нашей текущей базе данных SQL Server. Наше приложение довольно тяжелое для одной таблицы, мы провели некоторый анализ, и около 90% наших данных в БД находятся в одной таблице. Мы выполняем множество запросов к этой таблице, а также для аналитических целей, с которыми мы сталкиваемся сейчас с серьезными проблемами с производительностью, даже при добавлении одного столбца иногда замедляется наш текущий Sp. Большинство наших команд являются разработчиками, и у нас нет доступа к базе данных, которая могла бы помочь перенастроить нашу текущую базу данных и заставить вещи работать быстрее.

Из-за этих ограничений мы думаем переместить эту часть приложения в базу данных NoSQL. Мои вопросы:

  1. Если это правильное направление, в котором мы движемся? Как мы ожидаем экспоненциального роста на этой таблице. С нагрузкой аналитики работает на нем.
  2. Какой вариант лучше для нас CouchDB, Cassandra, MongoDB? С упором на масштабируемость и производительность
  3. Для анализа в реальном времени и поддержки, аналогичной SQL, как все работает в NoSQL, есть ли средство, с помощью которого мы можем просматривать сохраняемые текущие данные? Я где-то читал о том, что Hadoop HIVE может использоваться для записи и получения данных в виде SQL из базы данных NoSQL. Я прав?
  4. Что может быть вещами, которые мы потеряли бы при переходе с SQL на NoSQL?

Ответы [ 3 ]

7 голосов
/ 25 октября 2011

На ваши вопросы:

1 .. Если это правильное направление, в котором мы движемся?Как мы ожидаем экспоненциального роста на этой таблице.С нагрузкой аналитики.

Да, большинство систем noSQL разрабатываются специально для решения вопросов масштабируемости и доступности, , если вы используете их по назначению .

2 .. Какой для нас будет наилучший вариант CouchDB, Cassandra, MongoDB?С упором на масштабируемость и производительность

Это полностью зависит от того, как выглядят ваши данные и как вы будете их использовать.Упомянутая вами база данных noSQL реализована и ведет себя очень по-разному друг от друга , см. Эту ссылку для более подробного обзора, сравнивая несколько упомянутых вами. Сравнение решения noSQL

3 .. Для анализа в реальном времени и поддержки, аналогичной SQL, как все работает в NoSQL, есть средство, с помощью которого мы можем просматривать текущие данные, которые хранятся?Я где-то читал о том, что Hadoop HIVE может использоваться для записи и получения данных в виде SQL из базы данных NoSQL. Я прав?

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

4 .. Что может быть вещами, которые мы потеряли бы при переходе с SQL на NoSQL?

Для noSQL есть два основных момента:

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

Согласованность : Если вы выбираете возможную согласованную систему для горизонтального масштабирования, вам придется принять устаревшие данные, которыеможет быть безвредным для некоторых приложений (форумов?) или ужасным для некоторых других систем (банков).

2 голосов
/ 27 августа 2012

Я думаю, что вы должны оставаться реляционными и настраивать таблицу, ее индексы и таблицы, к которым она присоединяется.Также следует рассмотреть возможность использования агрегированных (обобщенных данных).Возможно, более денормализованный дизайн поможет или даже перестроит данные в более звездную структуру.Кроме того, анализы оперативной обработки и поддержки принятия решений (или отчетности) не должны выполняться на одних и тех же таблицах.

1 голос
/ 16 октября 2011

Можно улучшить подход SQL, проверив наличие отсутствующих индексов и т. Д., А также посмотрев, является ли уровень изоляции, который вы используете, оптимальным.Может быть возможно использовать изоляцию моментального снимка и т. Д. Для повышения производительности. Ссылка MSDN

Прочтите также OLTP и OLAP.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...