Зачем использовать NoSQL DB, когда мы могли бы масштабировать SQL DB путем совместного использования?

#sql #database #nosql #scaling #horizontal-scrolling

#sql #База данных #nosql #масштабирование #горизонтальная прокрутка

Вопрос:

Недавно я прочитал, что NoSQL DB масштабируется легче, чем традиционная SQL DB.

Но учтите, что у меня огромная таблица в SQL DB, тогда я мог бы легко распределять строки между несколькими серверами на основе некоторой хэш-функции. Например, если у меня есть 4 сервера, я мог бы сделать (id%4), где id является первичным ключом таблицы, чтобы определить, в какой таблице хранить эту конкретную строку.

Делая это, мы могли бы не только масштабировать SQL DB, но и могли бы гарантировать, что свойства ACID соблюдаются.

Тогда зачем нужно использовать NoSQL?

Ответ №1:

Базы данных NOSQL имеют тенденцию ослаблять свойства ACID баз данных. Например, вместо «немедленной» согласованности они допускают «конечную» согласованность.

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

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

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

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

Примечание: NOSQL действительно относится к классу «альтернативных» баз данных. «НЕТ» в NOSQL означает «не только». На самом деле, я думаю, что все это является частью функциональной экосистемы. NOSQL также может ссылаться на хранилища документов, базы данных пар ключ-значение, графические базы данных, базы данных ГИС — и сложные базы данных любого типа часто имеют значительную перекрывающуюся функциональность.

Комментарии:

1. Спасибо за ответ. Я знаю, что конечная согласованность увеличивает скорость выполнения, поскольку они отпускают свойства ACID. Но вопрос в том, почему говорится, что они масштабируются (масштабируются по горизонтали) лучше, чем SQL DBs, когда у нас есть возможность сегментирования в реляционных DBs, что, я думаю, является простым способом масштабирования DB, как я уже упоминал в вопросе.

2. @AtharwaAdawdakar . , , Потому что они ослабляют правила целостности данных и транзакций, которые реализуют реляционные базы данных. Вы внедряете более низкий стандарт и часто можете повысить скорость. Это происходит за счет согласованности данных.