分布式数据库中时钟偏差问题:spanner VS cockroachDB
Linearizability
Linearizability并不是一个数据库专属的概念,Linearizability原本指的是在并发系统中,进程可以同时访问一个共享对象。由于多个进程正在访问单个对象,因此可能会出现这样一种情况,即当一个进程正在访问该对象时,另一个进程会更改其内容。使系统可线性化是解决这个问题的一种方法。在可线性化的系统中,尽管操作在共享对象上重叠,但每个操作似乎都是瞬间发生的。线性化是一个很强的正确性条件,它限制了当多个进程同时访问一个对象时可能的输出。它是一种安全属性,可确保操作不会以意外或不可预测的方式完成。如果系统是可线性化的,它允许程序员对系统进行推理。也就是说我们可以将并发的程序历史重新排序成一个或多个没有并发的顺序发生的历史,原始历史只能等效于其中的一个重排的历史则称其为可线性化的。
例1
thread1 : IA1----------RA1
thread2 : | IB1---|-----RB1 IC2--------RC2
| | | | | |
| | | | | |
real-time order: IA1 IB1 RA1 RB1 IC2 RC2
--------------------------------------------------->time
相关文章