1
dqzcwxb 2022-07-06 10:40:47 +08:00
说句题外话,不是针对贴主
不建议新手过多的在单机事务上折腾,复杂又晦涩难懂而且无法解决跨库问题 而跨库问题是分布式项目必须要考虑的,当然如果你觉得单机是未来而分布式不是,那当我在放屁 |
2
anthow 2022-07-06 10:41:27 +08:00 via Android
关注了,这本书拖了好久都没看完
|
5
nothingistrue 2022-07-06 11:06:31 +08:00 2
@dqzcwxb #1 跨库事务或者分布式事务从来都是伪命题,最后都要放弃事务一致性改成最终一致性。而最终一致性的前提是单节点上的事务一致性。至于你说的 TCC 模式,虽然我是第一次听说,但随便一搜就能确定它在单节点上还是事务一致性。
|
6
nothingistrue 2022-07-06 11:14:58 +08:00
@dqzcwxb 给你补充一下,TCC 模式是不依赖于本地关系数据库的 ACID 事务,但人家可没说不要求本地事务,你要不用关系数据库的事务,就得自己参照 ACID 原则做本地事务。
|
7
dqzcwxb 2022-07-06 11:17:12 +08:00
|
8
nothingistrue 2022-07-06 11:20:31 +08:00
@dqzcwxb 你的文字理解能力实在是有限
|
9
dqzcwxb 2022-07-06 11:24:15 +08:00
@nothingistrue #8 "当然如果你觉得单机是未来而分布式不是,那当我在放屁"
|
11
dqzcwxb 2022-07-06 11:29:42 +08:00
@chendy #10
"单机事务满足需求的话,就不需要分布式事务了" 这里你应该指的是数据库事务,因为不会有人第一步学习非数据库事务 "单机事务都不能保证,分布式事务也不能保证" 这里你又变成了真正的单机事务,即包含常规的关系型数据库和其他 实际上我的想法是说不要去折腾单机事务,直接从分布式事务考虑即可因为分布式事务包含单机事务而且不会让你局限于某个数据库事务 |
12
CRVV 2022-07-06 11:39:40 +08:00
@dqzcwxb
> 常用的 TCC 模式不依赖于单机事务 能不能讲解一下,try 的那个步骤结束以后,现在需要 confirm 或者 cancel 了,怎么实现? 如果用数据库的事务,当然就是 commit 和 rollback 。 怎么样可以“不依赖于单机事务” 来实现 confirm 和 cancel ? |
13
nothingistrue 2022-07-06 11:41:24 +08:00 1
@dqzcwxb 没先搞明白事务,就直接上分布式事务,就容易出现你这种理解偏差(说直白点就是没学会走就去学跑)。分布式事务的目的是什么,是要保证分布式场景下的数据一致性,那如果分布式流程中的单个环节都无法保证一致性的话,总体场景怎么可能有一致性。
不光 TCC ,除了两阶段提交之外的大部分分布式最终一致性方案,在分布式流程环节,都不依赖数据库。那实际上就不需要明说,都特么跨数据库了,还怎么依赖数据库。而那只是分布式流程环节不依赖数据库,单节点内部,还是需要强一致性的,而强一致性最好的方案就是关系数据库。单节点环节内部需要强一致性,这点也是不需要明说,因为通常能接触到最终一致性方案的,不会是像你这样事务一致性都不懂的人。 |
14
CRVV 2022-07-06 12:06:35 +08:00
看了楼主的最后的“小结文章”,大概提一个问题。
isolation level 是数据库的接口,而锁是数据库的实现,实现和接口没有必然的联系。 当然 isolation level 这个接口不太好理解,用实现方式来讲确实更简单了,每个事务都加一把大锁就是 serializable 的效果。 但 serializable 的实现不一定要加一把大锁,比如 PostgreSQL 和 Oracle 。 常见的这四个 isolation level 是 SQL standard 定义的,但是 SQL 这个东西根本没人在乎它的 standard ,每个数据库想怎么实现就怎么实现,所谓 snapshot isolation 只是 SQL Server 自己搞的而已。 |
15
dqzcwxb 2022-07-06 12:29:33 +08:00
@nothingistrue #13 你很懂啊,但是你却看不懂这句" 这里你应该指的是数据库事务,因为不会有人第一步学习非数据库事务"
搞的好像新手第一步都懂的自己去实现非关系型数据库一样,我的意思很明了在目前分布式大大环境下没必要死磕单机事务各种隔离性在分布式事务里根本不需要,记住这里说的是学习成本和收益问题并不是否定单机事务 你上来就是一顿批判,结果在此之前连 TCC 是什么都不知道 你觉得你牛那就牛,你是对的 |
16
version0 2022-07-06 13:54:46 +08:00
哇,谢谢大佬这么好的东西,大佬不用管评论下面的那些事,相信大家都是 “见多识广“ 了
|
17
qingtengmuniao OP @version0 感谢~
|
18
qingtengmuniao OP @dqzcwxb 其实实现隔离性的手段具有普遍性,它本质上是一种多个资源联动修改的并发问题的界定和解决,因此并不能说以后是分布式时代就过时了。
|