sonyps4.ru

Завершение транзакции. Выполняется транзакция на сумму – что это СМС значит

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

В настоящий момент выделяют следующие типы транзакций: плоские или классические транзакции, цепочечные транзакции и вложенные транзакции.

Плоские, или традиционные, транзакции, характеризуются четырьмя классическими свойствами: атомарности, согласованности, изолированности, долговечности (прочности) - ACID (Atomicity, Consistency, Isolation, Durability). Иногда традиционные транзакции называют ACID-транзакциями. Упомянутые выше свойства означают следующее:

Свойство атомарности (Atomicity) выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе.

Свойство согласованности (Consistency) гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое - транзакция не разрушает взаимной согласованности данных.

Свойство изолированности (Isolation) означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно.

Свойство долговечности (Durability) трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах (даже в случае последующих ошибок).

Возможны два варианта завершения транзакции. Если все операторы выполне­ны успешно и в процессе выполнения транзакции не произошло никаких сбоев программного или аппаратного обеспечения, транзакция фиксируется.

Фиксация транзакции - это действие, обеспечивающее запись на диск изменений в базе данных, которые были сделаны в процессе выполнения транзакции.

До тех пор пока транзакция не зафиксирована, допустимо аннулирование этих изменений, восстановление базы данных в то состояние, в котором она была на момент начала транзакции. Фиксация транзакции означает, что все результаты выполнения транзакции становятся постоянными. Они станут видимыми дру­гим транзакциям только после того, как текущая транзакция будет зафиксиро­вана. До этого момента все данные, затрагиваемые транзакцией, будут «видны» пользователю в состоянии на начало текущей транзакции.

Если в процессе выполнения транзакции случилось нечто такое, что делает не­возможным ее нормальное завершение, база данных должна быть возвращена в исходное состояние. Откат транзакции - это действие, обеспечивающее анну­лирование всех изменений данных, которые были сделаны операторами SQL в теле текущей незавершенной транзакции.



Каждый оператор в транзакции выполняет свою часть работы, но для успешно­го завершения всей работы в целом требуется безусловное завершение всех их операторов. Группирование операторов в транзакции сообщает СУБД, что вся эта группа должна быть выполнена как единое целое, причем такое выполнение должно поддерживаться автоматически.

В стандарте ANSI/ISO SQL определены модель транзакций и функции операторов COMMIT и ROLLBACK. Стандарт определяет, что транзакция начинается с первого SQL-оператора, инициируемого пользователем или содержащегося в программе, изменяющего текущее состояние базы данных. Все последующие SQL-операто­ры составляют тело транзакции. Транзакция завершается одним из четырех возможных путей (рис. 11.1):

оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными изменения, внесенные в базу данных в рамках текущей транзакции;

оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в базе данных в рамках этой транзакции; новая транзакция начинается непосредственно после использования ROLLBACK;

успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное завершение транзакции (как будто был использован оператор COMMIT);

ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).

В этой модели каждый оператор, который изменяет состояние БД, рассматривается как транзакция, поэтому при успешном завершении этого оператора БД пе­реходит в новое устойчивое состояние.

В первых версиях коммерческих СУБД была реализована модель транзакций ANSI/ISO. В дальнейшем в СУБД SYBASE была реализована расширенная мо­дель транзакций, которая включает еще ряд дополнительных операций. В моде­ли SYBASE используются следующие четыре оператора:

Оператор BEGIN TRANSACTION сообщает о начале транзакции. В отличие от мо­дели в стандарте ANSI/ISO, где начало транзакции неявно задается первым оператором модификации данных, в модели SYBASE начало транзакции за­дается явно с помощью оператора начала транзакции.

Оператор COMMIT TRANSACTION сообщает об успешном завершении транзакции. Он эквивалентен оператору COMMIT в модели стандарта ANSI/ISO. Этот опе­ратор, как и оператор COMMIT, фиксирует все изменения, которые производи­лись в БД в процессе выполнения транзакции.

Оператор SAVE TRANSACTION создает внутри транзакции точку сохранения, ко­торая соответствует промежуточному состоянию БД, сохраненному на мо­мент выполнения этого оператора. В операторе SAVE TRANSACTION может стоять имя точки сохранения. Поэтому в ходе выполнения транзакции может быть запомнено несколько точек сохранения, соответствующих нескольким про­межуточным состояниям.

Оператор ROLLBACK имеет две модификации. Если этот оператор используется без дополнительного параметра, то он интерпретируется как оператор отката всей транзакции, то есть в этом случае он эквивалентен оператору отката ROLLBACK в модели ANSI/ISO. Если же оператор отката имеет параметр и за­писан в виде ROLLBACK В, то он интерпретируется как оператор частичного от­ката транзакции в точку сохранения В.

Принципы выполнения транзакций в расширенной модели транзакций представлены на рис. 11.2. На рисунке операторы помечены номерами, чтобы нам удобнее было проследить ход выполнения транзакции во всех допустимых случаях.

