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

Транзакция в банковских и информационных системах

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

Происхождение термина

Слово «транзакция» происходит от латинского transactio — «договорённость, завершение дела». В экономике и праве термин использовался для обозначения завершённой сделки. В 1970-е годы понятие перенесено на вычислительные системы: американский исследователь Джим Грей ввёл формальное определение транзакции в базах данных, за что впоследствии получил Тьюринговскую премию. Его работа заложила основы ACID-свойств, по которым до сих пор оцениваются транзакционные системы.

Транзакция в банковской сфере

Для обычного пользователя транзакция — это любое действие с деньгами через банк. Примеры:

  • оплата картой в магазине;
  • перевод между счетами;
  • списание за коммунальные услуги;
  • снятие наличных в банкомате;
  • получение зарплаты на счёт.

Каждая такая операция проходит несколько этапов. Сначала банк-эквайер (эквайер — банк, обслуживающий торговый терминал) отправляет запрос в платёжную систему (Visa, Mastercard, «Мир»). Платёжная система пересылает запрос в банк-эмитент (эмитент — банк, выпустивший карту). Эмитент проверяет, достаточно ли денег на счёте, не заблокирована ли карта, и принимает решение об авторизации. Положительное решение фиксируется, деньги резервируются, а окончательное списание происходит позже — обычно в течение нескольких дней, когда торговая точка закрывает свой терминал (батч).

Если на любом этапе возникает ошибка — нет связи, отсутствуют средства, превышен лимит — транзакция отклоняется, и деньги со счёта не списываются. Резервирование средств при этом снимается.

Транзакция в базах данных

В компьютерных системах транзакция — это набор SQL-операций (SELECT, INSERT, UPDATE, DELETE), который должен выполниться атомарно. Классический пример — перевод денег с одного счёта на другой. Он состоит из двух действий: списание суммы со счёта А и зачисление на счёт Б. Если после первого действия система упадёт, деньги исчезнут. Транзакционная система гарантирует, что второе действие либо тоже выполнится, либо откатится и первое.

Надёжность транзакций описывают четыре свойства модели ACID:

СвойствоЗначение
Atomicity (атомарность)Все операции транзакции выполняются или ни одна
Consistency (согласованность)Данные переходят из одного корректного состояния в другое
Isolation (изоляция)Параллельные транзакции не мешают друг другу
Durability (durability)Подтверждённые изменения сохраняются даже при сбое системы

Для реализации этих свойств используются журналы повторного выполнения (WAL — Write-Ahead Logging), блокировки строк и таблиц, механизмы изоляции уровней Read Committed, Repeatable Read, Serializable.

Виды транзакций

По степени участия пользователя:

  • пользовательские — инициируются человеком (оплата, перевод);
  • системные — запускаются автоматически (начисление процентов, регулярный платёж, обработка очереди сообщений).

По способу обработки:

  • синхронные — клиент ждёт ответа сразу;
  • асинхронные — запрос ставится в очередь и обрабатывается позже.

По распределённости:

  • локальные — выполняются в одной системе;
  • распределённые — затрагивают несколько систем или банков, для согласованности применяются протоколы двухфазного фиксирования (2PC) или компенсирующие транзакции (saga).

Отличие от операции

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

Статусы транзакций

Банковские транзакции проходят жизненный цикл:

  1. Инициирована — запрос создан.
  2. Авторизована — банк подтвердил возможность списания, средства зарезервированы.
  3. Проведена (settled) — деньги фактически переведены.
  4. Отменена (voided) — авторизация снята до расчёта.
  5. Возвращена (refunded) — проведённая транзакция сторнирована, деньги возвращаются покупателю.

Значение

Транзакционные механизмы обеспечивают надёжность финансовой инфраструктуры. Системы с поддержкой ACID применяются в банках, платёжных шлюзах, бухгалтерских программах, биржевых торговых системах. Для высоконагруженных сервисов применяют модели BASE (Basically Available, Soft state, Eventually consistent), допускающие кратковременные расхождения данных в обмен на скорость.

Источники:

  • Джим Грей, Андреас Райтер. «Транзакционные концепции: руководство для менеджеров»
  • Гарсия-Молина, Саллам, Сударшан. «Данные и транзакционные системы»
  • «Системы управления базами данных» под ред. Козловского
  • Материалы платёжных систем Visa и Mastercard по обработке карточных операций
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru