Транзакции ACID
Транзакции ACID гарантируют, что группа операций с базой данных ведет себя как единая, надежная единица, которая является атомарной, сохраняющей согласованность, изолированной от других транзакций и устойчивой после фиксации.
Definition
Транзакция — это единица работы, состоящая из одной или нескольких операций с базой данных, которые система выполняет с гарантиями ACID: атомарность, согласованность, изоляция и долговечность; она завершается либо фиксацией (делая свои эффекты постоянными), либо отменой (отменяя все свои эффекты).
Scope
Эта тема подробно рассматривает абстракцию транзакций и четыре свойства ACID: атомарность (фиксация или откат по принципу «все или ничего»), согласованность (каждая транзакция переводит базу данных из одного допустимого состояния в другое), изоляцию (одновременные транзакции не мешают друг другу наблюдаемым образом) и долговечность (зафиксированные эффекты сохраняются при сбоях). В ней рассматриваются семантика фиксации и отката, а также то, как эти свойства связаны с управлением параллелизмом и восстановлением. Она исключает конкретные протоколы, реализующие изоляцию и долговечность, которые являются смежными темами.
Core questions
- Что гарантирует каждое из свойств ACID?
- Как фиксация и откат определяют поведение транзакции по принципу «все или ничего»?
- Как изоляция связана с сериализуемостью и управлением параллелизмом?
- Как достигается долговечность, несмотря на сбои системы?
- Каковы ограничения транзакционной модели для длительных или распределенных работ?
Key concepts
- единица работы транзакции
- атомарность
- согласованность
- изоляция
- долговечность
- фиксация и откат
- откат
- модель состояния транзакции
Key theories
- Атомарность и долговечность
- Атомарность гарантирует, что эффекты транзакции применяются полностью или не применяются вовсе, даже при сбоях, а долговечность гарантирует, что после фиксации транзакции ее изменения сохраняются при сбоях; обе реализуются посредством журналирования и восстановления.
- Согласованность и изоляция
- Согласованность требует, чтобы каждая зафиксированная транзакция сохраняла ограничения целостности базы данных, а изоляция требует, чтобы параллельные транзакции давали результаты, эквивалентные некоторому последовательному порядку, скрывая промежуточные состояния друг от друга.
- Концепция транзакций и ее ограничения
- Абстракция транзакций упрощает рассуждения о сбоях и параллелизме, но Грей отметил ограничения для длительных действий и между системными границами, что послужило стимулом для последующей работы над сагами и распределенными транзакциями.
Clinical relevance
Транзакции ACID — это причина, по которой базам данных можно доверять критически важные операции: перевод средств, списание запасов или бронирование либо завершается полностью, либо не завершается вовсе и переживает сбои, поэтому транзакционные базы данных являются основой банковских, коммерческих и учетных систем.
History
Джим Грей сформулировал концепцию транзакций, их достоинства и ограничения в 1981 году; Хардер и Ройтер ввели аббревиатуру ACID в своем обзоре восстановления, ориентированного на транзакции, в 1983 году. Эти идеи, разработанные вокруг IBM System R, стали стандартной моделью надежной обработки данных и сформировали каждую последующую систему баз данных.
Key figures
- Jim Gray
- Andreas Reuter
- Theo Härder
Related topics
Seminal works
- gray1981
- haerder1983
- gray1992
Frequently asked questions
- В чем разница между согласованностью в ACID и согласованностью в теореме CAP?
- Это разные понятия. Согласованность ACID означает, что транзакция сохраняет ограничения целостности базы данных, переводя ее между допустимыми состояниями. Согласованность CAP относится к тому, что все реплики в распределенной системе согласуются с последним значением. Система может удовлетворять одному без другого, поэтому одно и то же слово обозначает различные свойства в двух контекстах.
- Являются ли свойства ACID независимыми друг от друга?
- Они являются концептуально различными гарантиями, но реализуются с помощью перекрывающихся механизмов. Атомарность и долговечность обеспечиваются журналированием и восстановлением; изоляция обеспечивается управлением параллелизмом; а согласованность сохраняется совместно логикой транзакций приложения и обеспечением системой трех других свойств.