数据与服务复制技术解析
1. 数据复制概述
数据复制最早在事务处理系统中得到广泛研究。事务性数据复制与状态机复制不同,事务由对一组数据项的多个读和/或写操作组成,而状态机复制的操作粒度是整个副本。在事务层面,所有事务必须以一种看起来像是顺序执行的方式执行,类似于状态机复制中服务器副本上所有请求的顺序执行要求,但不同数据项上的实际读/写操作(可能属于不同事务)总是并发执行的。因此,事务性数据复制算法不仅要确保副本的一致性,还要定义并发控制。
事务性数据复制算法应确保复制的数据对客户端来说就像一个单一副本,特别是事务执行的交错应等同于在数据的单一副本上顺序执行这些事务,这种执行通常称为单副本可串行化。
一般来说,数据复制时希望最小化读操作的成本,因为只读查询比更新操作(对某些数据项进行写操作的事务)更常见。接下来探讨两种不正确的简单复制算法:全写(write - all)和可用全写(write - all - available),以此说明设计合理的数据复制算法并非易事。
2. 简单数据复制算法分析
2.1 全写算法(write - all)
在全写数据复制算法中,对数据项x的读操作可以映射到x的任何一个副本,而对数据项x的每个写操作都会应用到x的所有副本。只要管理副本的节点不发生故障,该复制算法满足单副本可串行化要求。因为在任何事务序列的执行中,如果一个事务对数据项x进行写操作,它会写入x的所有副本,后续如果另一个事务读取数据项x,无论从哪个副本读取,都会读取到最近写入x的事务所写入的相同值。
然而,如果管理副本的节点或进程出现故障(为方便起见,简单说副本出现故障),全写算法必须阻塞,直到故障副
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



