Reputation: 4517
I am not that familiar with the mainframe world but have a bit of experience in different IT roles. I am used to a transaction being a fairly small, short lived thing that basically turns several small operations into a more atomic operation so that it either completes fully or rolls back. So a single purchase would be one transaction, or a single change where we get some information, do some calculation and then save it. However I hear comments from the mainframe guys that makes me think a transaction is something larger, more like a service perhaps, or they are batching multiple e.g. purchases in one transaction.
I hear things like "the application killed the IMS transaction, now all the users can't buy anything!". Normally if a transaction fails due to some error it is no big deal, the next customer comes along and starts a new transaction.
The comments I hear make me think they open one transaction, and then all purchases are somehow lumped into that, and if some error occurs with one purchase then all purchases get rolled back and no further purchases are possible.
Basically should I think of IMS transactions as being similar to normal short lived transactions as usual in the application and DB world, or are they something a bit more heavier or longer lived?
Upvotes: 1
Views: 207
Reputation: 2698
In IMS TM (and CICS for that matter) the word "transaction" can refer to two distinct but related things:
A configuration entity that connects an identifier typed on a terminal, with a program that gets executed as a result of such an entry (and a bunch of properties that come along.)
An instance of a running program that was initiated by someone typing an identifier associated with a configuration entity described above.
A transaction as a configuration entity is of course long lived, but it does not do anything by itself. A "running" transaction, that is, an instance of it, is a short lived entity, and it most often corresponds to a single database transaction as well (a third thing called the same name.)
In IMS, a transaction as a configuration entity may get disabled as a result of certain errors during an execution of an instance of such a transaction, preventing any further execution of any instance of it. That's what it means that an application (i.e. a program associated with the transaction) killed a transaction, that is, disabled it.
The mainframe documentation tries to distinguish between these two things, (or even three, if you include database transactions.) You may come across such terms as tasks, unit of work etc. But colloquially the transaction term is heard most often.
(Everywhere in my answer, IMS refers to IMS Transaction Manager. In IMS DB, the word transaction can have only one meaning - it's a regular database transaction.)
Upvotes: 3