Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Описание [ править ]

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

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

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

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

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

Методология [ править ]

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

Откат [ править ]

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

Rollforward [ править ]

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

Тупики [ править ]

В некоторых случаях две транзакции могут в ходе своей обработки попытаться получить доступ к одной и той же части базы данных в одно и то же время, что не позволяет им продолжить работу. Например, транзакция A может получить доступ к части X базы данных, а транзакция B может получить доступ к части Y базы данных. Если в этот момент транзакция A пытается получить доступ к части Y базы данных, в то время как транзакция B пытается получить доступ к части X, возникает тупик.происходит, и ни одна из транзакций не может продвигаться вперед. Системы обработки транзакций предназначены для обнаружения этих тупиковых ситуаций, когда они возникают. Обычно обе транзакции отменяются и откатываются, а затем они запускаются снова в другом порядке, автоматически, чтобы тупиковая ситуация больше не возникала. Или иногда только одна из заблокированных транзакций отменяется, откатывается и автоматически перезапускается после небольшой задержки.

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

Компенсационная транзакция [ править ]

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

Критерии ACID [ править ]

Джим Грей определил свойства надежной системы транзакций в конце 1970-х годов под аббревиатурой ACID - атомарность, согласованность, изоляция и долговечность. [1]

Атомарность [ править ]

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

Последовательность [ править ]

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

Изоляция [ править ]

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

Прочность [ править ]

После успешного завершения транзакции (фиксации) ее изменения в базе данных сохраняются после сбоев и сохраняют свои изменения.

Преимущества [ править ]

Обработка транзакций имеет следующие преимущества:

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

Недостатки [ править ]

  • У них относительно дорогие затраты на установку
  • Отсутствуют стандартные форматы
  • Несовместимость аппаратного и программного обеспечения

Реализации [ править ]

Стандартное программное обеспечение для обработки транзакций , такое как IBM 's Information Management System , было впервые разработано в 1960-х годах и часто было тесно связано с конкретными системами управления базами данных . В клиент-серверных вычислениях аналогичные принципы реализовывались в 1980-х с переменным успехом. Однако в последние годы поддерживать модель распределенного клиент-сервер значительно сложнее. Поскольку количество транзакций росло в ответ на различные онлайн-сервисы (особенно Интернет), единая распределенная база данных не была практическим решением. Кроме того, большинство онлайн-систем состоят из целого набора программ, работающих вместе, в отличие от строгой модели клиент-сервер, в которой единственный сервер мог бы обрабатывать транзакции. Сегодня доступен ряд систем обработки транзакций, которые работают на межпрограммном уровне и масштабируются до больших систем, включая мэйнфреймы .

Одним из направлений является X / Open Distributed Transaction Processing (DTP) (см. Также Java Transaction API (JTA). Тем не менее, проприетарные среды обработки транзакций, такие как IBM CICS , все еще очень популярны, [ необходима цитата ], хотя CICS эволюционировала и включает открытые отраслевые стандарты.

Термин экстремальная обработка транзакций (XTP) использовался для описания систем обработки транзакций с необычно сложными требованиями, в частности требованиями к пропускной способности (количество транзакций в секунду). Такие системы могут быть реализованы с помощью распределенной архитектуры или архитектуры кластерного типа. Он использовался как минимум к 2011 году. [2] [3]

Ссылки [ править ]

  1. ^ Грей, Джим; Рейтер, Андреас. «Обработка транзакций - концепции и методы (Powerpoint)» . Проверено 12 ноября 2012 года .
  2. ^ Коэн Вандеркимпен и Дирк Дериддер. «Экстремальные меры для здравоохранения» . Презентация Devoxx 2011 . Проверено 18 марта 2017 года .
  3. ^ Кевин Робак (2011). Экстремальная обработка транзакций . Источник молнии. ISBN 978-1-74304-266-3.

Дальнейшее чтение [ править ]

  • Герхард Вейкум, Готфрид Фоссен, Транзакционные информационные системы: теория, алгоритмы и практика управления параллельным выполнением и восстановления , Морган Кауфманн, 2002, ISBN 1-55860-508-8 
  • Джим Грей , Андреас Рейтер, Обработка транзакций - концепции и методы, 1993, Морган Кауфманн, ISBN 1-55860-190-2 
  • Филип А. Бернштейн, Эрик Ньюкомер, Принципы обработки транзакций, 1997, Морган Кауфманн, ISBN 1-55860-415-4 
  • Ахмед К. Эльмагармид (редактор), Модели транзакций для передовых приложений баз данных, Morgan-Kaufmann, 1992, ISBN 1-55860-214-3 

Внешние ссылки [ править ]

  • Гайки и болты обработки транзакций (1999)
  • Управление обработкой транзакций для целостности базы данных SQL
  • Обработка транзакции