Транзакция начинается явным оператором начала транзакции, который имеет в нашей схеме номер 1. Далее идет оператор 2, который является оператором поиска и не меняет текущее состояние БД, а следующие за ним операторы 3 и 4 переводят базу данных уже в новое состояние. Оператор 5 сохраняет это новое промежуточное состояние БД и помечает его как промежуточное состояние в точке А. Далее следуют операторы 6 и 7, которые переводят базу данных в но­вое состояние. А оператор 8 сохраняет это состояние как промежуточное со­стояние в точке В. Оператор 9 выполняет ввод новых данных, а оператор 10 проводит некоторую проверку условия 1; если условие 1 выполнено, то выполняется оператор 11, который проводит откат транзакции в промежуточное со­стояние В Это означает, что последствия действий оператора 9 как бы стирают­ся и база данных снова возвращается в промежуточное состояние В, хотя после выполнения оператора 9 она уже находилась в новом состоянии И после отката транзакции вместо оператора 9, который выполнялся раньше из состояния В БД, выполняется оператор 13 ввода новых данных, и далее управление переда­ется оператору 14 Оператор 14 снова проверяет условие, но уже некоторое но­вое условие 2, если условие выполнено, то управление передается оператору 15, который выполняет откат транзакции в промежуточное состояние А, то есть все операторы, которые изменяли БД, начиная с 6 и заканчивая 13, считаются не­выполненными, то есть результаты их выполнения исчезли и мы снова нахо­димся в состоянии А, как после выполнения оператора 4 Далее управление передается оператору 17, который обновляет содержимое БД, после этого управление передается оператору 18, который связан с проверкой условия 3 Проверка заканчивается либо передачей управления оператору 20, который фик­сирует транзакцию, и БД переходит в новое устойчивое состояние, и изменить его в рамках текущей транзакции невозможно Либо, если управление передано оператору 19, то транзакция откатывается к началу и БД возвращается в свое начальное состояние, а все промежуточные состояния здесь уже проверены, и выполнить операцию отката в эти промежуточные состояния после выполнения оператора 19 невозможно

Конечно, расширенная модель транзакции, предложенная фирмой SYBASE, под­держивает гораздо более гибкий механизм выполнения транзакций Точки со­хранения позволяют устанавливать маркеры внутри транзакции таким образом, чтобы имелась возможность отмены только части работы, проделанной в транз­акции Целесообразно использовать точки сохранения в длинных и сложных транзакциях, чтобы обеспечить возможность отмены изменения для определен­ных операторов Однако это обусловливает дополнительные затраты ресурсов системы - оператор выполняет работу, а изменения затем отменяются, обычно усовершенствования в логике обработки могут оказаться более оптимальным решением

С каждым годом общее количество телефонных абонентов растет. Такой рост не мог не вызвать появления телефонного маркетинга, спама, рекламы и прочих “услуг”. В статье мы кратко расскажем о новом типе телефонного мошенничества – рассылке сообщений с текстом “Выполняется транзакция на сумму”. Вы узнаете почему именно вам пришло такое СМС, что оно значит и какая цель у таких рассылок.

Что за СМС пришло?

Итак, на телефон различных абонентов могут приходить СМС типа: “Выполняется транзакция на сумму 12210RUB.// Инф: 8-800-511-09-25” . Указанные в сообщении суммы “списания” могут быть самые разные, так же разными могут быть и номера телефонов, которые осуществляют рассылку (8-800-511-62-82, 8-800-555-46-74 и др).

Все такие смс являются банальным разводом, мошенничеством, обманом (называйте это как хотите) и все они противозаконны. Никакой транзакции на самом деле не выполняется, а суммы взяты из головы. Основная цель такой рассылки – вывести человека на обратную связь. Вот два момента, с которым вы можете столкнуться, если перезвоните на указанный в SMS номер:

  1. Самая распространенная схема – снятие денег за обратный звонок. В среднем могут снимать от 30 до 50 рублей. Абонент набирает номер – идет подключение, после чего играет музыка либо автоответчик надиктовывает текст – далее вас скидывают, а деньги со счета снимают.
  2. Другой момент – попытка принявшего звонок “оператора” вывести из вас личную информацию и платежные данные. Например, оператор принимает звонок и выслушав проблему запрашивает ваши данные для дальнейшего анализа. Стоит отметить, что операторы тоже хитры и анализируют диалог с абонентом. Если они замечают, что человек теряется и паникует из-за списания, то с него стараются выудить всю важную информацию. Такая стратегия срабатывает с людьми пожилого возраста – несколько далекими от современных технологий.

Кстати, почитайте эту статью тоже: Play Market: Отсутствует интернет-соединение, проверьте подключение к WiFi

Кстати, пользователи получают и другие фейковые сообщения подобного рода – например, “Ваша карта заблокирована ЦБ РФ” или “Ваша карта скомпрометирована” . Все эти sms-ки носят один характер мошенничества.

Что делать, если пришло сообщение?

Если вам пришло SMS с примерным текстом “Выполняется транзакция на сумму 11210 руб.//” перезванивать не стоит – это банальный развод. Запомните – Вы всегда можете прозвонить в ваш банк по телефону, который указан на их официальном сайте, либо на вашей карте. Только по этим номерам стоит уточнять вопросы списания и транзакций. Если не верите никому – идите прямиком в отделение.

Кстати, недавно происходила массовая рассылка фейковых сообщений через Viber и WhatsApp от “Пенсионного фонда” и “Магнит дарит ваучер на 11.527,6 рублей” . В результате такой “акции” мошенникам удалось обмануть многих людей и выудить сотни тысяч рублей.


Откуда у мошенников ваш номер?

