首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库驱动程序需要支持分布式事务还是数据库本身需要的支持?

数据库驱动程序需要支持分布式事务还是数据库本身需要的支持?
EN

Stack Overflow用户
提问于 2016-07-19 10:02:16
回答 2查看 308关注 0票数 0

我正在努力理解distributed transactions in Java EE。在阅读了一些在线材料和书籍之后,我了解到在Java中有特定的API,称为JTA,它是Java处理分布式事务的技术栈之一。除了JTA之外,还有其他一些概念,如:2PC (two-phase commit) strategyXA, the eXtended Architecture

仅考虑数据库,对于分布式事务,我有以下问题:

Q1)对于分布式事务的真正支持是否来自数据库驱动程序本身?

Q2)数据库(真正的db)是否知道分布式事务,还是由其他组件负责?

有人能帮我清除这些查询吗?

EN

回答 2

Stack Overflow用户

发布于 2016-07-24 16:16:35

简而言之,真正具有事务性功能的是数据库。数据库必须注意提交后的数据是一致的,并正确地存储到磁盘。

同时,驱动程序可以帮助您管理事务。例如,在第一次请求时为您打开它或自动提交它。

编辑:对不起,主要问题是关于分布式事务。分布式事务由驱动程序和事务管理器处理。从数据库的角度来看,这个事务没有什么特别之处。

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 19:34:03

JTA ( Java规范)定义了用于事务管理器与应用服务器(例如WildFly)、应用程序(您的代码)和资源(例如数据库)通信的接口(WildFly)。事务管理器实现该规范,其目的是管理XA事务。事务管理器是Java应用服务器的一部分。

回答你的问题

A1)分布式/XA事务由事务管理器作为应用服务器的一部分进行管理。从应用服务器到数据库的任何交互都要经过jdbc驱动程序(基于app服务器)。如果数据库是XA事务的完全参与者,那么数据库和驱动程序就必须具备相应的功能。

Jdbc规范定义了jdbc必须提供的接口,以便事务管理器能够管理它。例如,请参见PostgreSQL jdbc驱动程序包xa (https://github.com/pgjdbc/pgjdbc/tree/master/pgjdbc/src/main/java/org/postgresql/xa)或检查jdbc本身。

数据库必须提供正确响应jdbc驱动程序xa调用的功能,特别是必须实现2PC。当事务管理器命令准备数据库时,必须记住,有一些准备好的事务与这些数据一起工作,以便能够在事务管理器调用commit之后完成它。

如果您将XA事务理解为对几个资源(一些数据库,一个jms代理)的操作中的事务复合,那么数据库本身就没有任何其他参与者的概念( XA事务有多大)。数据库只知道存在XA事务,而我是参与者。

所有XA事务管理都是事务管理人员的职责。数据库运行由事务管理器驱动的2PC。数据库只关心哪些数据是这种两阶段提交的一部分,并且响应来自符合XA规范的事务管理器的调用。

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

https://stackoverflow.com/questions/38455321

复制
相关文章

相似问题

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