Что такое международная транзакция

Что такое трансакция

Трансакция – операции с денежными средствами: перевод, вывод или зачисление на счет. То есть любой процесс, связанный с использованием банковским счетом. Слово происходит от английского transaction – «дело, сделка, соглашение».

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

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

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

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

Также следует выделить свойства трансакции, такие как:

— Неразрывность. Трансакция — неделимая единица работы, она выполняется целиком или действие не происходит. За обеспечение неразрывности отвечает СУБД (система управлениями баз данных).

— Согласованность. Каждая сделка должна обеспечить перевод информации из одного слаженного состояния в другое.

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

— Устойчивость. Результат успешной трансакции сохраняется в базе данных постоянно и не должен теряться при случайных сбоях.

Кроме того, термин «трансакция» широко применим при операциях с кредитными картами. Причем принято различать онлайн-трансакции, когда происходит немедленная связь с процессинговым центром, и офлайн-трансакции, при которых этого не происходит.

Источник

Транзакция

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

трансакция (точность правильного написания не установлена, поэтому оба варианта используются в равной степени)

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

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

Проведение транзакций может быть сложным и многоуровневым, но сама транзакция имеет только два состояния:

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

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

Источник

Путешествие финансовой транзакции

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

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

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

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

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

На этом этапе все совсем просто, и мы видим четырех участников:

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Полный финансовый цикл обращения чека выглядел так:

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Виток развития, и в 40-х — 50-х годах ХХ века платежные карты постепенно вытеснили и заместили чеки (дольше всех сопротивлялись дорожные (трэвел) чеки Томаса Кука, еще встречавшиеся в 90-х в России и других странах).

Подробно и с датами об истории развития карточного бизнеса пишет Ассоциация карточного бизнеса Великобритании.

На русском об истории развития банковских карт можно прочитать здесь.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Что поменялось в процессе?

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Так как авторизация транзакции проводилась голосом по телефону, она получила название «голосовой». До появления POS-терминалов она служила типичным методом подтверждения расчетов. По инструкции МПС она сопровождалась телефонным звонком в Службу авторизации Банка (обычно размещенной в процессинге банка).

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

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

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

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Карточный бизнес перешел под контроль интересантов — платежных систем (Visa, Mastercard). Они формировали операционные и технологические стандарты, проводили обучение сотрудников банков, они же разрабатывали формы отчетности. Банки поквартально отчитывались о количестве эмитированных простых и более дорогих карт, количестве обработанных транзакций и средней сумме авторизации в разрезе MCC-кода (типа предоставляемых услуг).

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

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Очень скоро с улучшением качества телефонии и каналов связи большинство авторизаций проходили электронно. И вот уже появились мандатные 45 секунд для успешно проведенной транзакции из точки А в точку Б. VISA и Mastercard регулярно обновляли операционные требования и указывали в них, в том числе, временные параметры авторизации. Выглядело это обычно так:

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

*Это современные требования платежной системы. Там, где сейчас на авторизацию ритейл-операции отводилось 30 секунд, сейчас уходит 5. Для банкоматных транзакций сроки ужались с 15 секунд тоже до 5.

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

Виток в развитии конца XX — начала XXI века ознаменовался сменой магнитной полосы на чип. Сначала полоса и чип соседствовали на карте.

Международные платёжные системы Mastercard, Visa и Europay в 1993 году подписали соглашение о совместной работе, чтобы развить технические характеристики для использования смарт-карт при оплате счетов кредитными и дебетовыми картами. Первая версия систем стандарта EMV (Europay, Mastercard, Visa) была выпущена в 1994 году. В 1998 году стала доступна следующая версия технических характеристик.