Это самый больной вопрос на сегодняшний день, ведь способов получить ваш номер телефона у мошенников множество. Основным источником таких номеров являются покупаемые базы с активными номерами. Такие базы можно преспокойно купить в сети, заплатив чуть больше вы получите отфильтрованные по регионам, возрасту и полу списки. Например, различные МФО закупают базы разбитые по примерным доходам абонентов.

Также, получить ваш номер телефона злоумышленники могут из:

  • Социальные сети – очень часто профиль пользователя открыт, а его данные может просмотреть любой желающий. Конечно, ВК и ОК скрывают такие данные, но различные сайты знакомств и прочие ресурсы такую опцию исключают.
  • Доски объявлений и сайты по трудоустройству – тут все телефоны являются открытыми. Ежедневно сотни тысяч людей сливают сюда свои номера, а специальные программы выкачивают их в свои базы.
  • Не стоит исключать вариант и с вирусной активностью на самом телефоне. Вирусы уже давно научились не только показывать рекламу, но и выкачивать из устройств телефонные книги и историю звонков и СМС.

Как вы уже поняли – не стоит оставлять в открытом доступе свои личные данные (телефон, почта, адрес). Старайтесь сразу же удалять свои номера, если ваше объявление потеряло актуальность.

Заключение

Итак, если вам пришло сообщение с текстом “Выполняется транзакция на сумму …”, то ничего делать не нужно – это очередной развод, коих сейчас множество. Хочу отметить, что отследить телефоны мошенников, которые указаны в СМС практически нереально. Все эти номера покупаются у единого оператора, а там никто не сортирует покупателей на плохих и хороших. Максимум что может сделать компания – заблокировать номер после подтвержденных жалоб, но этого мало, потому как аферисты покупают их сотнями.

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

В настоящий момент выделяют следующие типы транзакций: плоские или классические транзакции, цепочечные транзакции и вложенные транзакции.

Плоские, или традиционные, транзакции, характеризуются четырьмя классическими свойствами: атомарности, согласованности, изолированности, долговечности (прочности) - ACID (Atomicity, Consistency, Isolation, Durability). Иногда традиционные транзакции называют ACID-транзакциями. Упомянутые выше свойства означают следующее:

· Свойство атомарности (Atomicity) выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе.

· Свойство согласованности (Consistency) гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое - транзакция не разрушает взаимной согласованности данных.

· Свойство изолированности (Isolation) означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно.

· Свойство долговечности (Durability) трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах (даже в случае последующих ошибок).

Возможны два варианта завершения транзакции. Если все операторы.выполнены успешно и в процессе выполнения транзакции не произошло никаких сбоев программного или аппаратного обеспечения, транзакция фиксируется.

Фиксация транзакции - это действие, обеспечивающее запись на диск изменений в базе данных, которые были сделаны в процессе выполнения транзакции.

До тех пор пока транзакция не зафиксирована, допустимо аннулирование этих изменений, восстановление базы данных в то состояние, в котором она была на момент начала транзакции. Фиксация транзакции означает, что все результаты выполнения транзакции становятся постоянными. Они станут видимыми другим транзакциям только после того, как текущая транзакция будет зафиксирована. До этого момента все данные, затрагиваемые транзакцией, будут «видны» пользователю в состоянии на начало текущей транзакции.

Если в процессе выполнения транзакции случилось нечто такое, что делает невозможным ее нормальное завершение, база данных должна быть возвращена в исходное состояние. Откат транзакции - это действие, обеспечивающее аннулирование всех изменений данных, которые были сделаны операторами SQL в теле текущей незавершенной транзакции.

Каждый оператор в транзакции выполняет свою часть работы, но для успешного завершения всей работы в целом требуется безусловное завершение всех их операторов. Группирование операторов в транзакции сообщает СУБД, что вся эта группа должна быть выполнена как единое целое, причем такое выполнение должно поддерживаться автоматически.

В стандарте ANSI/ISO SQL определены модель транзакций и функции операторов COMMIT и ROLLBACK. Стандарт определяет, что транзакция начинается с первого SQL-оператора, инициируемого пользователем или содержащегося в программе, изменяющего текущее состояние базы данных. Все последующие SQL-операторы составляют тело транзакции. Транзакция завершается одним из четырех возможных путей (рис. 11.1):

1. оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными изменения, внесенные в базу данных в рамках текущей транзакции;

2. оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в базе данных в рамках этой транзакции; новая транзакция начинается непосредственно после использования ROLLBACK;

3. успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное завершение транзакции (как будто был использован оператор COMMIT);

4. ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).

В этой модели каждый оператор, который изменяет состояние БД, рассматривается как транзакция, поэтому при успешном завершении этого оператора БД переходит в новое устойчивое состояние.

В первых версиях коммерческих СУБД была реализована модель транзакций ANSI/ISO. В дальнейшем в СУБД SYBASE была реализована расширенная модель транзакций, которая включает еще ряд дополнительных операций. В модели SYBASE используются следующие четыре оператора:

· Оператор BEGIN TRANSACTION сообщает о начале транзакции. В отличие от модели в стандарте ANSI/ISO, где начало транзакции неявно задается первым оператором модификации данных, в модели SYBASE начало транзакции задается явно с помощью оператора начала транзакции.

· Оператор COMMIT TRANSACTION сообщает об успешном завершении транзакции. Он эквивалентен оператору COMMIT в модели стандарта ANSI/ISO. Этот оператор, как и оператор COMMIT, фиксирует все изменения, которые производились в БД в процессе выполнения транзакции.

