NoSql против реляционной базы данных


158

В последнее время NoSQL приобрел огромную популярность.

Каковы преимущества NoSQL перед традиционными СУБД ?


Ответы:


123

Не все данные являются реляционными. В таких ситуациях может быть полезен NoSQL.

С учетом сказанного, NoSQL означает «не только SQL». Он не предназначен для сбивания SQL-кода или его замены.

SQL имеет несколько очень больших преимуществ:

  1. Сильная математическая основа.
  2. Декларативный синтаксис.
  3. Хорошо известный язык в языке структурированных запросов (SQL).

Те не ушли.

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

Документы могут храниться в нереляционных базах данных, таких как CouchDB.

Может быть, чтение это поможет.


10
Не могли бы вы привести несколько примеров нереляционных данных?
user496949

7
Документы и изображения могут храниться внутри СУБД, например, SQL Server и Oracle? Тогда почему NoSQL?
user496949

2
Полуструктурированные данные являются одним из таких классов. Он содержит XML, электронные письма, JSON и т. Д. См. Страницу википедии. Общее правило заключается в том, что структура существует, но она слабо определена и динамически расширяема (последние стремятся к классу с помощью реляционной модели - и хотя моделирование не является невозможным, оно определенно громоздко). Другой класс - «естественные данные»: роман, образ, оба без метаданных.
Я ПОЛУЧИЛ ХОРОШИЕ ОТВЕТЫ

2
Ну, ты не можешь сделать SELECT blob FROM images WHERE blob CONTAINS('red car'). Таким образом, хотя вы можете хранить необработанные данные в базе данных, вы не можете искать их, не подключая метаданные. Модули полнотекстового поиска в системах RDBMS устраняют некоторые неполные структурные пробелы.
Я ПОЛУЧИЛ ХОРОШИЕ ОТВЕТЫ

1
@duffymo: документы не являются "нереляционными". Документы часто хранятся в СУБД SQL, и для этого вам не нужна СУБД NOSQL. Фактически базы данных NOSQL часто используют модели данных, которые являются менее общими и более ограниченными в применении, чем реляционная модель. Например, граф базы данных. Тип хранимых данных не объясняет никаких преимуществ NOSQL.
nvogel

98

История выглядит так:

  1. Google нуждается в слое хранения для их инвертированного поискового индекса. Они полагают, что традиционная СУБД не собирается ее сокращать. Поэтому они реализуют хранилище данных NoSQL, BigTable поверх своей файловой системы GFS. Основная часть состоит в том, что тысячи дешевых аппаратных машин обеспечивают скорость и избыточность.

  2. Все остальные понимают, что Google только что сделал.

  3. Теорема Брюера CAP доказана. Все используемые СУБД системы являются системами CA. Люди начинают играть с системами CP и AP. K / V магазины намного проще, поэтому они являются основным средством исследования.

  4. Системы «программное обеспечение как услуга» в целом не предоставляют хранилище, подобное SQL. Следовательно, люди больше интересуются магазинами типа NoSQL.

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

C - согласованность
A - доступность
P - допуск раздела
K / V - ключ / значение


10
Что такое CAP, CP, AP, K / V?
известноасиля

3
Посмотрите теорему CAP в Википедии. CA и CP происходят оттуда. K / V - это сокращение от Key / Value, (распределенное) конечное отображение из ключей в значения.
Я ПОЛУЧИЛ ОТЛИЧНЫЕ ОТВЕТЫ

« Все остальные понимают, что Google только что сделал ». Похоже, шотландский ответ для меня (иначе НЕ CRAP).
ruffin

38

NoSQL лучше чем RDBMS из-за следующих причин / свойств NoSQL

  1. Он поддерживает полуструктурированные данные и изменчивые данные
  2. Нет схемы
  3. Пропускная способность чтения / записи очень высока
  4. Горизонтальная масштабируемость может быть достигнута легко
  5. Поддержит Bigdata в объемах Terra Bytes & Peta Bytes
  6. Обеспечивает хорошую поддержку аналитических инструментов поверх Bigdata
  7. Может быть размещен на более дешевых аппаратных средствах
  8. Опция кэширования в памяти доступна для увеличения производительности запросов
  9. Более быстрые жизненные циклы разработки для разработчиков

РЕДАКТИРОВАТЬ:

Чтобы ответить на вопрос «почему СУБД не может масштабироваться», пожалуйста, взгляните на pdf СУБД RDBMS, написанный Ставросом Харизопулосом, Дэниелом Дж. Абади, Сэмюэлем Мэдденом и Майклом Стоунбрейкером

