Postgresql中的事务共享

4
在Postgres或其他关系型数据库中,是否可以在多个进程之间重用同一事务?这种概念有名称吗?它是否有意义?
一个可能的用例是两个服务实例(不同的进程)在一个分布式事务中修改相关的实体集。
例如,想象一个显示音乐播放列表的网站。普通用户可以查看播放列表,但编辑可以协作编辑播放列表。编辑将修改列表,但观众在编辑保存(提交)更改之前不会看到最新更改。
这只是一个说明性的例子,需要采用不同的设计方法,而不是依赖于分布式事务。我只是对分布式事务的概念及其可行性感兴趣,因为我不是该领域的专家。

1
还要看一下这个链接,以通知用户数据的更改:http://www.postgresql.org/docs/9.3/static/sql-notify.html。 - Kuberchaun
谢谢,我不知道PostgreSQL可以做到那么多。 - LavaScornedOven
1个回答

2
我认为更有意义的做法是拥有一个处理程序、方法或服务,它会查询两个后端服务获取必要的信息,然后在事务中执行操作。
话虽如此,您可能正在寻找两阶段提交。请注意该页面上有关于长时间保留提交的警告。

我同意,但我对交易共享的可能性很好奇。我只是在考虑设计中的不同选项,因此知道这样的事情是可能的,会使一些元素更容易理解和处理。 - LavaScornedOven
实际上,如果您能提供一个功能场景,我可能会能够制定一个更好的答案。 - Robert Harvey
我添加了一个例子,但问题更多是理论性质的,请不要认为它是确定的。 - LavaScornedOven
1
这不是数据库意义上的交易,更像是一个“门闩”。您需要一个Moderator Approvals表来发布更改到公共环境中,或者在播放列表表中设置Moderator ID,以便将其设置为批准它的Moderator的ID。然后,在查询中,您需要一个WHERE子句,只捕获经过Moderator批准的记录。 - Robert Harvey
我应该找一个更好的例子,但它只是阐述了这个想法,而不是实际的设计问题。我理解并赞赏你提出的设计,只是它并不完全符合我在问题中所追求的目标。 - LavaScornedOven
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接