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

Транзакция

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

История понятия

Термин «транзакция» (от лат. transactio — сделка, соглашение) изначально использовался в юриспруденции и экономике для обозначения деловых операций. С развитием компьютерных технологий в 1960-х годах это понятие было заимствовано для описания операций с данными. Первые системы управления базами данных (СУБД), такие как IMS (IBM), внедрили механизмы транзакций для обеспечения целостности данных при одновременном доступе множества пользователей. В 1983 году Андреас Ройтер и Тео Хердер сформулировали свойства ACID, ставшие стандартом для транзакционных систем.

В финансовом секторе термин получил распространение с внедрением электронных платежей. Первые банковские транзакции через банкоматы появились в конце 1960-х годов. С развитием интернета и появлением криптовалют (биткоин, 2009 год) понятие транзакции стало ключевым для блокчейн-сетей, где каждая операция записывается в распределённый реестр.

Классификация транзакций

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

  • Плоские (простые) транзакции — одноуровневые операции, выполняемые в рамках одного сеанса связи. Пример: списание денег с карты в банкомате.
  • Вложенные транзакции — операции, содержащие внутри себя подтранзакции. При отказе внутренней транзакции откат происходит только до точки сохранения, а не до начала всей операции.
  • Распределённые транзакции — операции, затрагивающие несколько независимых узлов или баз данных. Требуют координации через протокол двухфазной фиксации (2PC) или трёхфазной фиксации (3PC).

По сфере применения

  • Финансовые транзакциипереводы денежных средств, оплата товаров и услуг, покупка/продажа ценных бумаг. Регулируются центральными банками и платёжными системами.
  • Банковские транзакции — операции по счетам (внесение, снятие, перевод), кредитные и депозитные операции.
  • Транзакции баз данных — операции чтения, записи, обновления и удаления записей в СУБД.
  • Блокчейн-транзакции — записи о передаче криптовалюты или токенов между адресами, а также вызовы смарт-контрактов.

По способу инициирования

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

Свойства транзакций (ACID)

Для обеспечения надёжности транзакции должны удовлетворять четырём свойствам, известным как ACID (Atomicity, Consistency, Isolation, Durability):

  • Атомарность (Atomicity) — транзакция выполняется целиком или не выполняется вовсе. При сбое на любом этапе все изменения откатываются до состояния «до начала транзакции».
  • Согласованность (Consistency) — после завершения транзакции данные остаются в целостном состоянии, удовлетворяющем всем правилам и ограничениям.
  • Изолированность (Isolation) — результаты незавершённых транзакций не видны другим транзакциям. Уровни изоляции (Read Uncommitted, Read Committed, Repeatable Read, Serializable) определяют степень видимости изменений.
  • Долговечность (Durability) — после успешного завершения транзакции её результаты сохраняются даже при последующих сбоях системы.

Устройство и механизмы

Журнал транзакций

Большинство СУБД и финансовых систем ведут журнал транзакций (лог) — последовательную запись всех изменений данных. Журнал позволяет:

  • выполнить откат (rollback) при сбое;
  • восстановить данные после аварии (redo);
  • обеспечить аудит операций.

Блокировки

Для обеспечения изолированности используются механизмы блокировок:

  • Пессимистические блокировки — блокируют данные на время транзакции, предотвращая доступ других транзакций.
  • Оптимистические блокировки — проверяют конфликты только при попытке фиксации изменений.

В распределённых системах применяются протоколы консенсуса (Paxos, Raft) для согласования изменений между узлами.

Двухфазная фиксация (2PC)

Для распределённых транзакций используется протокол двухфазной фиксации:

  1. Фаза подготовки — координатор запрашивает у всех участников готовность выполнить транзакцию.
  2. Фаза фиксации — если все участники подтвердили готовность, координатор даёт команду на фиксацию; при отказе хотя бы одного участника транзакция отменяется.

Применение

В банковском деле и финансах

