Главная » Spring » Описание транзакций в четырех словах Spring Spring

0

В лучших традициях разработки программного обеспечения была придумана аббревиатура, описывающая транзакции: ACID. Эта абб- ревиатура происходит от следующих слов.

# Atomic (атомарность) – транзакции состоят из одной или бо-

лее операций, объединенных в единицу работы. Атомарность гарантирует, что либо будут выполнены все операции, либо ни одна из них. Если все операции выполняются успешно, транз- акция завершается успехом. Если какая-то операция терпит неудачу, вся транзакция терпит неудачу и отменяется.

# Consistent (непротиворечивость) – после выполнения транз-

акции (независимо от успеха или неудачи) система остается в состоянии, не противоречащем бизнес-модели. Данные не должны повреждаться.

# Isolated (изолированность) – транзакции должны позволять

нескольким пользователям работать с одними и теми же дан- ными, не мешая друг другу. То есть транзакции должны быть изолированы друг от друга, предотвращая возможность одно- временного чтения и записи одних и тех же данных. (Обратите внимание, что изолированность обычно связана с блокировкой строк и/или таблиц в базе данных.)

# Durable (долговечность) – после выполнения транзакции ре-

зультаты ее выполнения должны сохраняться, чтобы они не терялись в случае ошибок во время работы системы. Под долговечностью обычно понимается сохранение результатов в базе данных или каком-то другом хранилище.

В примере с покупкой билета под гарантией атомарности транзак- ции понимается отмена всех результатов, если какая-то из операций потерпит неудачу. Атомарность обеспечивает непротиворечивость, гарантируя, что данные никогда не останутся в противоречивом, ча- стично измененном состоянии. Изолированность также обеспечива- ет непротиворечивость, не позволяя другой, параллельной транзак- ции «украсть» у вас свободное место в ходе покупки билета.

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

За более подробным описанием транзакций я рекомендую обра- титься к книге Мартина Фаулера (Martin Fowler) «Patterns of Enter- prise Application Architecture» (Addison-Wesley Professional, 2002). В частности, к главе 5, где обсуждаются транзакции и приемы па- раллельного доступа к данным.

Теперь, после знакомства с ключевыми особенностями транзак- ций, можно перейти к знакомству с поддержкой транзакций в Spring.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии