Транзакции - что это такое? Транзакция базы данных
Транзакция представляет собой набор определенных действий, которые выполняются пользователем или программой для осуществления доступа или изменения базы данных. Прежде чем разобраться, транзакции – что это такое, необходимо понять суть этого процесса. Основной смысл процесса заключается в том, что действия должны быть либо полностью завершены, либо отменены.
Каждая транзакция базы данных должна переводить ее из одного состояния, которое является согласованным, в другое. Допускается, что в процессе согласованность может нарушаться.
Многие люди задаются вопросом, транзакции – что это такое. Это единица работы, которая выполняется в базе данных. Она может быть частью общего алгоритма, отдельной командой или программой в целом.
Чем должна завершаться транзакция?
Существует два способа ее завершения:
- В том случае, когда транзакция завершается успешно, результаты фиксируются, и база данных переходит в новое согласованное состояние (commit).
- Если выполнение произошло неправильно, получилась ошибка транзакции, она отменяется. При этом база данных должна быть восстановлена до того состояния, которое было изначально. Такая ситуация имеет название "откат" (roll back). Однако если транзакция была зафиксирована, то она не может быть отменена. Если действия были признаны ошибочными, нужно выполнить другую транзакцию, которая вернет базу данных в согласованное состояние.
Свойства транзакции
Чтобы обозначить границы транзакций, принято использовать операторы begin transaction, commit, roll back.
ACID, или свойства транзакции, могут быть следующими:
- Atomic, или атомарность. Транзакция – это неделимая единица, которая должна быть либо выполнена, либо отменена.
- Coordination, или согласованность. Смысл транзакции состоит в том, чтобы база данных переходила из одного согласованного состояния в другое.
- Insulativity, или изолированность. Каждая транзакция, которая выполняется, не зависит от остальных. Все результаты одного процесса, доступные в промежутках, не должны быть видны другим транзакциям.
- Duration, или продолжительность. Все результаты, которые были достигнуты в ходе успешной транзакции, не должны быть утеряны в результате последующих сбоев. Они сохраняются в базе данных постоянно.
Транзакции применяются для внесения изменений или обновлений в базе данных. Каждый процесс регулируется и контролируется диспетчером транзакций, а ресурсы – диспетчером ресурсов. Взаимодействие двух диспетчеров определяет исход операции. При необходимости осуществляется блокировка транзакций.
Фазы транзакции
Выделяются следующие фазы:
- Активная. В этой фазе создается транзакция, в процессе участвуют диспетчеры ресурсов.
- Подготовительная. В этот период каждый диспетчер ресурсов имеет возможность определять исход операции. Начало фазы происходит тогда, когда инициатор создает запрос на завершение транзакции. Если какой-то диспетчер ресурсов не успевает подготовиться, он требует у диспетчера транзакции послать откат. Диспетчеры ресурсов ведут журналы, в которых фиксируют все данные о состоянии готовности. Это необходимо для того, чтобы в случае отклонений была возможность продолжить работу с определенного места.
- Фиксация. Начало этой фазы происходит в тот момент, когда все диспетчеры ресурсов готовы к операции. При необходимости диспетчер транзакции может завершить операцию.
Каждая транзакция должна подчиняться определенным требованиям. В результате операции система должна быть приведена в корректное состояние. Это условие является необходимым в том случае, когда возникают сбои в питании.
Журналы транзакции
В процессе операции ведется журнал транзакции, где фиксируются все изменения. Его необходимо регулярно усекать, такая мера поможет избежать переполнения. Однако существует ряд причин, по которым усечение может быть отложено, в этот период особенно важно следить за наполнением. Чтобы уменьшить размер журнала, можно производить операции с минимальным протоколированием.
В случае сбоя журнал выполняет функцию критического компонента, что поможет привести базу данных в согласованное состояние. Журнал запрещается изменять или удалять.
Преимущества использования журнала транзакции
Это позволяет поддерживать такие операции:
- восстановить отдельные действия;
- восстановить транзакции, которые не были завершены;
- выполнить накат действий до сбоя;
- сделать репликацию транзакций.
Как происходит усечение журнала?
В процессе усечения освобождается место в файле, которое используется для дальнейших записей. Если пренебречь этим процессом, все место на диске будет занято, и возникнет много проблем. Чтобы избежать таких ситуаций, усечение осуществляется автоматически, кроме тех случаев, когда по независимым причинам оно задерживается.
Транзакция по банковской карте
Производя оплату посредством банковской карты, не каждый клиент задумывается о том, какие процессы происходят в это время. Хотя эти знания довольно важны, так как речь идет о деньгах и их безопасности.
Итак, транзакции – что это такое при расчете в магазине? Данная операция представляет собой несколько этапов, которые взаимосвязаны.
Основные участники процесса – это банк (эмитент), который выдал платежную карту, и банк (эквайер), обслуживающий торговую точку. Суть операции заключается в том, что эквайер хочет получить от эмитента разрешение на проведение транзакции. Проводя карту через терминал, кассир отправляет зашифрованный запрос с необходимыми данными для операции. Вся информация содержится в магнитной полосе.
Данный запрос направляется в процессинговый центр, задача которого состоит в обработке данных и последующей пересылке сведений в банк-эмитент. Он анализирует информацию и сопоставляет ее со своими данными. Если никаких разногласий не возникает, эмитент выдает разрешение на проведение транзакции. Суть процесса заключается в присвоении личного кода авторизации.
Только после этого эквайер может провести операцию, в результате которой произойдет пересылка финансовых средств со счета клиента на счет торговой точки. В случае сбоев устройство сообщит, что не удается завершить транзакцию.
Такая транзакция базы данных осуществляется в режиме онлайн. Возможен и другой вид операций, оффлайн, которые производятся посредством импринтера, делающего оттиск карты.
Многих пользователей интересует: а существует ли возможность отменить транзакцию? При необходимости банк может провести определенные манипуляции, позволяющие это сделать.