Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Транзакция — это группа операций, имеющих следующие свойства: атомарные, согласованные, изолированные и устойчивые (ACID). Поддержка транзакций позволяет разрабатывать новые типы приложений, упрощая процесс разработки и делая приложение более надежным. Оставшаяся часть этого раздела содержит сценарии, демонстрирующие необходимость этих свойств, а затем таблицу, определяющую каждое свойство.
В атомарной группе операций каждая операция в группе должна быть успешной, или последствия всех этих операций должны быть отменены (также известны как откат). Например, банковский перевод должен быть атомарным набором двух операций: дебет со счета и кредит на другой счет. Дебет и кредит должны быть реализованы в виде атомарной группы. Если обе операции не завершаются успешно, то передача либо несправедливо в пользу банка, либо в пользу владельца счета.
Требование согласованности означает, что данные согласованы после транзакции (предполагая, что мы начали работу с согласованной системой перед транзакцией). В примере банковского перевода согласованность может быть определена как постоянная величина объединенного баланса двух счетов. Чтобы реализовать согласованность в примере банковских переводов, дебетовые и кредитные операции просто должны быть для той же суммы денег.
Еще одним примером транзакции является обновление веб-сайта. Сайт электронной коммерции требует, чтобы новая страница навигации по категориям продуктов отображалась точно так же, как страницы сведений о продукте, описывающие новые продукты. В этом случае необходимо обновить и добавить несколько записей каталога под контролем транзакции. Не только необходимо, чтобы обновления были атомарными, но также необходимо, чтобы клиент, который в настоящее время совершает покупки, не видел обновлений в процессе. Это пример свойства изоляции транзакций .
Свойство долговечности требует, чтобы после завершения обновления его эффекты сохранялись, даже если система прекращает откликаться. В предыдущем примере устойчивость может обеспечиваться путем гарантии достаточного восстановления данных, чтобы все новые записи файловой системы, представляющие добавление нового продукта на сайт, появлялись даже в случае, если система перестает отвечать. Для этого требуется система с механизмами резервного копирования данных, восстановления и высокого уровня доступности.
Гарантия атомарности транзакции, а также других её свойств, сохраняется при любом количестве сбоев, включая сбои, происходящие во время восстановления после предыдущего сбоя. В конечном итоге система достигнет одного из двух состояний: все операции были применены или ни одна из операций не была применена.
Свойства транзакции приведены в следующей таблице.
Срок | Описание |
---|---|
атомарная |
В транзакции либо все операции выполняются успешно, либо не выполняется ни одна. |
Согласованность |
Если данные согласованы до начала транзакции, они будут согласованы после завершения транзакции. |
изолированный |
Эффекты транзакции, которая выполняется, скрыты от всех остальных транзакций. |
прочный |
Когда транзакция завершится, её результаты сохраняются и переживут системный сбой. |
Эти свойства гарантируют, что программное обеспечение может обрабатывать непредвиденные ошибки, так как оно может просто прервать транзакцию, когда непредвиденная ситуация предотвращает успешное завершение. Инфраструктура транзакций гарантирует откат всех последствий прерванной транзакции, возвращая данные в согласованное состояние. Таким образом, транзакционная система обеспечивает корректное восстановление от сбоев системы.
Чтобы гарантировать свойства ACID, система, поддерживающая транзакции, должна иметь надежную возможность ведения журнала, которую можно использовать для фиксации или отката транзакций по мере необходимости. Дополнительные сведения см. в разделе Common Log File System.