Update ch12.md

This commit is contained in:
Zhaoyang 2022-01-01 11:20:23 +08:00 committed by GitHub
parent 9e68549a46
commit d8f729be5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -617,7 +617,7 @@ ACID事务通常既提供及时性例如线性一致性也提供完整性
然而另一个需要了解的事实是,许多真实世界的应用实际上可以摆脱这种形式,接受弱得多的唯一性:
* 如果两个人同时注册了相同的用户名或预订了相同的座位,你可以给其中一个人发消息道歉,并要求他们选择一个不同的用户名。这种纠正错误的变化被称为**补偿性事务compensating transaction**【59,60】。
* 如果两个人同时注册了相同的用户名或预订了相同的座位,你可以给其中一个人发消息道歉,并要求他们换一个不同的用户名或座位。这种纠正错误的变化被称为**补偿性事务compensating transaction**【59,60】。
* 如果客户订购的物品多于仓库中的物品你可以下单补仓并为延误向客户道歉向他们提供折扣。实际上这么说吧如果叉车在仓库中轧过了你的货物剩下的货物比你想象的要少那么你也是得这么做【61】。因此既然道歉工作流无论如何已经成为你商业过程中的一部分了那么对库存物品数目添加线性一致的约束可能就没必要了。
* 与之类似,许多航空公司都会超卖机票,打着一些旅客可能会错过航班的算盘;许多旅馆也会超卖客房,抱着部分客人可能会取消预订的期望。在这些情况下,出于商业原因而故意违反了“一人一座”的约束;当需求超过供给的情况出现时,就会进入补偿流程(退款、升级舱位/房型、提供隔壁酒店的免费的房间)。即使没有超卖,为了应对由恶劣天气或员工罢工导致的航班取消,你还是需要道歉与补偿流程 —— 从这些问题中恢复仅仅是商业活动的正常组成部分。
* 如果有人从账户超额取款,银行可以向他们收取透支费用,并要求他们偿还欠款。通过限制每天的提款总额,银行的风险是有限的。