Использует ли IMS слово "транзакция" немного по-другому?
Я не настолько знаком с миром мэйнфреймов, но имею небольшой опыт работы в разных ИТ-ролях. Я привык к транзакции, являющейся довольно маленькой, недолгой вещью, которая в основном превращает несколько небольших операций в более атомарную операцию, так что она либо завершается полностью, либо откатывается. Таким образом, одна покупка - это одна транзакция или одно изменение, когда мы получаем некоторую информацию, выполняем некоторые вычисления и затем сохраняем их. Однако я слышу комментарии парней из мэйнфрейма, которые заставляют меня думать, что транзакция - это нечто большее, возможно, больше похоже на услугу, или они группируют несколько, например, покупок, в одной транзакции.
Я слышал такие вещи, как "приложение убило транзакцию IMS, теперь все пользователи не могут ничего купить!". Обычно, если транзакция завершается неудачей из-за какой-либо ошибки, это не имеет большого значения, следующий клиент приходит и начинает новую транзакцию.
Я слышу комментарии, которые заставляют меня думать, что они открывают одну транзакцию, а затем все покупки каким-то образом смешиваются с этим, и если с одной покупкой происходит какая-то ошибка, то все покупки откатываются и дальнейшие покупки невозможны.
По сути, я должен думать о IMS-транзакциях как о похожих на обычные краткосрочные транзакции, как обычно в мире приложений и БД, или они являются чем-то более тяжелым или более долговечным?
1 ответ
В IMS TM (и CICS в этом отношении) слово "транзакция" может относиться к двум различным, но связанным вещам:
Объект конфигурации, который связывает идентификатор, набранный на терминале, с программой, которая выполняется в результате такой записи (и с кучей свойств, которые появляются вместе).
Экземпляр работающей программы, который был инициирован кем-то, набирающим идентификатор, связанный с объектом конфигурации, описанным выше.
Транзакция как объект конфигурации, конечно, долгоживущая, но сама по себе она ничего не делает. "Выполняемая" транзакция, то есть ее экземпляр, является недолговечной сущностью, и она также чаще всего соответствует отдельной транзакции базы данных (третья вещь, называемая тем же именем).
В IMS транзакция как объект конфигурации может быть отключена в результате определенных ошибок во время выполнения экземпляра такой транзакции, предотвращая любое дальнейшее выполнение любого ее экземпляра. Вот что значит, что приложение (то есть программа, связанная с транзакцией) убило транзакцию, то есть отключило ее.
В документации мэйнфрейма делается попытка провести различие между этими двумя вещами (или даже тремя, если вы включаете транзакции с базой данных). Вы можете встретить такие термины, как задачи, единицы работы и т. Д. Но в разговорной речи термин транзакция слышен чаще всего.
(В моем ответе IMS относится к диспетчеру транзакций IMS. В БД IMS слово транзакция может иметь только одно значение - это обычная транзакция базы данных.)