СУБД имеют проблемы с обработкой огромных объемов данных в терабайтах и ​​петах . Даже если у вас есть резервный массив независимых / недорогих дисков (RAID) и измельчение данных, он не будет хорошо масштабироваться для огромного объема данных. Вам требуется очень дорогое оборудование.

Ведение журнала . Сборка записей журнала и отслеживание всех изменений в структурах базы данных снижает производительность. Ведение журнала может не потребоваться, если возможность восстановления не является обязательной или если возможность восстановления обеспечивается другими способами (например, другими сайтами в сети).

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

Фиксация : в многопоточной базе данных многие структуры данных должны быть заблокированы, прежде чем к ним можно будет получить доступ. Удаление этой функции и переход на однопоточный подход оказывает заметное влияние на производительность.

Управление буфером : системе баз данных основной памяти не требуется доступ к страницам через пул буферов, что устраняет уровень косвенности при каждом доступе к записи.

Это не значит, что мы должны использовать NoSQL поверх SQL.

Тем не менее, RDBMS лучше, чем NoSQL, по следующим причинам / свойствам RDBMS

  1. Транзакции со свойствами ACID - атомарность, согласованность, изоляция и долговечность
  2. Соблюдение строгой схемы записи / чтения данных
  3. Управление запросами в реальном времени (в случае размера данных <10 терабайт)
  4. Выполнение сложных запросов, включающих объединение и группирование по предложениям

Мы должны использовать RDBMS (SQL) и NoSQL (не только SQL) в зависимости от бизнес-ситуации и требований


2
Стоит отметить, что некоторые базы данных NoSQL поддерживают транзакции ACID.
Дейв Кассель

15

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

NOSQL означает только отсутствие SQL (или «не только SQL»), но это не означает то же самое, что и отсутствие реляционного . В принципе, реляционная база данных создаст очень хорошее решение NOSQL - просто ни один из текущего набора продуктов NOSQL не использует реляционную модель.


4
Похоже, что на недавней конференции O'Reilly Strata Conference Марк Мэдсен придумал новую интерпретацию «NoSQL» в своей истории баз данных, чтобы заменить «не только SQL». Теперь: «Нет, SQL» ;-)
Лукас Эдер

4

СУБД больше ориентированы на отношения, а NoSQL больше на хранилище.

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


4

Самое большое преимущество NoSQL над RDBMS - масштабируемость .
Базы данных NoSQL могут легко масштабироваться до многих узлов, но для СУБД это очень сложно.
Масштабируемость не только дает вам больше места для хранения, но и значительно повышает производительность, поскольку многие хосты работают одновременно.


3

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

ИЛИ

Если модель данных не предопределена

затем

База данных NoSQL - лучший выбор.


2

Просто добавив ко всей приведенной выше информации

Преимущества NoSql:

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

2) Базы данных NoSql в конечном итоге согласуются, что на простом языке означает, что они не будут обеспечивать какую-либо блокировку данных (документов), как в случае СУБД, и что это означает, что всегда доступен последний моментальный снимок данных, что увеличивает задержку вашего приложения. ,

3) Он использует стратегию MVCC (Multi View параллелизм управления) для поддержки и создания снимка данных (документов).

4) Если вы хотите проиндексировать данные, вы можете создать представление, которое будет автоматически индексировать данные по предоставленному вами представлению.

Недостатки NoSql:

1) Он определенно не подходит для больших транзакционных приложений, так как в конечном итоге он непротиворечив и не поддерживает свойства ACID.

2) Кроме того, он создает несколько снимков (ревизий) ваших данных (документов), так как использует методологию MVCC для контроля параллелизма, в результате чего пространство используется быстрее, чем раньше, что делает сжатие и, следовательно, повторную индексацию более частым, и это замедлит вашу работу. ответ приложения по мере роста данных и транзакций в вашем приложении. Чтобы противостоять этому, вы можете масштабировать узлы по горизонтали, но опять же это будет стоить дороже, чем сравнивать базу данных sql.


1

От mongodb.com :

Базы данных NoSQL отличаются от старых реляционных технологий четырьмя основными областями:

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

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

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

Модель разработки : базы данных NoSQL имеют открытый исходный код, тогда как реляционные базы данных, как правило, имеют закрытый исходный код с лицензионными сборами, выплачиваемыми за использование их программного обеспечения. С NoSQL вы можете начать проект без каких-либо значительных инвестиций в программное обеспечение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.