Транзакции составляют основу всех платёжных систем. В России обработка финансовых транзакций регулируется Федеральным законом № 161-ФЗ «О национальной платёжной системе» (2011 год). Ключевые элементы:

  • Процессинговые центры — обрабатывают запросы на проведение операций.
  • Платёжные шлюзы — обеспечивают связь между интернет-магазинами и банками.
  • SWIFT — международная система передачи финансовых сообщений (используется для межбанковских переводов; в России с 2022 года доступна с ограничениями).

В базах данных

Транзакции используются в реляционных СУБД (PostgreSQL, MySQL, Oracle Database) для обеспечения целостности данных при конкурентном доступе. Пример: при переводе денег между счетами транзакция гарантирует, что сумма спишется с одного счёта и зачислится на другой, без потери данных.

В блокчейне

В блокчейн-сетях (биткоин, Ethereum) транзакция — это подписанное цифровой подписью сообщение, которое передаётся в сеть для включения в блок. Особенности:

  • Транзакции необратимы после подтверждения.
  • Каждая транзакция содержит входные и выходные данные (UTXO-модель в биткоине или модель состояний в Ethereum).
  • Подтверждение транзакции требует выполнения алгоритма консенсуса (Proof of Work, Proof of Stake).

В электронной коммерции

Интернет-магазины и платёжные системы (Яндекс.Касса, Сбербанк Эквайринг) обрабатывают миллионы транзакций в день. Для защиты используются:

  • 3D Secure — протокол аутентификации держателя карты.
  • Токенизация — замена данных карты на уникальный токен.
  • Антифрод-системы — анализ транзакций на предмет мошенничества.

Безопасность транзакций

Обеспечение безопасности транзакций включает:

  • Шифрование — защита данных при передаче (TLS/SSL) и хранении (AES-256).
  • Аутентификация — проверка подлинности участников (пароли, биометрия, двухфакторная аутентификация).
  • Авторизация — проверка прав на выполнение операции.
  • Аудит — фиксация всех операций для последующего контроля.

В России действует ГОСТ 28147-89 для шифрования финансовых транзакций, а также требования Центрального банка РФ по защите информации при осуществлении переводов денежных средств.

Критика и ограничения

Проблемы производительности

Транзакции с высоким уровнем изоляции (Serializable) могут существенно снижать производительность системы из-за большого числа блокировок. Для высоконагруженных систем (биржи, платёжные шлюзы) часто используются компромиссные решения — снижение уровня изоляции до Read Committed или применение NoSQL-баз данных, отказывающихся от полной поддержки ACID в пользу скорости (BASE-подход).

Проблемы в распределённых системах

Распределённые транзакции сложны в реализации: протокол двухфазной фиксации может приводить к блокировкам при отказе координатора. В блокчейн-сетях существуют ограничения по пропускной способности (биткоин — около 7 транзакций в секунду, Ethereum — 15-30, Solana — до 4000).

Мошенничество

Финансовые транзакции являются целью мошенников. Распространённые схемы:

  • Фишинг — получение данных карты через поддельные сайты.
  • Кардинг — использование украденных данных карт для покупок.
  • Социальная инженерия — манипуляция пользователем для совершения перевода.

Интересные факты

  • Первая электронная транзакция с использованием кредитной карты была проведена в 1960 году в США.
  • Крупнейшая в истории единичная финансовая транзакция — перевод 4,5 миллиарда долларов между банками (2018 год).
  • В блокчейне биткоина существует транзакция на 0,00000001 BTC (сатоши), которая считается минимально возможной.
  • В России в 2023 году объём безналичных транзакций превысил 75% от всех розничных платежей.

Источники

  1. Федеральный закон от 27.06.2011 № 161-ФЗ «О национальной платёжной системе».
  2. ГОСТ Р ИСО/МЭК 20000-1-2013 «Информационные технологии. Управление услугами».
  3. Gray, J., Reuter, A. «Transaction Processing: Concepts and Techniques» (1993).
  4. Nakamoto, S. «Bitcoin: A Peer-to-Peer Electronic Cash System» (2008).
  5. Материалы Центрального банка Российской Федерации по платёжным системам.
  6. Документация PostgreSQL по транзакциям и уровням изоляции.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →