2
我的工作分布于具有处理两个不同的数据源,A和B.避免与数据库链接
当应用程序需要以一致的方式来更新A和B Spring的Java EE应用程序的事务。如果一次更新失败,则整个过程失败并且必须进行回滚。
我对如何实现应用两种不同的思路:
- 我必须附上双方在分布式事务XA更新。这种方法在性能方面将会很昂贵。而且,B源很快就会关闭,保持整个XA的基础设施可能是瓶颈;
- 我可以建立一个从数据库A到数据库B的Oracle数据库链接,并让我的应用程序相信只使用单一数据源和本地事务,而Oracle则负责更新同步。当B关闭时,我将简单地删除B更新并关闭DB链接。
您对这两种情况有什么看法?
我不太明白第2点,你仍然需要更新两个数据库上的两个表。但是,这确实意味着您可能愿意考虑选项3,[实例化视图](http://docs.oracle.com/cd/E11882_01/server.112/e25789/schemaob.htm#CNCPT411)。如果没关系,如果B略微落后,你可以只更新A并且具有物化视图B通过数据库链接从A拉取数据... – Ben
@我对dblink的理解是,它们为您提供了一种方式访问远程表,因为它们是本地的,不是吗?所以我猜想我可以更新我的远程表而不关心分布式TX问题,但我可能是错的... –
有点儿,但它不像你在使用单个数据源。如果你必须更新两个数据库中的两个表,他们仍然需要单独更新...... – Ben