Формат чипа, разработанный Eurocard, Mastercard, Visa получил название EMV — по первым буквам этих компаний. Более подробно о стандарте чиповых карт можно почитать здесь и здесь: EMVCo.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Предполагалось, что очень скоро все банки справятся с простой задачей перевыпуска карт и перейдут на чиповые карты. И тут случилось неожиданное. Представители МПС (международных платежных систем) часто встречали отпор со стороны как банков-эмитентов, так и банков-эквайеров. Для первых дорогой затеей оказалась замена пластика (первые чипы были очень дорогими), для вторых необходимо было поменять приемники карт, как в банкоматах, так и в терминалах. Наверное, это был золотой старт для компаний-производителей чипов Gemalto, Oberthur и многих других. Именно они стояли у истоков последующего взрывного роста технологических решений и дальнейшего перехода с чипов на бесконтактные платежи. На данный момент, по словам Майкла Финни, платежная система VISA заявила, что выпущено 300 млн чиповых карт, которые могут быть представлены к оплате в 1.25 млн торговых точек, оснащенных терминалами EMV.

Все смарт-карты можно разделить по способу обмена со считывающим устройством на:

Второе десятилетие XXI века, и вот уже доставать кату из бумажника больше не нужно! Новый виток. Мы готовы расплатиться, используя другие устройства: телефоны, браслеты, брелоки. ApplePay, SamsungPay, AndroidPay, кто следующий?

В отличие от устройств других производителей, использующих только технологию NFC, Samsung Pay работает не только с терминалами, поддерживающими бесконтактную оплату. Секрет в том, что кроме NFC, Samsung задействует собственную технологию — MST (от англ. Magnetic Secure Transmission — магнитная безопасная передача), что дает возможность оплачивать покупки с помощью смартфона на практически любом терминале, принимающем банковские карты. Смартфоны Samsung, которые совместимы с сервисом Samsung Pay и поддерживают технологию MST, могут создавать магнитное поле, схожее с сигналом магнитной полосы банковской карты. Обычно даже сами продавцы не знают, что такое возможно в их магазинах, но это реально работает.

Нужны простые и интуитивно понятные решения, надежные, как никогда. Защита должна быть выстроена как на уровне харда, так и на уровне софта. Как в устройстве, так и у поставщика платежного решения. И скоро мы не захотим куда-либо ходить, чтобы платить. Можно все в онлайне? Можно и нужно уже давно. Коротко, в один клик. Если не получается в один, то хотя бы в три: скачать приложение, добавить в него карту, и все готово к оплате!

Источник

Международный перевод в Россию + технология

Главная страница » Международный перевод в Россию + технология

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Нюансы банковских международных транзакций

Не будем входить в чащобу «тёмного леса» банковской терминологии, но некоторые отдельные термины рассмотрим – как имеющие значимость под международный перевод денежных средств. Приоритетом здесь являются два термина:

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

Казалось бы, нет ничего особенного в этом деле, тем более, если отправитель денег предлагает использовать стандартную форму с удивительно скромным числом полей под заполнение:

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

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

Остаются ещё два поля формы (не отмечены звёздами):

По сути, эти два поля допустимо оставить пустыми, но только при условии, если получатель указал значение «Account Number» как международный банковский счёт. В другом случае (обычный счёт) оба поля заполняются.

Что такое международный банковский счёт?

Здесь имеется в виду тот самый термин «IBAN», упомянутый выше (расшифровка термина — International Bank Account Number). Подобного рода счета активно используются под международные переводы между странами.

Однако есть нюанс – стандарт банковских счетов «IBAN» традиционно используется в сфере европейской и других банковских систем. Российским банковским сектором (а также банками США) такая технология не развёрнута и не поддерживается.

Номер международного банковского счёта «IBAN» отличается от номера обычного счёта. Если традиционный номерной набор состоит только из цифр (российский набор 20 цифр), набор IBAN несколько иной, включает:

Теоретически, потенциальному получателю достаточно предоставить «IBAN», указать имя и фамилию в английской транскрипции, указать код SWIFT, чтобы практически моментально получить международный перевод на личный счёт в банке.

Что такое термин SWIFT для международных переводов?

Расшифровка термина — Society for Worldwide Interbank Financial Telecommunications (Общество всемирных межбанковских финансовых телекоммуникаций). Собственно, сама расшифровка уже в некоторой степени даёт понимание функциональной составляющей системы.

Главные преимущества системы SWIFT – быстрая, безопасная, надёжная транзакция валюты в рамках мировой банковской структуры.

Формат набора SWIFT содержит:

