NoSql против реляционной базы данных - PullRequest
150 голосов
/ 12 ноября 2010

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

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

Ответы [ 9 ]

121 голосов
/ 12 ноября 2010

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

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

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

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

Те не исчезли.

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

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

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

91 голосов
/ 12 ноября 2010

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

  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 - Ключ / Значение

37 голосов
/ 12 августа 2015

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

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

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

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

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

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

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

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

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

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

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

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

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

14 голосов
/ 12 ноября 2010

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

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

3 голосов
/ 11 октября 2017

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

3 голосов
/ 18 декабря 2016

СУБД больше внимания уделяют отношениям, а NoSQL больше внимания уделяют хранилищу

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

3 голосов
/ 24 мая 2015

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

ИЛИ

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

, тогда

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

1 голос
/ 31 октября 2018

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

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

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

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

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

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

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

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

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

1 голос
/ 12 мая 2018

С mongodb.com :

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

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

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

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

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

...