· Оператор SAVE TRANSACTION создает внутри транзакции точку сохранения, которая соответствует промежуточному состоянию БД, сохраненному на момент выполнения этого оператора. В операторе SAVE TRANSACTION может стоять имя точки сохранения. Поэтому в ходе выполнения транзакции может быть запомнено несколько точек сохранения, соответствующих нескольким промежуточным состояниям.

· Оператор ROLLBACK имеет две модификации. Если этот оператор используется без дополнительного параметра, то он интерпретируется как оператор отката всей транзакции, то есть в этом случае он эквивалентен оператору отката ROLLBACK в модели ANSI/ISO. Если же оператор отката имеет параметр и записан в виде ROLLBACK В, то он интерпретируется как оператор частичного отката транзакции в точку сохранения В.

Рис. 11.1. Модель транзакций ANSI/ISO

Принципы выполнения транзакций в расширенной модели транзакций представлены на рис. 11.2. На рисунке операторы помечены номерами, чтобы нам удобнее было проследить ход выполнения транзакции во всех допустимых случаях.

Рис. 11.2. Примеры выполнения транзакций в расширенной модели

Транзакция начинается явным оператором начала транзакции, который имеет в нашей схеме номер 1. Далее идет оператор 2, который является оператором поиска и не меняет текущее состояние БД, а следующие за ним операторы 3 и 4 переводят базу данных уже в новое состояние. Оператор 5 сохраняет это новое промежуточное состояние БД и помечает его как промежуточное состояние в точке А. Далее следуют операторы 6 и 7, которые переводят базу данных в новое состояние. А оператор 8 сохраняет это состояние как промежуточное состояние в точке В. Оператор 9 выполняет ввод новых данных, а оператор 10 проводит некоторую проверку условия 1; если условие 1 выполнено, то выполняется оператор 11, который проводит откат транзакции в промежуточное состояние В. Это означает, что последствия действий оператора 9 как бы стираются и база данных снова возвращается в промежуточное состояние В, хотя после выполнения оператора 9 она уже находилась в новом состоянии. И после отката транзакции вместо оператора 9, который выполнялся раньше из состояния В БД, выполняется оператор 13 ввода новых данных, и далее управление передается оператору 14. Оператор 14 снова проверяет условие, но уже некоторое повое условие 2; если условие выполнено, то управление передается оператору 15, который выполняет откат транзакции в промежуточное состояние А, то есть все операторы, которые изменяли БД, начиная с 6 и заканчивая 13, считаются невыполненными, то есть результаты их выполнения исчезли и мы снова находимся в состоянии А, как после выполнения оператора 4. Далее управление передается оператору 17, который обновляет содержимое БД, после этого управление передается оператору 18, который связан с проверкой условия 3. Проверка заканчивается либо передачей управления оператору 20, который фиксирует транзакцию, и БД переходит в новое устойчивое состояние, и изменить его в рамках текущей транзакции невозможно. Либо, если управление передано оператору 19, то транзакция откатывается к началу и БД возвращается в свое начальное состояние, а все промежуточные состояния здесь уже проверены, и выполнить операцию отката в эти промежуточные состояния после выполнения оператора 19 невозможно.

Конечно, расширенная модель транзакции, предложенная фирмой SYBASE, поддерживает гораздо более гибкий механизм выполнения транзакций. Точки сохранения позволяют устанавливать маркеры внутри транзакции таким образом, чтобы имелась возможность отмены только части работы, проделанной в транзакции. Целесообразно использовать точки сохранения в длинных и сложных транзакциях, чтобы обеспечить возможность отмены изменения для определенных операторов. Однако это обусловливает дополнительные затраты ресурсов системы - оператор выполняет работу, а изменения затем отменяются; обычно усовершенствования в логике обработки могут оказаться более оптимальным решением.

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

Реализация в СУБД принципа сохранения промежуточных состояний, подтверждения или отката транзакции обеспечивается специальным механизмом, для поддержки которого создается некоторая системная структура, называемая Журналом транзакций.

Однако назначение журнала транзакций гораздо шире. Он предназначен для обеспечения надежного хранения данных в БД.

А это требование предполагает, в частности, возможность восстановления согласованного состояния базы данных после любого рода аппаратных и программных сбоев. Очевидно, что для выполнения, восстановлений необходима некоторая дополнительная информация. В подавляющем большинстве современных реляционных СУБД такая избыточная дополнительная информация поддерживается в виде журнала изменений базы данных, чаще всего называемого Журналом транзакций.

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

· результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии базы данных;

· результаты незафиксированных транзакций должны отсутствовать в восстановленном состоянии базы данных.

Это, собственно, и означает, что восстанавливается последнее по времени согласованное состояние базы данных.

Возможны следующие ситуации, при которых требуется производить восстановление состояния базы данных.

· Индивидуальный откат транзакции. Этот откат должен быть применен в следующих случаях:

o стандартной ситуацией отката транзакции является ее явное завершение оператором ROLLBACK;

o аварийное завершение работы прикладной программы, которое логически эквивалентно выполнению оператора ROLLBACK, но физически имеет иной механизм выполнения;

o принудительный откат транзакции в случае взаимной блокировки при параллельном выполнении транзакций. В подобном случае для выхода из тупика данная транзакция может быть выбрана в качестве «жертвы» и принудительно прекращено ее выполнение ядром СУБД.

