[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
> Most of the discussion seemed to look at transactions as a kind of
> synchronisation (to a man with a hammer, everything looks like a nail).
> I think transactions a more about persistent state - they even make sense
> within a single threaded program.
I would like to suggest that in discussions "Persistent" is decoupled from
"Transaction". Persistency is an (common) OPTION, but should NOT be seen
as the rule.
> The ACID acronym captures the idea well:
> A Atomic
> In terms of the effect on system state.
> C Consistent
> System state can not become inconsistent
> I Isolated
> A transaction is isolated from the effect of other
> transactions, which of course means that one transaction
> may not be able to start until another finishes.
> D Durable
> This is a very important! Once the transaction completes, the
> change of state can survive a crash (i.e. it's on disk)
I suggest: Transaction == ACI, nor ACID
> Due to 'I' it is of course a synchronisation too. People rarely seem to
> worry about deadlock arising from a cycle of blocked transactions. The
> general belief is that the database makes it all work, and there's nothing
> to worry about.
Generally, in a Transaction, deadlocks are guaranteed to be detected via some
cycle detection algorithm. Furthermore, the database breaks the
> We are about to enter an age of millions of globaly distributed concurrent
> transactions, maybe these issues are about to bite.
> So the question is -- what have we got to offer -- I'm not sure yet. Anyone?
Of course, the Transaction synchronisation primitives does not solve all
problems on earth. Transactions have the following limitations:
- they do not scale very well: it is based on the shared memory principle.
In the worse case, the memory is locked exclusively by a single transaction.
- they may require retries: this is often unacceptable in real-time systems
I think it is important to recognise the Existance and Scope of Transactions.
I have missed this in the CSP context!