Условия обработки транзакций
Прежде чем приступить к использованию KTM, необходимо знать определения следующих терминов: транзакция, диспетчер ресурсов, клиент транзакций, диспетчер транзакций, поток журналов, зачисление и система обработки транзакций.
Транзакции
Транзакция — это коллекция операций с данными. Все операции должны быть успешными, чтобы транзакция была успешной. Если все операции будут выполнены успешно, транзакция может быть зафиксирована (то есть ее результаты могут быть постоянными и общедоступными). Если какая-либо операция завершается сбоем, необходимо выполнить откат транзакции (т. е. все изменения должны быть удалены, чтобы данные находились в том же состоянии, в каком они находились до начала операций транзакции).
Операции транзакции являются атомарными, согласованными, изолированными и устойчивыми (ACID).
Они являются атомарными, потому что они должны быть зафиксированы или откаты в целом.
Они являются согласованными, так как операции всегда дают точный результат, будь то фиксация или откат.
Они изолированы, так как результаты каждой транзакции не видны другим транзакциям, пока операции транзакции не будут зафиксированы или откатаны.
Они являются устойчивыми, так как после фиксации или отката транзакций результаты операций являются постоянными.
Примером транзакции является набор операций, которые необходимо выполнить при использовании автоматического кассового автомата (ATM) для перевода денег с чекового счета на сберегательный счет. Дебет с вашего расчетного счета и кредит на сберегательный счет должны выглядеть как единая атомарная операция.
Операция, которая является частью транзакции, также называется транзакцией.
Resource Manager
Диспетчер ресурсов — это программный компонент, который управляет ресурсами данных, которые могут обновляться транзакциями. Например, если вы разрабатываете систему базы данных, вы можете предоставить диспетчер ресурсов, который хранит и извлекает данные базы данных. Простая система обработки транзакций (TPS) может иметь только один диспетчер ресурсов.
Диспетчер ресурсов обычно также предоставляет общедоступный интерфейс, который транзакционные клиенты могут вызывать для доступа к данным диспетчера ресурсов. Например, диспетчер ресурсов для базы данных может предоставлять набор функций, которые клиенты могут вызывать для чтения из базы данных и записи в нее.
Более сложный TPS может иметь несколько диспетчеров ресурсов, каждый из которых управляет отдельной базой данных или другим ресурсом при участии в транзакциях системы.
Дополнительные сведения о диспетчерах ресурсов см. в статье Создание Resource Manager.
В некоторых случаях один диспетчер ресурсов превосходит других диспетчеров ресурсов и может инициировать операции фиксации. В KTM такие диспетчеры ресурсов называются вышестоящими диспетчерами транзакций.
транзакционный клиент
Транзакционный клиент — это программный компонент, который обращается к базе данных, которую поддерживает диспетчер ресурсов, обычно путем вызова функций, экспортируемых диспетчером ресурсов. Клиент отвечает за создание транзакций, выполнение набора операций, поддерживаемых диспетчером ресурсов, а затем информирование диспетчера транзакций (KTM) о том, что транзакция должна быть зафиксирована или откат.
Дополнительные сведения о транзакционных клиентах см. в статье Создание транзакционного клиента.
диспетчер транзакций
Диспетчер транзакций, например KTM, предоставляет инфраструктуру, которая позволяет клиентам транзакций и диспетчерам ресурсов взаимодействовать друг с другом. Он также отслеживает состояние каждой транзакции (но не данные, обрабатываемые клиентами и диспетчерами ресурсов).
Диспетчер транзакций также может координировать операции восстановления после сбоя системы.
Диспетчер транзакций не знает данных или операций, составляющих транзакцию. Данные и операции контролируются клиентами и диспетчерами ресурсов.
KTM предоставляет функции, которые могут вызывать транзакционные клиенты. Эти функции позволяют клиентам создавать, фиксировать и откатывать транзакции.
KTM также предоставляет функции, которые могут вызывать диспетчеры ресурсов. Эти функции позволяют диспетчерам ресурсов заверять транзакции, чтобы они могли получать уведомления о транзакциях. После того как диспетчер ресурсов завернет транзакцию, он может получить уведомление, когда транзакционный клиент готов к фиксации или откату транзакции или при выполнении операции восстановления.
поток журнала
Поток журнала — это записанный журнал событий, произошедших с транзакциями. KTM поддерживает поток журналов с помощью общей файловой системы журналов (CLFS). KTM записывает изменения состояния для каждой транзакции, чтобы при необходимости поддерживать операции отката и восстановления.
Диспетчеры ресурсов также должны использовать поток журналов для записи данных и операций.
Операция отката требует, чтобы KTM и диспетчеры ресурсов восстановили транзакцию и все данные до начального состояния. KTM и диспетчеры ресурсов записывают начальное состояние каждой транзакции в потоках журналов, чтобы они могли получить его во время операции отката.
Операции восстановления происходят после сбоя системы. При последующем перезапуске операционной системы KTM и диспетчеры ресурсов могут использовать содержимое потока журнала для перестроения состояния транзакции в состояние, в которое она находилась до сбоя.
Дополнительные сведения о потоках журналов в KTM см. в статье Использование потоков журналов с KTM.
Прикрепление
Зачисление — это связь между диспетчером ресурсов и транзакцией. KTM предоставляет набор функций, которые диспетчеры ресурсов вызывают для создания зачислений и управления ими. После того как диспетчер ресурсов создаст зачисление, KTM отправляет уведомления диспетчеру ресурсов при изменении состояния транзакции.
система обработки транзакций
Система обработки транзакций (TPS) — это коллекция диспетчера транзакций, одного или нескольких диспетчеров ресурсов, одного или нескольких потоков журналов и одного или нескольких транзакционных клиентов, которые обращаются к ресурсам диспетчеров ресурсов.