· Восстановление после внезапной потери содержимого оперативной памяти (мягкий сбой). Такая ситуация может возникнуть в следующих случаях:

o при аварийном выключении электрического питания;

o при возникновении неустранимого сбоя процессора (например, срабатывании контроля оперативной памяти) и т. д. Ситуация характеризуется потерей той части базы данных, которая к моменту сбоя содержалась в буферах оперативной памяти.

· Восстановление после поломки основного внешнего носителя базы данных (жесткий сбой). Эта ситуация при достаточно высокой надежности современных устройств внешней памяти может возникать сравнительно редко, но тем не менее СУБД должна быть в состоянии восстановить базу данных даже и в этом случае. Основой восстановления является архивная копия и журнал изменений базы данных.

Для восстановления согласованного состояния базы данных при индивидуальном откате транзакции нужно устранить последствия операторов модификации базы данных, которые выполнялись в этой транзакции. Для восстановления непротиворечивого состояния БД при мягком сбое необходимо восстановить содержимое БД по содержимому журналов транзакций, хранящихся на дисках. Для восстановления согласованного состояния БД при жестком сбое надо восстановить содержимое БД по архивным копиям и журналам транзакций, которые хранятся на неповрежденных внешних носителях.

Во всех трех случаях основой восстановления является избыточное хранение данных. Эти избыточные данные хранятся в журнале, содержащем последовательность записей об изменении базы данных.

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

Этот подход позволяет быстро выполнять индивидуальные откаты транзакций, но приводит к дублированию информации в локальных и общем журналах. Поэтому чаще используется второй вариант - поддержание только общего журнала изменений базы данных, который используется и при выполнении индивидуальных откатов. Далее мы рассматриваем именно этот вариант.

Общая структура журнала условно может быть представлена в виде некоторого последовательного файла, в котором фиксируется каждое изменение БД, которое происходит в ходе выполнения транзакции. Все транзакции имеют свои внутренние номера, поэтому в едином журнале транзакций фиксируются все изменения, проводимые всеми транзакциями.

Каждая запись в журнале транзакций помечается номером транзакции, к которой она относится, и значениями атрибутов, которые она меняет. Кроме того, для каждой транзакции в журнале фиксируется команда начала и завершения транзакции (см. рис. 11.3).

Для большей надежности журнал транзакций часто дублируется системными средствами коммерческих СУБД, именно поэтому объем внешней памяти во много раз превышает реальный объем данных, которые хранятся в хранилище.

Имеются два альтернативных варианта ведения журнала транзакций: протокол с отложенными обновлениями и протокол с немедленными обновлениями.

Ведение журнала по принципу отложенных изменений предполагает следующий механизм выполнения транзакций:

1. Когда транзакция Т1 начинается, в протокол заносится запись

<Т1 Begin transaction>

2. На протяжении выполнения транзакции в протоколе для каждой изменяемой записи записывается новое значение: . Здесь ID_RECORD - уникальный номер записи.

3. Если все действия, из которых состоит транзакция Т1, успешно выполнены, то транзакция частично фиксируется и в протокол заносится <Т1 СОММIТ>.

4. После того как транзакция фиксирована, записи протокола, относящиеся к Т1, используются для внесения соответствующих изменений в БД.

5. Если происходит сбой, то СУБД просматривает протокол и выясняет, какие транзакции необходимо переделать. Транзакцию Т1 необходимо переделать, если протокол содержит обе записи <Т1 BEGIN TRANSACTION и <Т1 СОММIТ>. БД может находиться в несогласованном состоянии, однако все новые значения измененных элементов данных содержатся в протоколе, и это требует повторного выполнения транзакции. Для этого используется некоторая системная процедура REDOQ, которая заменяет все значения элементов данных на--новые, просматривая протокол в прямом порядке.

6. Если в протоколе не содержится команда фиксации транзакции COMMIT, то никаких действий проводить не требуется, а транзакция запускается заново.

Рис. 11.3. Журнал транзакций

Альтернативный механизм с немедленным выполнением предусматривает внесение изменений сразу в БД, а в протокол заносятся не только новые, но и все старые значения изменяемых атрибутов, поэтому каждая запись выглядит <Т1, ID_RECORD, атрибут новое значение старое значение...>. При этом запись в журнал предшествует непосредственному выполнению операции над БД. Когда транзакция фиксируется, то есть встречается команда <Т1 СОММIТ> и она выполняется, то все изменения оказываются уже внесенными в БД и не требуется никаких дальнейших действий по отношению к этой транзакции.

При откате транзакции выполняется системная процедура UNDO(), которая возвращает все старые значения в отмененной транзакции, последовательно проходя по протоколу начиная с команды BEGIN TRANSACTION.

Для восстановления при сбое используется следующий механизм:

· Если транзакция содержит команду начала транзакции, но не содержит команды фиксации с подтверждением ее выполнения, то выполняется последовательность действий как при откате транзакции, то есть восстанавливаются старые значения.

· Если сбой произошел после выполнения последней команды изменения БД, но до выполнения команды фиксации, то команда фиксации выполняется, а с БД никаких изменений не происходит. Работа происходит только на уровне протокола.

· Однако следует отметить, что проблемы восстановления выглядят гораздо сложнее приведенных ранее алгоритмов, с учетом того, что изменения как в журнал, так и в БД заносятся не сразу, а буферируются. Этому посвящен следующий раздел.

Журнализация и буферизация