Пример кода SWIFT головного офиса банка «Сбербанк» в Москве – SABRRUMM. Набор последних пяти символов может быть символ-цифровым применительно к разным учреждениям. Перечень существующих кодов «Сбербанка» России – здесь. Для подразделений «ВТБ» — тут.

Как получить международный перевод в банк России?

Независимо от использования международных счетов «IBAN», перевод в долларах, евро или другой валюте (если валюту поддерживают условия счёта) клиентам российских банков доступен. Главное, чтобы банк получатель участвовал в системе международных платежей SWIFT.

Однако нередко проявляются ситуации, когда отправитель не принимает указанные сведения, мотивируя отказ перевода отсутствием указанного счёта. Как правило, ошибку даёт путаница с данными, которые нужно указывать в поле «Bank Branch Name (подразделение банка получателя), когда используется обычный (не «IBAN») банковский счёт. Поэтому, на примере международного перевода в «Сбербанк», как показала практика, ошибка устраняется так:

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакцияВариант (пример) заполнения формы международного перевода для транзакции валюты на счёт клиента российского банка «Сбербанк»

Как видно на картинке, поля «Bank Name» и «Bank Branch Name» формы международного перевода содержат идентичные данные. Именно в такой постановке транзакция успешно проходит. Однако если поле «Bank Branch Name» заполнять так, как указывается в банковской инструкции – «Altay region» или «Altaisky Head Office», транзакция не проходит.

По сути, правильно – все необходимые сведения для международной транзакции, в данном случае, содержит указанный набор SWIFT кода, плюс региональное местоположение дополняется полем «Address». Название же банка подразделения в любом случае остаётся неизменным — «SBERBANK», чего и требует указывать отправляющая международный перевод сторона в строке имени банка подразделения.

При помощи информации: Сбербанк

КРАТКИЙ БРИФИНГ

Источник

Что такое транзакция

Транзакция — это набор операций по работе с базой данных (БД), объединенных в одну атомарную пачку.

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

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

Содержание

Что такое транзакция

Транзакция — это архив для запросов к базе. Он защищает ваши данные благодаря принципу «всё, или ничего».

Представьте, что вы решили послать другу 10 файликов в мессенджере. Какие есть варианты:

Кинуть каждый файлик отдельно.

Сложить их в архив и отправить архив.

Вроде бы разницы особой нет. Но что, если что-то пойдет не так? Соединение оборвется на середине, сервер уйдет в ребут или просто выдаст ошибку.

В первом случае ваш друг получит 9 файлов, но не получит один.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Во втором не получит ничего. Нет промежуточных состояний. Или получил всё, или не получил ничего. Но зато если произошла ошибка, вы снова перешлете сообщение. И друг получит все файлики разом, не придется проверять «не потерялся ли кто».

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

И получается, что тебе надо уточнять у отправителя:

— Ты мне сколько файлов посылал?

— Да? У меня только 9. Давай искать, какой продолбался.

И сидите, сравниваете по названиям. А если файликов 100 и потеряно 2 штуки? А названия у них вовсе не «Отчет 1», «Отчет 2» и так далее, а «hfdslafebx63542437457822nfhgeopjgrev0000444666589.xml» и подобные. Уж лучше использовать архив! Тогда ты или точно всё получил, или не получил ничего и делаешь повторную попытку отправки.

Так вот! Транзакция — это тот же архив для запросов. Принцип «всё, или ничего». Или выполнены все запросы, которые разработчик упаковал в одну транзакцию, или ни один.

Допустим, вы переводите все деньги с одной карточки на другую. Выглядит это «внутри» системы как несколько операций:

delete from счет1 where счет = счет 1

insert into счет2 values (‘сумма’)

Принцип «всё или ничего» тут очень помогает. Было бы обидно, если бы деньги со счета1 списались, но на счет2 не поступили. Потому что соединение оборвалось или вы в номере счета опечатались и система выдала ошибку.

Но благодаря объединению запросов в транзакцию при возникновении ошибки зачисления мы откатываем и операцию списания. Деньги снова вернулись на счет 1!

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Как отправить транзакцию

