[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Transactions



Hi Tom,

On Transactions:
> 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
deadlock cycles.

> 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!

Cheers,
	Marcel