Журнализация изменений тесно связана не только с управлением транзакциями, но и с буферизацией страниц базы данных в оперативной памяти.

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

Проблема состоит в выработке некоторой общей политики выталкивания, которая обеспечивала бы возможность восстановления состояния базы данных после сбоев.

Проблема не возникает при индивидуальных откатах транзакций, поскольку в этих случаях содержимое оперативной памяти не утрачено и можно пользоваться содержимым как буфера журнала, так и буферов страниц базы данных. Но если произошел мягкий сбой и содержимое буферов утрачено, для проведения восстановления базы данных необходимо иметь некоторое согласованное состояние журнала и базы данных во внешней памяти.

Основным принципом согласованной политики выталкивания буфера журнала и буферов страниц базы данных является то, что запись об изменении объекта базы данных должна попадать во внешнюю память журнала раньше, чем измененный объект оказывается во внешней памяти базы данных. Соответствующий протокол журнализации (и управления буферизацией) называется Write Ahead Log (WAL) - «пиши сначала в журнал» и состоит в том, что если требуется записать во внешнюю память измененный объект базы данных, то перед этим нужно гарантировать запись во внешнюю память журнала транзакций записи о его изменении.

Другими словами, если во внешней памяти базы данных находится некоторый объект базы данных, по отношению к которому выполнена операция модификации, то во внешней памяти журнала обязательно находится запись, соответствующая этой операции. Обратное неверно, то есть если во внешней памяти журнале содержится запись о некоторой операции изменения объекта базы данных, то сам измененный объект может отсутствовать во внешней памяти базы данных.

Дополнительное условие на выталкивание буферов накладывается тем требованием, что каждая успешно завершившаяся транзакция должна быть реально зафиксирована во внешней памяти. Какой бы сбой не произошел, система должна быть в состоянии восстановить состояние базы данных, содержащее результаты всех зафиксированных к моменту сбоя транзакций.

Простым решением было бы выталкивание буфера журнала, за которым следует массовое выталкивание буферов страниц базы данных, изменявшихся данной транзакцией. Довольно часто так и делают, но это вызывает существенные накладные расходы при выполнении операции фиксации транзакции.

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

Рассмотрим теперь, как можно выполнять операции восстановления базы данных в различных ситуациях, если в системе поддерживается общий для всех транзакций журнал с общей буферизацией записей, поддерживаемый в соответствии с протоколом WAL.

Индивидуальный откат транзакции

Для того чтобы можно было выполнить по общему журналу индивидуальный откат транзакции, все записи в журнале по данной транзакции связываются в обратный список. Началом списка для незакончившихся транзакций является запись о последнем изменении базы данных, произведенном данной транзакцией. Для закончившихся транзакций (индивидуальные откаты которых уже невозможны) началом списка является запись о конце транзакции, которая обязательно вытолкнута во внешнюю память журнала, Концом списка всегда служит первая запись об изменении базы данных, произведенном данной транзакцией. Обычно в каждой записи проставляется уникальный идентификатор транзакции, чтобы можно было восстановить прямой список записей об изменениях базы данных данной транзакцией.

Итак, индивидуальный откат транзакции (еще раз подчеркнем, что это возможно только для незакончившихся транзакций) выполняется следующим образом:

· Выбирается очередная запись из списка данной транзакции.

· Выполняется противоположная по смыслу операция: вместо операции INSERT выполняется соответствующая операция DELETE, вместо операции DELETE вы полняется INSERT и вместо прямой операции UPDATE обратная операция UPDATE, восстанавливающая предыдущее состояние объекта базы данных.

· Любая из этих обратных операций также заносится в журнал. Собственно, для индивидуального отката это не нужно, но при выполнении индивидуального отката транзакции может произойти мягкий сбой, при восстановлении после которого потребуется откатить такую транзакцию, для которой не полностью выполнен индивидуальный откат.

· При успешном завершении отката в журнал заносится запись о конце транзакции. С точки зрения журнала такая транзакция является зафиксированной.

Восстановление после мягкого сбоя

К числу основных проблем восстановления после мягкого сбоя относится то, что одна логическая операция изменения базы данных может изменять несколько физических блоков базы данных, например, страницу данных и несколько страниц индексов. Страницы базы данных буферизуются в оперативной памяти и выталкиваются независимо. Несмотря на применение протокола WAL, после мягкого сбоя набор страниц внешней памяти базы данных может оказаться несогласованным, то есть часть страниц внешней памяти соответствует объекту до изменения, часть - после изменения. К такому состоянию объекта неприменимы операции логического уровня.

Состояние внешней памяти базы данных называется физически согласованным, если наборы страниц всех объектов согласованы, то есть соответствуют состоянию объекта либо до его изменения, либо после изменения.

Будем считать, что в журнале отмечаются точки физической согласованности базы данных - моменты времени, в которые во внешней памяти содержатся согласованные результаты операций, завершившихся до соответствующего момента времени, и отсутствуют результаты операций, которые не завершились, а буфер журнала вытолкнут во внешнюю память. Немного позже мы рассмотрим, как можно достичь физической согласованности. Назовем такие точки tpc (time of physical consistency) - точками физического согласования.

Тогда к моменту мягкого сбоя возможны следующие состояния транзакций:

· транзакция успешно завершена, то есть выполнена операция подтверждения транзакции COMMIT и для всех операций транзакции получено подтверждение ее выполнения во внешней памяти;

· транзакция успешно завершена, но для некоторых операций не получено подтверждение их выполнения во внешней памяти;

· транзакция получила и выполнила команду отката ROLLBACK;

· транзакция не завершена.

Физическая согласованность базы данных

Каким же образом можно обеспечить наличие точек физической согласованности базы данных, то есть как восстановить состояние базы данных в момент tpc? Для этого используются два основных подхода: подход, основанный на использовании теневого механизма, и подход, в котором применяется журналиаация постраничных изменений базы данных.

При открытии файла таблица отображения номеров его логических блоков в адреса физических блоков внешней памяти считывается в оперативную память. При модификации любого блока файла во внешней памяти выделяется новый блок. При этом текущая таблица отображения (в оперативной памяти) изменяется, а теневая - сохраняется неизменной. Если во время работы с открытым файлом происходит сбой, во внешней памяти автоматически сохраняется состояние файла до его открытия. Для явного восстановления файла достаточно повторно считать в оперативную память теневую таблицу отображения.

Общая идея теневого механизма показана на рис. 11.4.

Рис. 11.4. Использование теневых таблиц отображения информации

В контексте базы данных теневой механизм используется следующим образом. Периодически выполняются операции установления точки физической согласованности базы данных (checkpoints). Для этого все логические операции завершаются, все буферы оперативной памяти, содержимое которых не соответствует содержимому соответствующих страниц внешней памяти, выталкиваются. Теневая таблица отображения файлов базы данных заменяется на текущую (правильнее сказать, текущая таблица отображения записывается на место теневой).

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

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

В этом подходе имеются два метода решения проблемы. При использовании первого метода поддерживается общий журнал логических и страничных операций. Естественно, наличие двух видов записей, интерпретируемых абсолютно по-разному, усложняет структуру журнала. Кроме того, записи о постраничных изменениях, актуальность которых носит локальный характер, существенно (и не очень осмысленно) увеличивают журнал.

Поэтому все более популярным становится поддержание отдельного (короткого) журнала постраничных изменений. Такая техника применяется, например, в известном продукте Informix Online.

Предположим, что некоторым способом удалось восстановить внешнюю память базы данных к состоянию на момент времени tpc (как это можно сделать - немного позже). Тогда:

· Для транзакции Т1 никаких действий производить не требуется. Она закончилась до момента tpc, и все ее результаты отражены во внешней памяти базы данных.

· Для транзакции Т2 нужно повторно выполнить оставшуюся часть операций (redo). Действительно, во внешней памяти полностью отсутствуют следы операций, которые выполнялись в транзакции Т2 после момента tpc. Следовательно, повторная прямая интерпретация операций Т2 корректна и приведет к логически согласованному состоянию базы данных (поскольку транзакция Т2 успешно завершилась до момента мягкого сбоя, в журнале содержатся записи обо всех изменениях, произведенных этой транзакцией).

· Для транзакции ТЗ нужно выполнить в обратном направлении первую часть операций (undo). Действительно, во внешней памяти базы данных полностью отсутствуют результаты операций ТЗ, которые были выполнены после момента tpc. С другой стороны, во внешней памяти гарантированно присутствуют результаты операций ТЗ, которые были выполнены до момента tpc. Следовательно, обратная интерпретация операций ТЗ корректна и приведет к согласованному состоянию базы данных (поскольку транзакция ТЗ не завершилась к моменту мягкого сбоя, при восстановлении необходимо усхранить все последствия ее выполнения).

· Для транзакции Т4, которая успела начаться после момента tpc и закончиться до момента мягкого сбоя, нужно выполнить полную повторную прямую интерпретацию операций (redo).

· Наконец, для начавшейся после момента tpc и не успевшей завершиться к моменту мягкого сбоя транзакции Т5 никаких действий предпринимать не требуется. Результаты операций этой транзакции полностью отсутствуют во внешней памяти базы данных.

Восстановление после жесткого сбоя

Понятно, что для восстановления последнего согласованного состояния базы данных после жесткого сбоя журнала изменений базы данных явно недостаточно. Основой восстановления в этом случае являются журнал и архивная копия базы данных.

Восстановление начинается с обратного копирования базы данных из архивной копии. Затем для всех закончившихся транзакций выполняется redo, то есть операции повторно выполняются в прямом порядке.

Более точно, происходит следующее:

· по журналу в прямом направлении выполняются все операции;

· для транзакций, которые не закончились к моменту сбоя, выполняется откат.

На самом деле, поскольку жесткий сбой не сопровождается утратой буферов оперативной памяти, можно восстановить базу данных до такого уровня, чтобы можно было продолжить даже выполнение незакончившихся транзакций. Но обычно это не делается, потому что восстановление после жесткого сбоя - это достаточно длительный процесс.

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

Последний вопрос, который мы коротко рассмотрим, относится к производству архивных копий базы данных. Самый простой способ - архивировать базу данных при переполнении журнала. В журнале вводится так называемая «желтая зона», при достижении которой образование новых транзакций временно блокируется. Когда все транзакции закончатся и, следовательно, база данных придет в согласованное состояние, можно производить ее архивацию, после чего начинать заполнять журнал заново.

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

Каждый раз, используя банковскую карту для оплаты товаров, снятия денежных средств или осуществления переводов, клиентом банка осуществляются определенные транзакции. И хотя все транзакции занимают всего несколько минут, полный цикл операций является достаточно обширным процессом, который включает в себя отправку запросов на списание денег, их обработку и выполнение.

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

