Шаг 95 - Что такое транзакция и ACID ?

Основной смысл понятия транзакции(transaction) в завершенности. То есть это набор действий, который должны быть либо полностью выполнены, либо отменены совсем. Давайте рассмотрим бухгалтерский пример. Например, Вы создаете программу, которая ведет складской учет. Что нужно сделать при переводе товара с одно склада на другой.

Уменьшить количество товара на первом складе
Записать результат
Увеличить количество на втором
Записать результат

Примерно так. Что будет если при записи результата в первой операции произойдет сбой на компьютере? Все, что было выписано пропадет. Уйдет с одного склада и не придет на второй. Так вот все эти четыре операции вместе и есть транзакция. Либо все они должны быть выполнены, либо отменены совсем и все должно вернуться к начальному состоянию. Все становиться намного ответственнее, если разговор идет о деньгах. То есть при переводе денег со счета на счет. Например, Вы переводите деньги с одного банка в другой. В результате сбоя может возникнуть ситуация когда деньги с одного счета не списалась а на другой пришли. Вам от этого хорошо только не законно, так как в результате данной операции были получены новые деньги, а производить деньги имеет право только государство. Как видите понятие транзакции довольно важно. Внимательно присмотревшись к жизни, Вы увидите много ситуаций где подобная организация необходима. В основу систем транзакций положено 4 принципа которые называют ACID (atomicity элементарность , consistency последовательность ,isolation изолированность ,durability устойчивость).

Элементарность

Этот принцип требует, чтобы транзакция была либо выполнена, либо отменена (аварийно прекращена). В любом из этих двух случаев данные должны быть правильно сохранены в конечном состоянии, либо в начальном в случае аварии. И все.

Последовательность

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

Изолированность

При рассмотрении транзакции возникает проблема промежуточного состояния. При переводе товара скажем с одного склада на другой он некоторое время как бы висит в воздухе, пока не будет завершена транзакция. Это время может быть маленьким, а может и большим. Это промежуток и называют переходным состоянием. Если система однопользовательская то проблем нет. А что если несколько транзакций пытаться изменить одни и те же данные ? Так вот они должны быть изолированы друг от друга. К сожалению, тут возникает много вопросов, например о версиях данных и так далее. Проверка версий данных ложиться на разработчика.

Устойчивость

Этот принцип подразумевает, что вообще нет возможности прервать транзакцию и потерять данные. Сюда входит, в том числе и надежность оборудования.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 23.06.2001