2010年05月05日 11:26 "Foxswily"的内容
, 但是"分布式第一准则, 尽量不要使用分布式", ...

厄 这种情况在我工程里非常常见。有时候 事物可能跨越几个库~~

那我要怎么办啊~

2010年05月05日 17:13 "Foxswily"的内容
如果这理论可行,DB也不需要事务了,如果DB出现需要rollback,那只能说明不需要进行DB更新。 ...

呵呵, 或许是一个不成熟的想法(还远谈不上理论), 但可以在某些场合一试:)

2010年05月05日 17:28 "EvenNever"的内容
厄 这种情况在我工程里非常常见。有时候 事物可能跨越几个库~~ ...

跨越多个库的操作需要保证数据一致性的时候, 需要考虑这种一致性需要是实时的吗? 如果不需要实时, 可以折衷, 采用"最终一致性"来处理, 再通过某种机制来确保无法达到最终一致性的补救措施.(如果需要要求实时一致性, 则可以考虑用2PC/XA来实现)

比如跨行的转帐业务, 在转帐时先将转出帐户的金额冻结, 然后异步与转入行帐户进行通信, 待资金成功转入后反馈给转出行, 进行"提交"操作. (这个提交不是数据库提交, 而是最终的确认操作)

希望BANQ大哥对该贴能做一下总结性发言, 呵呵
[该贴被icycrystal4于2010-05-07 12:56修改过]

简单来说缓存也不需要什么rollback的,在更新数据库时,把需要缓存中的数据放到另一个hashtable中,提交事务之后再更新缓存即可

个人觉得,写入非常频繁的系统,是否适合使用repository是个问题。

使用repository,就要由缓存更新数据库。