Откат — термин программирования и техники¶
Откат (rollback) — процесс возврата системы, данных или программного обеспечения к предыдущему состоянию после неудачного изменения, сбоя или ошибки. Термин широко применяется в информационных технологиях (базы данных, программное обеспечение, сети), в компьютерных играх, в промышленной автоматике и в бизнес-процессах. В контексте баз данных откат означает отмену незавершённой транзакции так, будто она никогда не выполнялась; в контексте развёртывания ПО — возврат к предыдущей рабочей версии после того, как новая версия показала критические дефекты.
¶Откат в базах данных
В теории транзакций откат является одной из двух ключевых операций наряду с фиксацией (commit). Транзакция — это логически завершённая единица работы с данными, которая должна быть либо полностью выполнена, либо полностью отменена (свойства ACID). Если во время выполнения транзакции произошёл сбой — обрыв связи, отказ диска, нарушение ограничений целостности — система управления базой данных (СУБД) выполняет откат, удаляя все промежуточные изменения и восстанавливая данные в исходное состояние.
Механизм отката реализуется через журнал транзакций (write-ahead log). Перед внесением изменений в основные файлы данных СУБД записывает в журнал информацию о том, что именно изменяется и каково было прежнее значение. При откате журнал используется для «отката» изменений в обратном порядке. Примеры СУБД с развитой системой отката — PostgreSQL, Oracle Database, Microsoft SQL Server.
Помимо отката отдельных транзакций, в СУБД поддерживается понятие точки восстановления (savepoint) — промежуточной отметки, к которой можно вернуться, не отменяя всю транзакцию целиком.
¶Откат в программном обеспечении
В разработке и эксплуатации программного обеспечения откат означает возврат к предыдущей версии после того, как новая версия (релиз, патч, конфигурация) привела к деградации или недоступности сервиса. Практика отката является частью управления конфигурацией и релизами (ITSM/ITIL).
Выделяют несколько стратегий:
- Откат релиза — возврат к предыдущему установленному пакету программного обеспечения.
- Откат конфигурации — возврат к прежним настройкам сервера, сети или приложения.
- Откат миграции схемы — возврат структуры базы данных к предыдущей версии (в отличие от транзакционного отката, это откат структуры, а не данных).
- Канареечное развёртывание (canary) — постепенный выпуск новой версии на небольшой группе пользователей; при признаках проблем откат выполняется автоматически.
В системах контроля версий (Git, Subversion) откат — это операция возврата репозитория к более раннему коммиту. В Git это достигается командами git revert (создание нового коммита, отменяющего изменения) или git reset (перемещение указателя ветки).
¶Откат в компьютерных играх
В компьютерных играх с сохранениями откат — это загрузка ранее сохранённого состояния игры (сейва), отменяющая события, произошедшие после момента сохранения. Термин также применяется к механике, при которой игра автоматически возвращает игрока к контрольной точке после смерти персонажа или провала миссии.
В некоторых играх откат реализован как игровая механика: например, в Braid (2008) игрок может вручную отматывать время назад, а в Prince of Persia: The Sands of Time (2003) вводится ограниченный запас «песка времени», позволяющий откатывать смертельные события. В ролевых играх и стратегиях термин «откат» может обозначать возврат к состоянию перед нежелательным действием (например, перед атакой союзника по ошибке).
¶Откат в промышленности и технике
В промышленной автоматике и телемеханике откат — это аварийный возврат управляемого объекта (привода, задвижки, клапана) в исходное или безопасное положение при срабатывании защиты. Например, при исчезновении управляющего сигнала или пропаже питания электропривод задвижки может выполнить откат в закрытое положение под действием пружины.
В авиации и железнодорожной автоматике откат применяется для обозначения перевода системы в резервный или штатный режим после сбоя.
¶Откат в бизнесе и экономике
В бизнес-процессах откат — отмена проведённой операции (платежа, документа, бухгалтерской проводки) путём создания компенсирующей записи. В бухгалтерии это называется сторнирование: вместо удаления ошибочной проводки создаётся обратная проводка, и обе записи аннулируют друг друга.
В экономике и политике термин «откат» иногда используется для обозначения возврата к прежним правилам, тарифам или режимам после неудачной реформы.
¶Откат в сетях и распределённых системах
В распределённых транзакциях (двухфазная фиксация) откат выполняется на всех участниках операции, если хотя бы один из них не смог подтвердить готовность к фиксации. В отказоустойчивых кластерах откат кластерного узла — это перевод узла в резервное состояние с восстановлением данных из снимка (snapshot) или реплики.
В виртуализации и контейнеризации (Docker, VMware) откат — возврат виртуальной машины или контейнера к ранее сохранённому снимку состояния.
¶См. также
- Транзакция (базы данных)
- ACID
- Управление конфигурацией
- Сторнирование
- Git
¶Источники
- Канн Д., Дейт К. Д. «Системы баз данных: полный курс»
- Гарсия-Молина Г., Ульман Дж., Видом Д. «Системы баз данных. Полный курс»
- Microsoft Learn. Документация по SQL Server: транзакции и откат
- PostgreSQL Documentation. Транзакции
- ITIL Foundation: управление изменениями и релизами
