mirror of
https://github.com/DistSysCorp/ddia.git
synced 2024-12-25 20:30:39 +08:00
Update ch05.md
remove redundant * in ch05
This commit is contained in:
parent
6c3a350bae
commit
66035d5c0b
8
ch05.md
8
ch05.md
@ -138,7 +138,7 @@
|
|||||||
|
|
||||||
但这种方法有一些问题:
|
但这种方法有一些问题:
|
||||||
|
|
||||||
1. **非确定性函数(nondeterministic)**的语句可能会在不同副本造成不同改动。如 NOW()、RAND()
|
1. **非确定性函数(nondeterministic)** 的语句可能会在不同副本造成不同改动。如 NOW()、RAND()
|
||||||
2. **使用自增列,或依赖于现有数据**。则不同用户的语句需要完全按相同顺序执行,当有并发事务时,可能会造成不同的执行顺序,进而导致副本不一致。
|
2. **使用自增列,或依赖于现有数据**。则不同用户的语句需要完全按相同顺序执行,当有并发事务时,可能会造成不同的执行顺序,进而导致副本不一致。
|
||||||
3. **有副作用**(触发器、存储过程、UDF)的语句,可能不同副本由于上下文不同,产生的副作用不一样。除非副作用是确定的输出。
|
3. **有副作用**(触发器、存储过程、UDF)的语句,可能不同副本由于上下文不同,产生的副作用不一样。除非副作用是确定的输出。
|
||||||
|
|
||||||
@ -284,7 +284,7 @@
|
|||||||
|
|
||||||
事务!
|
事务!
|
||||||
|
|
||||||
多副本异步复制所带来的一致性问题,都可以通过**事务(transaction)**来解决。单机事务已经存在了很长时间,但在数据库走向分布式时代,一开始很多 NoSQL 系统抛弃了事务。
|
多副本异步复制所带来的一致性问题,都可以通过**事务(transaction)** 来解决。单机事务已经存在了很长时间,但在数据库走向分布式时代,一开始很多 NoSQL 系统抛弃了事务。
|
||||||
|
|
||||||
- 这是为什么?
|
- 这是为什么?
|
||||||
1. 更容易的实现。2. 更好的性能。3. 更好的可用性。
|
1. 更容易的实现。2. 更好的性能。3. 更好的可用性。
|
||||||
@ -450,7 +450,7 @@ TODO(自动冲突解决)
|
|||||||
1. 可能不能够充分同步
|
1. 可能不能够充分同步
|
||||||
2. 同步时可能会发生回退
|
2. 同步时可能会发生回退
|
||||||
|
|
||||||
可以用一种叫做**版本向量(version vectors)**的策略,对多个副本的事件进行排序,解决因果一致性问题。下一节会详细讨论。
|
可以用一种叫做**版本向量(version vectors)** 的策略,对多个副本的事件进行排序,解决因果一致性问题。下一节会详细讨论。
|
||||||
|
|
||||||
最后忠告:如果你要使用基于多主模型的系统,一定要知晓上面提到的问题,多做测试,确保其提供的保证符合你的使用场景。
|
最后忠告:如果你要使用基于多主模型的系统,一定要知晓上面提到的问题,多做测试,确保其提供的保证符合你的使用场景。
|
||||||
|
|
||||||
@ -468,7 +468,7 @@ TODO(自动冲突解决)
|
|||||||
通常来说,在无主模型中,写入时可以:
|
通常来说,在无主模型中,写入时可以:
|
||||||
|
|
||||||
1. 由客户端直接写入副本。
|
1. 由客户端直接写入副本。
|
||||||
2. 由**协调者(coordinator)**接收写入,转发给多副本。但与主副本不同,协调者并不负责定序。
|
2. 由**协调者(coordinator)** 接收写入,转发给多副本。但与主副本不同,协调者并不负责定序。
|
||||||
|
|
||||||
## 有节点故障时的写入
|
## 有节点故障时的写入
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user