Транзакция

Продвижение по транзакционным запросам

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

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

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

В первом случае недостаток охвата компенсируют количеством используемых ключей. Если для продвижения по ВЧ-стратегии достаточно взять 100–200 запросов, то для НЧ-стратегий для охвата примерно такой же аудитории необходимо будет взять тысячи, а иногда и десятки тысяч ключевых фраз.

Естественно, продвижение по НЧ-запросам требует гораздо больше сил и времени, но зато они позволяют даже маленьким компаниям конкурировать с лидерами рынка. Кроме того, такой трафик является более горячим. Например, по запросу «купить телевизор LG 49SK8500» трафик будет более конверсионный, чем по запросу «купить телевизор LG». В первом случае пользователь уже знает, что именно хочет приобрести, и, скорее всего, готов совершить покупку прямо сейчас. Во втором случае человек явно не определился с моделью, а значит, он пока еще находится на этапе выбора.

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

Взаимоблокировки

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


Транзакция № 1

Транзакция № 2

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

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

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

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

Шаг 3. Ясный взгляд

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

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

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

Транзакция позволяет увидеть изменения окружающего мира в реальном времени.

Уровни изоляции транзакций


Основная статья: Уровни изолированности транзакций

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

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

  • 0 — Чтение неподтверждённых данных (Read Uncommitted) — чтение незафиксированных изменений как своей транзакции, так и параллельных транзакций. Нет гарантии, что данные, изменённые другими транзакциями, не будут в любой момент изменены в результате их отката, поэтому такое чтение является потенциальным источником ошибок. Невозможны потерянные изменения (lost changes), возможны грязное чтение (dirty read), неповторяемое чтение и фантомы.
  • 1 — Чтение подтверждённых данных (Read Committed) — чтение всех изменений своей транзакции и зафиксированных изменений параллельных транзакций. Потерянные изменения и грязное чтение не допускается, возможны неповторяемое чтение и фантомы.
  • 2 — Повторяемое чтение (Repeatable Read, Snapshot) — чтение всех изменений своей транзакции, любые изменения, внесённые параллельными транзакциями после начала своей, недоступны. Потерянные изменения, грязное и неповторяемое чтение невозможны, возможны фантомы.
  • 3 — Сериализуемый (Serializable) — сериализуемые транзакции. Результат параллельного выполнения сериализуемой транзакции с другими транзакциями должен быть логически эквивалентен результату их какого-либо последовательного выполнения. Проблемы синхронизации не возникают.

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

В СУБД уровень изоляции транзакций можно выбрать как для всех транзакций сразу, так и для одной конкретной транзакции. По умолчанию в большинстве баз данных используется уровень 1 (Read Committed). Уровень 0 используется в основном для отслеживания изменений длительных транзакций или для чтения редко изменяемых данных. Уровни 2 и 3 используются при повышенных требованиях к изолированности транзакций.

Разновидности трансакций

Операции, проводимые по платежной карте, можно классифицировать на онлайн-транзакции и офлайн-транзакции.

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

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

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

Транзакция

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

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

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

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

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

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

  • выполнена,
  • не выполнена.

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

https://youtube.com/watch?v=lux5XN8bDLQ

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

Как происходит транзакция


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

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

Сделка происходит не между супермаркетом и покупателем, а между финансовыми организациями:

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

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

  1. Сформированный запрос направляется первоначально на проверку в процессинговый центр – это специальная организация, основной задачей которой является проверка. Если финансовая организация достаточно крупная и имеет обширную клиентскую сеть, то у нее есть собственный процессинговый центр. Если такового не имеется, то банком заключается договор о предоставлении данной услуги с посредником. Процессинговый центр обрабатывает запрос и на основе полученного результата создает «запрос на авторизацию», которой отправляется непосредственно в банк — эмитент.
  2. Следующим этапом является сверка со сведениями, содержащимися в базе данных банка, по результату данной манипуляции операции банк присваивает уникальный код, который выступает положительным ответом на запрос и отсылается также в процессинговый центр. В случае, когда по каким-либо причинам данные не прошли банковскую проверку, в проведении сделки будет отказано.
  3. Заключительный этап – это анализ банком-эквайром полученных данных, а также проведение операции транзакции. Итогом которой становится списание денежных средств с карт-счета покупателя и пересылка их на счет супермаркета, а также выдача чека, подтверждающего успешность проведение сделки.

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

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

Минимальную информацию о том, в чем суть операции «транзакции» следует знать, поскольку обойтись без нее в современном мире невозможно.

Стратегии использования транзакций

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

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

  • стратегия клиентского дирижирования (client orchestration transaction strategy);
  • стратегия на основе интерфейсного слоя (API layer transaction strategy);
  • стратегия с высокой степенью параллелизма (High Concurrency transaction strategy);
  • высокопроизводительная стратегия (High-Speed Processing transaction strategy).

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

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

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

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

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

Процедура проведения транзакции по банковской карте


Самая распространенная расходная операция по пластиковой карте – оплата товара и сервисных услуг. В проведении такого платежа участвуют 3 стороны:

  1. Банк-эквайер, который обслуживает данную торговую точку или предприятие сервиса. Именно его POS-терминал для оплаты установлен на кассе в рамках договора эквайринга;
  2. Банк-эмитент, который выпускает (эмитирует) пластиковые карточки и выдаёт их своим клиентам;
  3. Международная платёжная система (МПС). Она является промежуточным звеном для проведения любых расчётных операций между банками.

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

ШАГ 1. Сначала POS-терминал считывает с карточки те данные, которые требуются для разрешения проведения оплаты с карточного счёта покупателя (для проведения авторизации). К этим данным относятся номер карты, срок её действия, ФИО держателя, код проверки подлинности CVV2/CVC2 и ряд служебной информации, закодированной на магнитной полосе или чипе карточки. Эти сведения в виде зашифрованной информации передаются по каналу связи в банк-эквайер, который занимается обслуживанием конкретного терминала. Обычно магазины заключают соглашение с такими банками и платят им определённую комиссию за каждую транзакцию.

ШАГ 2. Банк-эквайер передаёт полученные данные в центр обработки данных (ЦОД) международной платёжной системы (самые известные МПС: Visa, MasterCard, Union Pay), которая обслуживает карту (её логотип в обязательном порядке будет присутствовать на лицевой стороне пластика). К таким операционным центрам подключены все банки-участники платежной системы, которых может быть сотни тысяч по всему миру. Сами ЦОД имеют разветвленную структуру и расположены практически в каждой стране мира – в России также есть свои ЦОД. Там проводится проверка на наличие/отсутствие карты в стоп-листе, и по результату проверки идёт отказ по конкретной транзакции или её одобрение. В последнем случае транзакция отправляется в банк-эмитент, который выпустил вашу карточку и обслуживает банковский счёт, к которому эта карта привязана, и с которого планируется проведение расходной операции. В стоп-лист номер карточки может попасть, например, при подозрении на мошенничество.

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

ШАГ №3. Информация направляется в процессинговый (авторизационный) центр банка-эмитента, задачей которого является получение одобрения платежа. Здесь обрабатываемая транзакция проходит расширенные проверки на её легальность: проверка на мошенничество или на нарушение условий обслуживания; проверка доступного остатка денежных средств на карточном счёте; выяснение, не превышен ли лимит на кредитке; совпадает ли ПИН-код, введённый держателем карты с его реальным значением. Комплекс этих проверок называется авторизацией, а их результат (в случае одобрения) выражается в присвоении кода авторизации совершаемой операции. За обработку этой транзакции эмитент оплачивает платёжной системе определённую комиссию.

ШАГ №4. Ответ от эмитента направляется в обратной последовательности через платёжную систему и приходит эквайеру, и уже дальше – в магазин (торговую точку). Клиент получает чек из POS-терминала со всеми реквизитами платежа.

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

Как происходит транзакция?

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

  1. Существует банк-эквайр (обслуживающий терминал) и банк-эмитент (выпустивший вашу банковскую карту). Суть любой операции — это «общение» этих двух банков. Начинается все с того, что пользователь вставляет карту в банкомат — в этот момент эквайр запрашивает данные у банка-эмитента. Только так банк-эквайр узнает правильный пин-код пользователя;
  2. Запрос проходит через процессинговый центр, где проверяется легитимность и параметры запроса клиента;
  3. Если все в порядке, запрос попадает в банк-эмитент. Он в ответ посылает в процессинговый центр данные о владельце карты;
  4. Центр либо пропускает эти данные к эквайру, либо останавливает их;
  5. Если эквайр все же получил данные от эмитента, запрос завершен. Теперь банкомат «знает», какой пин-код у карточки клиента, сколько денег на его счету и т.д.

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

Заключение

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

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

Максим Власов, директор по развитию

Менеджеры DATAREON будут рады ответить на все вопросы по тел. +7(495)280-08-01. Также вы можете написать нам через форму обратной связи.


С этим читают