Онлайн-транзакции требуют обязательного подтверждения платежа в момент осуществления оплаты или перевода денежных средств.

К онлайн-транзакциям относятся денежные переводы между картами, операции снятия наличных средств в банкоматах, расчетные операции в торговых точках и магазинах. Рассмотрим процесс выполнения онлайн-транзакции на примере оплаты товара в торговом центре.

В выполнении операции задействованы три стороны:

  • банк-эквайер, обслуживающий выбранную торговую точку (именно его POS-терминал установлен в магазине);
  • банк-эмитент, обслуживающий платежную банковскую карту;
  • международная платежная система, являющаяся промежуточным звеном при проведении расчетных операций (Visa, MasterCard и т. д.).

Порядок онлайн-транзакций

Расчетная транзакция начинается с момента передачи платежной карты кассиру и считывания POS-терминалом данных, необходимых для оплаты (номера карты, периода ее действия, фамилии владельца и других сведений, зашифрованных на магнитной ленте). Считанная информация передается в банк-эквайер, обслуживающий POS-терминал (как правило, магазины заключают специальные договора на обслуживание терминалов, согласно которым с каждой транзакции взимаются комиссии).

Полученные данные передаются банком-эквайером в центр обработки данных (ЦОД) международной платежной системы, обслуживающей карту.

В ЦОД проводится проверка на наличие или отсутствие платежной карточки в стоп-листе (в стоп-листе могут оказаться карты, подозреваемые в мошенничестве), в результате чего операция одобряется или отклоняется.

После этого информация передается в процессинговый центр банка-эмитента, в котором происходит одобрение платежа. Здесь транзакция проверяется на легальность: выполняется проверка наличия достаточного количества средств для совершения операции, проверяется соответствие введенного PIN-кода реальному значению. Кроме того, выполняется проверка на предмет превышения установленного лимита на выполнение операций.

Ответ банка-эмитента направляется обратно, через ЦОД, к банку-эквайеру и магазину. Реквизиты платежа выводятся на чек, который передается покупателю.

Особенности онлайн и оффлайн-операций

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

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

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

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

Запрет и отмена транзакций

Самыми распространенными транзакциями являются платежи в магазинах, денежные переводы и снятия наличных средств. Есть несколько причин, по которым транзакции могут быть запрещены.

Самые распространенные из них:

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

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

Проще всего отменить операцию в тот день, в который она совершалась.

Функция отмены операций есть в самих терминалах.

Если данные с терминалов уже были переданы в банк, обращаться следует в само финансовое учреждение.


Система контроля незавершенных транзакций функционирует на sb-opknt.online. Зайдя на этот сайт, Вы узнаете о незавершенной транзакции на сумму 131269 рублей. Необходимо принять меры и вывести деньги в течение нескольких часов, иначе платеж аннулируется. Мы проверили, производит ли проект выплату.

Система контроля незавершенных транзакций правда отправит Вам деньги?

На сайте сообщался лишь адрес электронной почты для связи с неким ПАО «ОПК НТ». Сведений о данном ПАО мы не нашли, а реквизиты на сайте не указывались. Компания явно была вымышленной. Отказ от ответственности был трудночитаем и размещался в нижней части сайта. Но каждому посетителю следовало бы с ним ознакомиться, поскольку высказывания об обещанных доходах там объявлялись предположениями без гарантий по выплате.

Надеяться на получение денег от Системы контроля незавершенных транзакций не стоило. Сообщение на сайте, номер транзакции и лицевого счета, а также сумма – все будет одинаковым для всех посетителей. Факт возможного аннулирования денег указывал на сомнительный характер сайта.

Нас переадресовали на следующую страницу, якобы являющуюся личным кабинетом. В форму мы ввели несколько цифр и заказали вывод денег. Данные прошли проверку, и началась отправка средств. Вряд ли на наши некорректные реквизиты можно было отправлять выплату, но претензий к нам не возникало. Нам лишь предложили заплатить 496 или 396 рублей за выбранный способ перевода. Оплата предусматривалась на сервисе E-Pay, служащем для продвижения лохотронов, что определенным образом характеризовало тестируемый сайт.

После совершения оплаты на 396 рублей операция перевода средств продолжилась. Как и ожидалось, возникло новое препятствие – банк принимающей стороны отклонил транзакцию. Мошенник, создавший тестируемый сайт, не остановился на одной оплате и требовал следующую, 720 рублей за услуги подготовки документации. Документы здесь никого не интересовали, это был лишь повод для требования денег. Нас вновь отправили на E-Pay.

Мы понимали, что обещанных 131269 рублей нам не выплатят. Нас изначально обманывали. Утверждение, что все действия на сайте защищены, оказалось ложным: на сайте не было протокола https, защищающего данные, а известные антивирусы были представлены ничего не значащими картинками.

Итоги по Системе контроля незавершенных транзакций:

  • информация на указанном сайте является ложной;
  • посещать данный ресурс не стоит.

Подробный обзор смотрите в видео:

мы публикуем проверенные способы заработка.

Мошенники проявляют фантазию, придумывая причины для платежей. Но совершать их, надеясь, что Вам заплатят, бессмысленно. Из нашей рассылки можно узнать о возникших в интернете лохотронах, если оформить подписку. Контакты нашей команды — . Высылайте нам свои предложения по тестированию сайтов.



Загрузка...