Реляционные базы данных разработаны с надежностью и согласованностью по своему ядру. Инженеры, которые их разработали, сосредоточились на транзакционной модели, которая гарантирует сохранение четырех принципов модели ACID. Однако появление новой модели неструктурированной базы данных превращает ACID в ее голову. Модель базы данных NoSQL избегает сильно структурированной реляционной модели в пользу гибкого подхода к хранению ключей / значений. Этот неструктурированный подход к данным требует альтернативы модели ACID: модель BASE.
Основные положения модели ACID
Существует четыре основных принципа использования модели ACID:
- валентность транзакций гарантирует, что каждая транзакция базы данных представляет собой единую единицу, которая использует подход «все или ничего» для выполнения. Если какой-либо оператор в транзакции терпит неудачу, вся транзакция отменяется.
- Реляционные базы данных также обеспечивают консистенция каждой транзакции с бизнес-правилами базы данных. Если какой-либо элемент атомной транзакции нарушит согласованность базы данных, вся транзакция завершится с ошибкой.
- Механизм базы данных обеспечивает изоляция между несколькими транзакциями, происходящими одновременно или около того. Каждая транзакция происходит либо до, либо после каждой другой транзакции, и представление базы данных, которое транзакция видит в ее начале, изменяется только самой транзакцией до ее завершения. Никакая транзакция никогда не должна видеть промежуточный продукт другой транзакции.
- Окончательный принцип ACID, долговечность, гарантирует, что как только транзакция будет передана базе данных, она будет постоянно сохранена с использованием резервных копий и журналов транзакций. В случае сбоя эти механизмы могут использоваться для восстановления совершенных транзакций.
Основные принципы BASE
С другой стороны, базы данных NoSQL охватывают ситуации, когда модель ACID переполнена или фактически препятствует работе базы данных. Вместо этого NoSQL полагается на более мягкую модель, известную, соответственно, как модель BASE. Эта модель обеспечивает гибкость, предлагаемую NoSQL, и аналогичные подходы к управлению и сохранению неструктурированных данных. BASE состоит из трех принципов:
- Базовая доступность, Подход базы данных NoSQL фокусируется на доступности данных даже при наличии множественных сбоев. Это достигается с помощью высокораспределенного подхода к управлению базами данных. Вместо поддержки одного большого хранилища данных и фокусирования на отказоустойчивости этого хранилища базы данных NoSQL распространяют данные во многих системах хранения с высокой степенью репликации. В маловероятном случае, когда отказ прерывает доступ к сегменту данных, это не обязательно приводит к полному сбою базы данных.
- Мягкое состояние, Базы баз данных полностью отказываются от требований согласованности модели ACID. Одна из основных концепций BASE заключается в том, что согласованность данных является проблемой разработчика и не должна обрабатываться базой данных.
- Конечная согласованность, Единственное требование, что базы данных NoSQL относительно согласованности требует, чтобы в какой-то момент в будущем данные будут сходиться к согласованному состоянию. Однако никаких гарантий не возникает, когда это произойдет. Это полное отклонение от требования немедленной согласованности ACID, которое запрещает выполнение транзакции до завершения предыдущей транзакции, и база данных сходится в согласованное состояние.
Модель BASE не подходит для каждой ситуации, но она, безусловно, является гибкой альтернативой модели ACID для баз данных, которая не требует строгого соблюдения реляционной модели.