但是,如果你的应用事务超过几秒,那么ACID就帮不了你,更不用说持续几个小时、月和年的事务了,这是典型的long transaction problem,在过去几年中,没有人发现它的解决方案。
关键问题是如何实现ACID中的I(隔离性),并发控制算法中并没有超过一段时间操作的。目前有两种流派:悲观并发控制算法(Pessimistic concurrency control );乐观并发控制算法Optimistic concurrency control algorithms 。
Saga诞生了,Saga需要你定义compensating transactions,目前Web服务采取了compensating transactions. CORBA 已经定义了Activity Servic在Java世界有JSR 95: J2EETM Activity Service [JSR95] 用于扩展的事务。
对长时间操作事务感兴趣,继续参考原文:
http://www.theserverside.com/articles/article.tss?l=AcidShortDoses
[该贴被admin于2008-09-24 17:41修改过]