#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 . , , Потому что они ослабляют правила целостности данных и транзакций, которые реализуют реляционные базы данных. Вы внедряете более низкий стандарт и часто можете повысить скорость. Это происходит за счет согласованности данных.