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