Открыть сервисСервис

Откат — термин программирования и техники

Откат (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) откат — возврат виртуальной машины или контейнера к ранее сохранённому снимку состояния.

См. также

Источники

  • Канн Д., Дейт К. Д. «Системы баз данных: полный курс»
  • Гарсия-Молина Г., Ульман Дж., Видом Д. «Системы баз данных. Полный курс»
  • Microsoft Learn. Документация по SQL Server: транзакции и откат
  • PostgreSQL Documentation. Транзакции
  • ITIL Foundation: управление изменениями и релизами
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru