首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XA感知数据结构(非数据库)

XA感知数据结构(非数据库)
EN

Stack Overflow用户
提问于 2017-08-04 14:42:29
回答 1查看 59关注 0票数 1

的背景:我遇到了一个问题,我越深入研究它,XA就越像是正确的解决方案。我有一个“缓存”,它基本上是内存数据结构(tree )。用来保存一些处理过的信息。使用Spring,我们有我们的数据库集和使用的@Transactional,这一直是一个魅力。对于大型复杂的业务逻辑,ACID在我们的DB中是正确的,一切都很好。问题是我们内存中的数据结构按设计不是Transactional

我已经了解了本地事务和全球事务之间的差异,而全球事务的多样性似乎正是我所需要的。当我们执行逻辑时,我们使用“缓存结构”来通知我们所做的决策。然后,这些更改需要传播到DB,但如果需要回滚,则DB会回滚,而“缓存”则不会。

问题javax.transaction.xa.XAResource接口,我的自定义数据结构需要什么?我是否正确地理解XA,但不理解它在非数据库/JMS/等环境中的使用,但它的使用要简单得多?我不介意投入工作,基本上包装我的结构,并有它的实现,但我不确定它是否会达到我真正想要的目标。

TLDR:对于不涉及复杂DB的更简单的数据结构,实现javax.transaction.xa.XAResource是可行的吗?还是我对JTA不理解?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 10:47:58

XAResource不是特定于db的,可以在其他类型的资源管理器上实现。最常见的是消息队列系统(例如JMS),但是许多缓存/数据存储产品也支持事务性使用,参见。

guide.html#transactions

注意,根据您的需求,缓存层可能表现为同步而不是XAResource。有些ORM系统以这种方式工作,例如预提交会话刷新。

如果您不需要恢复,XAResource是一个相对简单的接口来实现,但前提是您的数据源已经具备了处理底层属性(原子性、一致性和隔离性)的条件。例如,在您的API中,缓存读或写的样子是什么?如果它没有在缓存结构上操作的事务上下文的概念,那么在查看XA之前,您将不得不修复一个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45509634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档