Чтобы обратиться к базе данных, сначала надо открыть соединение с ней. Это называется коннект (от англ. connection, соединение). Коннект — это просто труба, по которой мы посылаем запросы.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Чтобы сгруппировать запросы в одну атомарную пачку, используем транзакцию. Транзакцию надо:

Выполнить все операции внутри.

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

Можно, конечно, каждый раз закрывать соединение с БД. И на каждое действие открывать новое. Но эффективнее переиспользовать текущие. Потому что создание нового коннекта — тяжелая операция, долгая.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

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

Как открыть транзакцию

Зависит от базы данных. В Oracle транзакция открывается сама, по факту первой изменяющей операции. А в MySql надо явно писать «start transaction».

Как закрыть транзакцию

Тут есть 2 варианта:

COMMIT — подтверждаем все внесенные изменения;

ROLLBACK — откатываем их;

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

Например, я пишу запрос:

Запрос выполнен успешно, хорошо! Теперь, если я сделаю select из этой таблицы, прям тут же, под своим запросом — он находит Иванова! Я могу увидеть результат своего запроса.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Но! Если открыть графический интерфейс программы, никакого Иванова мы там не найдем. И даже если мы откроем новую вкладку в sql developer (или в другой программе, через которую вы подключаетесь к базе) и повторим там свой select — Иванова не будет.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

А все потому, что я не сделала коммит, не применила изменения:

Я могу добавить кучу данных. Удалить полтаблицы. Изменить миллион строк. Но если я закрою вкладку sql developer, не сделав коммит, все эти изменения потеряются.

Когда я впервые столкнулась с базой на работе, я часто допускала такую ошибку: подправлю данные «на лету» для проведения теста, а в системе ничего не меняется! Почему? Потому что коммит сделать забыла.

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

И фамилия = «Тестовый»

Удалили. Делаем select count — посмотреть количество записей в таблице. А там вместо миллиона строк осталось 100 тысяч! Если база реальная, то это очень подозрительно. Врядли там было СТОЛЬКО тестовых записей.

Проверяем свой запрос, а мы там где-то ошиблись! Вместо «И» написали «ИЛИ», или как-то еще. Упс. Хорошо еще изменения применить не успели. Вместо коммита делаем rollback.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Тут может возникнуть вопрос — а зачем вообще нужен ROLLBACK? Ведь без коммита ничего не сохранится. Можно просто не делать его, и всё. Но тогда транзакция будет висеть в непонятном статусе. Потому что ее просто так никто кроме тебя не откатит.

Или другой вариант. Нафигачили изменений:

Поменять код города с 495 на 499;

Но видим, что операцию надо отменять. Проверочный select заметил, что база стала неконсистентной. А мы решили «Ай, да ладно, коммит то не сделали? Значит, оно и не сохранится». И вернули соединение в пул.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Следующая операция бизнес-логики берет это самое соединение и продолжает в нем работать. А потом делает коммит. Этот коммит относился к тем 3 операциям, что были внутри текущей транзакции. Но мы закоммитили еще и 10 других — тех, что в прошлый раз откатить поленились. Тех, которые делают базу неконсистентной.

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Так что лучше сразу сделайте откат. Здоровей система будет!

Итого

Транзакция — набор операций по работе с базой данных, объединенных в одну атомарную пачку.

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

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

Чтобы отправить транзакцию к базе, нам нужно создать соединение с ней. Или переиспользовать уже существующее. Соединение называют также коннект (англ connection) — это просто труба, по которой отправляются запросы. У базы есть пул соединений — место, откуда можно взять любое и использовать, они там все свободные.

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

COMMIT — подтверждаем все внесенные изменения;

ROLLBACK — откатываем их;

Что такое международная транзакция. Смотреть фото Что такое международная транзакция. Смотреть картинку Что такое международная транзакция. Картинка про Что такое международная транзакция. Фото Что такое международная транзакция

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

Не путайте соединение с базой (коннект) и саму транзакцию. Коннект — это просто труба, операции (update, delete…) мы посылаем по трубе, старт транзакции и commit /rollback — это группировка операций в одну атомарную пачку.

См также:

Блокировки транзакций — что может пойти не так при одновременном редактировании

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *