Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXXVI Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 08 апреля 2019 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Зяблов Д.В., Кот А.А. ИСПОЛЬЗОВАНИЕ JAVA TRANSACTION API (JTA) ДЛЯ ВЫПОЛНЕНИЯ РАСПРЕДЕЛЕННЫХ ТРАНЗАКЦИЙ // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LXXVI междунар. студ. науч.-практ. конф. № 4(75). URL: https://sibac.info/archive/technic/4(75).pdf (дата обращения: 25.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ИСПОЛЬЗОВАНИЕ JAVA TRANSACTION API (JTA) ДЛЯ ВЫПОЛНЕНИЯ РАСПРЕДЕЛЕННЫХ ТРАНЗАКЦИЙ

Зяблов Дмитрий Валерьевич

магистрант, кафедра ПИКС БГУИР,

РФ, г. Минск

Кот Андрей Алексеевич

магистрант, кафедра ПИКС БГУИР,

РФ, г. Минск

Аннотация. В данной статье рассмотрены основные программные средства для управления распределёнными транзакциями, применяемые при разработке современных приложений на основе платформы Java EE.

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

 

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

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

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

Основные свойства транзакции:

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

- согласованность, преобразование модели данных из одного целостного состоянии в другое;

- изоляция, несколько транзакций взаимодействующие с одним и тем же ресурсом в рамках строго определённой очереди;

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

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

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

- серверное приложение;

- база данных (Oracle, Postgresql);

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

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

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

Веб-сервер принимает HTTP-запросы и выдающий HTTP-ответы, как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными.

Менеджер ресурсов - это система управления реляционными базами данных (RDBMS), например Oracle или Mysql. Все фактическое управление базой данных обрабатывается этим компонентом.

Адаптер ресурса - это компонент, который является каналом связи или транслятором запроса между приложением, и менеджером ресурсов. В случае приложения, построенного на платформе Java EE как правило используется JDBC. JDBC – это платформенно-независимый промышленный стандарт взаимодействия JavaEE приложения с различными СУБД.

Процесс выполнения локальной транзакции: приложение отправляет запрос данных в драйвер JDBC, который транслирует запрос и отправляет его по сети в базу данных. База данных возвращает данные драйверу, который передает результат в приложение, как показано на рисунке 1.

 

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

 

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

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

 

Рисунок 2. Структурная схема процесса выполнения распределенной транзакции

 

Пронумерованные блоки вокруг диспетчера транзакций соответствуют программным интерфейсным JTA:

1) UserTransaction - интерфейс javax.transaction.UserTransaction предоставляет приложению возможность программно контролировать границы транзакций. Метод javax.transaction.UserTransaction запускает глобальную транзакцию и связывает транзакцию с вызывающим потоком.

2) Transaction Manager - интерфейс javax.transaction. TransactionManager позволяет серверу приложений контролировать границы транзакций от имени управляемого приложения.

3) XAResource - интерфейс javax.transaction.xa.XAResource представляет собой Java-отображение отраслевого стандартного интерфейса XA на основе спецификации распределенной обработки транзакции.

Разработчики приложения не должны модифицировать код управления распределенными транзакциями. Это задача инфраструктуры распределенных транзакций - сервера приложений, менеджера транзакций и драйвера JDBC. Приложение не должно вызывать методы commit, rollback и auto commit, потому что они будут мешать управлению инфраструктурой распределенной транзакции.

Процесс распределенных транзакций.

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

-  драйвер должен реализовывать API JDBC 2.0;

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

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

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

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

 

Список литературы:

  1. JTA - API транзакций Java – [Электронный ресурс]. – Режим доступа. – URL: https://www.progress.com/tutorials/jdbc/understanding-jta
  2. Управление транзакциями – [Электронный ресурс]. – Режим доступа. – URL: https://docs.oracle.com/cd/B19306_01/server.102/b14220/transact
  3. Транзакции и целостность баз данных – [Электронный ресурс]. – Режим доступа. – URL: http://citforum.ru/database/dblearn/dblearn09.shtml
  4. Целостность данных и параллелизм данных – [Электронный ресурс]. – Режим доступа. – URL: https://oracle-dba.ru/docs/architecture/transactions/simple-transaction/
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.