业务转型(OT)是支持一系列的协作功能的先进技术协同软件系统OT最初发明和一致性维护并发控制在合作的纯文本文件的编辑。二十年的研究已经扩展其功能,扩大了其应用领域包括组撤消、锁定、冲突解决、手术通知单和压缩,群体意识,HTML / XML树结构的文档编辑,协同办公生产力工具、应用共享、协同计算机辅助设计工具(见媒体otfaq)。在2009家为核心技术的协作功能落后Apache的波和谷歌文件。
目录
历史
业务转型是C.埃利斯和S. Gibbs[ 1 ]在格罗夫(集团概要浏览编辑)系统1989。几年后,一些正确性问题进行鉴定的几种方法[ 2 ] [ 3 ] [ 4 ] [ 5 ]分别独立地提出了解决这些问题,这是由另一个十年的延伸,由一个专门的研究人员不断努力提高其他社区。1998、在协同编辑一个特殊的利益集团(sigce)的成立是为了促进沟通和协作,在CE和OT人员。此后,sigce举行年度CE车间主要结合(CSCW计算机支持的协同工作)会议,如ACM CSCW,组和ecscw。
系统的体系结构
使用OT通常采用复制结构共享文档以确保在高延迟环境响应性好的存储的协同系统,如互联网。共享文件的复制在每个合作站点的本地存储,所以编辑操作可以在当地的网站,然后立即传播到远程站点。远程编辑操作,到达一个地方站点通常转化并执行。转型的保证依赖于应用程序的一致性标准是在所有网站实现。无锁,非阻塞特性OT使得当地的响应时间,网络延迟不敏感。作为一个结果,或是特别适合于实现协作等特点,在网络背景下编辑组。
基础
优选论的基本思想可以用一个简单的文本编辑情况说明如下。给定一个字符串“ABC”复制在两个合作网站的文本文档;和并发操作:
- O1 =插入[ 0,“X”](插入字符“X”在位置“0”)
- O2 =删除[ 2 ],“C”(删除字符“C”位置“2”)
在合作站点1和2两个用户产生的,分别。我们假设这两种操作都是在O1和O2的顺序执行(1站)。在执行O1,文档变成“徐州奥森回转支承制造有限公司”。执行O2后O1,O2必须改变对O1成为:O2 =删除[ 3,“C”],其位置参数是一个递增的由于一个字符“X”由O1插入。执行O2”徐州奥森回转支承制造有限公司“删除正确的字符“C”和文件变成“XAB”。然而,如果O2是执行没有转变,它错误地删除字符“B”而不是“C”。优选论的基本思想是把(或调整)的参数的一个编辑操作根据先前执行的并发操作的影响使转化操作可以达到正确的效果和保持文件的一致性。
一致性模型
一个功能或是协同编辑系统一致性维护支持。一个数的一致性模型被提出,在研究界,一些一般的协同编辑系统,以及一些专门为OT算法。
CC模型
在埃利斯和吉布斯的1989篇“并发控制组件系统”,[ 1 ]两一致性是协同编辑系统要求:
- Causality保鲜:保证因果关系相关的操作的执行顺序是在合作的过程中,他们自然的因果顺序相同。两个操作之间的因果关系是指正式的Lamport”之前发生的“关系。当两个操作是没有因果关系的依赖,它们是并行。两个并发操作可以执行在不同的顺序在两个不同的文件的副本。
- C:保证收敛的复制拷贝共享文件是相同的在所有的网站在静止(即,所有生成的操作被执行在所有网站)。
由于并发操作可能在不同的订单执行和编辑操作是不可交换的一般,在不同的站点中的文件的副本可能发散(不一致)。第一个OT算法是在埃利斯和吉布斯的提出[ 1 ]在一组文本编辑器实现收敛;状态向量(或向量时钟在传统的分布式计算)是用来保护优先性。
CCI模型
提出了协同编辑系统中的一致性管理是CCI模型。[ 3 ][ 6 ]CCI模型下,三一致性组合在一起:
- C ausality保存 :相同的优先性在CC模式。
- C收敛:相同的收敛性能在CC模式。
- <b>我</b>品保鲜:保证效果的执行操作的任何文档的状态是相同的操作意图。一个操作的目的是定义为执行的效果,可以实现应用上的文档状态,O生成。
CCI模型扩展了CC模型与一个新的标准:意愿。收敛和意愿之间的本质区别是,前者可以通过串行化协议实现,但后者可能不会通过任何序列化协议如果操作总是在其原来的形式执行。实现nonserialisable意图保存性能一直是一个重大的技术挑战。OT被发现特别适合协同编辑系统中实现融合和意愿。
CCI模型是独立的文件类型或数据模型,操作类型,或支持技术(OT,多版本化、系列化、撤销/重做)。它的目的不是为正确性验证技术(例如OT),是专为特定的数据和操作模式,为特定的应用程序。在,[ 3 ]意图保存的观念被定义和细化在三个层面:第一,它被定义为协同编辑系统的通用性要求;其次,它被定义为基础的前和后的通用OT功能转化条件的操作环境;第三,它被定义为具体操作验证标准两原语操作OT功能设计指南:字符串明智的插入和删除,在协同文本编辑。
CSM模型
意图保存条件不正式指定在CCI模型的形式证明的用途。SDT[ 7 ]和LBT[ 8 ]方法尝试将另一种条件下,可以证明。一致性模型提出了这两种方法包括以下形式条件:
- C ausality:一样的定义在CC模式
- 单操作<b>的</b>影响:影响执行任何操作在任何执行状态达到相同的效果,在其生成状态
- <b>我</b>最终的运行效果影响关系:任何两个操作后保持他们都执行在任何状态
CA模型
上述CSM模型需要一个总的订单系统中的所有对象被指定。有效的规范,减少通过插入操作引入了新的对象。然而,总的秩序规范需要应用程序特定的政策,如打破关系(即插入新对象在同一位置的两个电流操作插入)。因此,总订单成为特定应用。此外,在该算法中,总订单必须保持在转换功能和控制流程,这增加的时间/空间的算法的复杂性。
另外,该加利福尼亚州模型是基于可容许性理论。[ 9 ]CA模型主要包括两个方面:
- C ausality:一样的定义在CC模式
- <b>一个</b>容许性:调用每个操作允许在其执行状态,即每一个调用必须不违反任何影响关系(对象排序)已成立由前调用。
这两个条件意味着收敛。所有合作网站汇聚在一个状态,有一套,在同一阶对象。此外,有序有效的影响的操作时,生成的确定。由于两个条件同时施加额外的约束对象排序,他们实际上是强收敛。CA模型与设计/验证的方法阐述了2005纸。[ 9 ]它不再需要一个总的顺序一致性模型对象被指定和维护算法,从而降低了时间/空间的算法的复杂性。
OT系统结构
OT是一个多组分系统。一个既定的战略设计OT系统[ 1 ][ 2 ][ 3 ][ 4 ][ 10 ][ 11 ]是独立的高级化转换控制(或集成)从低级别的变换函数的算法。
转换控制算法与确定:
- 操作应转变对因果准备新的操作
- 变换的阶
控制算法的调用相应的转换函数,确定如何将一个操作对另一个根据手术类型、位置和其他参数。这两层的正确性的责任是由一组属性和条件指定形式的转化。不同的OT系统不同的控制算法,功能,和通信拓扑结构需要维护不同的变换性质。一个OT系统为两层的分离允许通用的控制算法,适用于各种不同的数据和操作模式的设计应用。
提出了其他的替代方法。[ 9 ]在他们的方法,如果它满足以下两个形式化的正确性准则是优选算法的正确:
- 因果关系维护
- 证据的保存
只要这两个标准都满足,数据副本收敛(额外的约束)后所有操作在所有网站执行。没有必要执行订单总额为实现收敛而执行。他们的做法一般是首先发现和证明了几个变换函数的充分条件,然后设计一个控制程序,以确保这些充分条件。这样的控制程序和转换功能协同工作来实现的正确性,即因果关系和可采性保存。在他们的方法,不需要满足变换性质如TP2因为它不要求,(含)转换功能工作在所有可能的情况下。
数据和操作模式
存在两种基本模型中的每一个OT系统:数据模型,定义了文档中的数据对象的操作方式和操作模型定义了一组操作,可以通过OT功能直接转换。不同的OT系统可能有不同的数据和操作模式。例如,在第一个加时系统数据模型[ 1 ]是一个单一的线性地址空间;和它的运作模式是由两个基本操作:插入、删除字符明智。基本操作模式已经扩展到包括三分之一个原始的操作更新支持Word文档处理的协同[ 12 ]三维模型编辑。[ 13 ]基本的数据模型已扩展成一个层次结构的多个线性寻址域,[ 14 ][ 15 ]它能够广泛的文件建模。一个数据自适应过程往往需要地图应用程序特定的数据模型的一个不兼容的数据模型。[ 16 ][ 17 ]
有支持在OT系统应用级的操作方法:
- 通用的操作模型:这是设计转换功能三基本操作:插入、删除和更新。[ 16 ]这种方法需要一个适应过程,操作地图应用的操作,这些基本操作。在这种方法中,OT操作模型是通用的,所以转换功能可用于不同的应用。
- 具体操作方法:应用模型的设计对每个应用程序操作转换功能。[ 17 ][ 18 ]与我不同的业务应用,M×M变换函数支持该应用程序所需的。在这种方法中,转换函数的应用程序特定的、不可重复使用在不同的应用程序。
OT功能
各种OT功能被设计为OT系统具有不同的功能,用于不同的应用。OT用不同的OT系统功能可能有不同的名称,但他们可以分为两类:
- 纳入改造(或转换):它(OA,OB)或 T ( o P 一 , o P 二 ) { \ displaystyle T(op_ { 1 },op_ { 2 })} 将OA与操作,在这样一种方式,OB的影响是有效地包含了另一个手术转播。
- 排除转化(或反向转换):ET(OA,OB)或 T − 一 ( o P 一 , o P 二 ) {“{ 1 } ^ displaystyle T(op_ { 1 },op_ { 2 })} 将OA与操作,在这样一种方式,OB的影响是有效地排除在外的另一个操作对象。
例如,假设一个运行插件类型字符串(P,C,SID)其中P是插入的位置,C字符插入和SID是网站,生成操作标识符。我们可以写如下的变换函数:
T(INS( P 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 },c_ { 1 },sid_ { 1 } } )、INS( P 二 , C 二 , S I D 二 { \ displaystyle p_ { 2 },c_ { 2 },sid_ { 2 } } )):- 如果( P 一 < P 二 { \ displaystyle p_ { 1 } < p_ { 2 } } INS()返回 P 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 },c_ { 1 },sid_ { 1 } } else if) P 一 = P 二 { \ displaystyle p_ { 1 } = p_ { 2 } } 和 S I D 一 < S I D 二 { \ displaystyle sid_ { 1 } < sid_ { 2 } } INS()返回 P 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 },c_ { 1 },sid_ { 1 } } ) 返回INS P 一 + 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 } + 1,c_ { 1 },sid_ { 1 } } )
T − 一 {“{ 1 } displaystyle T ^ } (INS( P 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 },c_ { 1 },sid_ { 1 } } )、INS( P 二 , C 二 , S I D 二 { \ displaystyle p_ { 2 },c_ { 2 },sid_ { 2 } } )):- 如果( P 一 < P 二 { \ displaystyle p_ { 1 } < p_ { 2 } } INS()返回 P 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 },c_ { 1 },sid_ { 1 } } else if) P 一 = P 二 { \ displaystyle p_ { 1 } = p_ { 2 } } 和 S I D 一 < S I D 二 { \ displaystyle sid_ { 1 } < sid_ { 2 } } INS()返回 P 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 },c_ { 1 },sid_ { 1 } } ) 返回INS P 一 − 一 , C 一 , S I D 一 { \ displaystyle p_ { 1 } 1,c_ { 1 },sid_ { 1 } } )
一些不使用它,等系统功能,和一些只使用它的功能。OT功能设计的复杂性是由多种因素决定的:
- OT系统的功能:是否支持(OT系统一致性维护),撤消,锁定,[ 19 ]意识、应用共享,[ 16 ][ 20 ][ 21 ][ 22 ]等.;
- 在OT系统的正确性的责任:什么变换性质(CP1、CP2、TP1,TP2,IP2,IP3,RP)是否满足使用等;
- OT系统的运作模式:无论OT操作模型是通用的(如原始的插入、删除、更新),或特定的应用(目标应用程序的所有操作);和
- OT系统的数据模型:是否在每个操作的数据是聪明的性格(一个单独的对象),智慧(一个字符串对象序列),分层,或其他结构。
变换性质
为保证系统的正确性的各种变换性质或已确定。这些特性可以通过变换控制算法保持[ 3 ][ 4 ][ 11 ][ 17 ][ 23 ][ 24 ]或通过变换函数。[ 25 ]不同的OT系统设计有不同的责任划分这些组件之间。这些性质和条件要求的规格如下。
收敛性质
以下两个属性是实现收敛。
- CP1 / TP1对于每一对并发操作: o P 一 { \ displaystyle op_ { 1 } } 和 o P 二 { \ displaystyle op_ { 2 } } 在同一状态的定义,变换函数T满足CP1 / TP1性质当且仅当: o P 一 ∘ T ( o P 二 , o P 一 ) ≡ o P 二 ∘ T ( o P 一 , o P 二 ) { \ displaystyle op_ { 1 }°T(op_ { 2 },op_ { 1 })\当量op_ { 2 }°T(op_ { 1 },op_ { 2 })} 哪里 o P I ∘ o P J { \ displaystyle op_ {我} { } } \保监会op_ [J]. 表示操作顺序包含 o P I { } } {我op_ \ displaystyle 然后 o P J { } { } \ displaystyle op_ [J]. ;何 ≡ {等} displaystyle \ \ 表示两个操作序列等价。CP1 / TP1前提:1 / TP1只有OT系统允许任何两操作在不同的订单执行要求。
- 2 / 2:每三个并发操作 o P 一 , o P 二 { \ displaystyle op_ { 1 },op_ { 2 } } 和 o P 三 { \ displaystyle op_ { 3 } } 在同一文档的状态定义,变换函数不满足2 / 2性质当且仅当: T ( o P 三 , o P 一 ∘ T ( o P 二 , o P 一 ) ) = T ( o P 三 , o P 二 ∘ T ( o P 一 , o P 二 ) ) { \ displaystyle T(op_ { 3 },{ 1 } \保监会op_ T(op_ { 2 },op_ { 1 }))= T(op_ { 3 },{ 2 } \保监会op_ T(op_ { 1 },op_ { 2 }))} 。CP2 / TP2规定之间的转化方面的操作的两个等价序列操作平等:转型 o P 三 { \ displaystyle op_ { 3 } } 对操作序列 o P 二 { \ displaystyle op_ { 2 } } 然后 T ( o P 一 , o P 二 ) { \ displaystyle T(op_ { 1 },op_ { 2 })} 必须给予同样的操作,转化 o P 三 { \ displaystyle op_ { 3 } } 对形成的序列 o P 一 { \ displaystyle op_ { 1 } } 和 T ( o P 二 , o P 一 ) { \ displaystyle T(op_ { 2 },op_ { 1 })} 。2 / 2前提:CP2 / TP2是只有OT系统允许两个操作要求 o P 一 { \ displaystyle op_ { 1 } } 和 o P 二 { \ displaystyle op_ { 2 } } 它是在两个不同的文档状态转换(或背景)。
逆性质
以下三个属性是实现所需的组撤消作用有关。他们是:
- IP1:任何文档的状态和序列 o P ∘ o P ¯ { \ displaystyle OP \保监会{ \眉题{ } } } OP ,我们有 S ∘ o P ∘ o P ¯ = S { \ \ \保监会保监会OP displaystyle {\眉题{ OP } } } = ,这意味着序列 o P ∘ o P ¯ { \ displaystyle OP \保监会{ \眉题{ } } } OP 相当于一个单一的身份操作我就在文档状态的影响。此属性是必需的在OT系统实现正确的复原效果,但是不相关的功能。
- IP2:物业IP2表示序列 o P ∘ o P ¯ { \ displaystyle OP \保监会{ \眉题{ } } } OP 对其他业务的转变没有影响。转换函数满足IP2的当且仅当: T ( o P X , o P ∘ o P ¯ ) = o P X { \ displaystyle T(op_ {X},OP \保监会{ { } } \线OP)= op_ {X} } ,这意味着转变的结果 o P X { \ displaystyle op_ {X} } 对序列 o P ∘ o P ¯ { \ displaystyle OP \保监会{ \眉题{ } } } OP 相当于转化的结果 o P X { \ displaystyle op_ {X} } 对身份运行I.IP2的前提:IP2只有OT系统允许操作要求 o P X { \ displaystyle op_ {X} } 要转变对一对做的撤消操作 o P ∘ o P ¯ { \ displaystyle OP \保监会{ \眉题{ } } } OP ,一个接一个。
- IP3:给定两个并发操作 o P 一 { \ displaystyle op_ { 1 } } 和 o P 二 { \ displaystyle op_ { 2 } } 在同一文档的状态定义(或背景),如果 o P 一 ¯ ′ = T ( o P 一 ¯ , T ( o P 二 , o P 一 ) ) { { { \划线\ displaystyle op_ { 1 } } }“= T({ \眉题{ op_ { 1 } } },T(op_ { 2 },op_ { 1 }))} 和 o P 一 ′ ¯ = T ( o P 一 , o P 二 ) ¯ { \ displaystyle {\线op_ { 1 }的{ } } = { \眉题{ T(op_ { 1 },op_ { 2 })} } } 。转换函数满足物业IP3的当且仅当 o P 一 ¯ ′ = o P 一 ′ ¯ { { { \划线\ displaystyle op_ { 1 } } } = { \眉题{ op_ { 1 }”} } } ,这意味着转换的逆运算 o P 一 ¯ ′ { { { \划线\ displaystyle op_ { 1 } } }”} 等于变换运算的逆 o P 一 ′ ¯ { \ displaystyle {\线op_ { 1 }的{ } } } 。IP3的前提:IP3是只有OT系统允许反向操作要求 o P 一 ¯ { { { \划线\ displaystyle op_ { 1 } } } } 要改造与运行 o P 二 { \ displaystyle op_ { 2 } } 这是并发和定义在同一文件的状态(或上下文等价) o P 一 { \ displaystyle op_ { 1 } } 。
OT控制(一体化)算法
各种控制算法被设计为具有不同能力的OT系统和不同的应用。OT控制算法设计的复杂性是由多种因素决定的。关键在于,是否能够支持的并发控制算法(做)和/或组撤消。[ 2 ][ 6 ][ 10 ][ 24 ][ 26 ]此外,不同的控制算法的设计使不同的权衡:
- 责任分配的正确性的控制算法和变换功能中,
- OT系统的时空复杂度。
大多数现有的OT控制并发控制算法采用因果关系/并发理论作为理论基础:因果关联的操作必须在他们的因果顺序执行;并发操作必须改变之前执行。然而,众所周知,并发条件不能捕获所有OT转化条件。[ 2 ][ 3 ][ 4 ][ 6 ][ 27 ]在最近的一份工作,操作上下文理论提出已经明确表示一个文件的状态的概念,它可以用于正式表达OT转化条件的支持或控制算法的设计和验证。[ 24 ]
下表给出了一些现有的控制/集成算法综述
控制/积分算法(系统) | 所需的转换函数类型 | 支持基于OT吗? | 支持基于复原吗? | 通过控制算法支持的变换性质 | 通过变换函数支持的变换性质 | 变换顺序和传播的限制 | 时间戳 |
---|---|---|---|---|---|---|---|
采用[ 1 ](林) | T(它) | 是 | 否 | 无 | CP1、CP2、TP1、TP2 | 因果顺序 | 状态向量 |
选择性还原[ 10 ](DistEdit) | 转置(,等) | 否 | 选择性还原 | Na | CP1、CP2、TP1,TP2,IP1,IP2,IP3的RP, | 因果顺序 | ?? |
采用[ 2 ][ 26 ](联合Emacs) | ltransformation(它) | 是 | 按撤消 | IP2,IP3 | CP1、CP2、TP1、TP2,IP1 | 因果顺序 | 状态向量 |
木星[ 4 ] | 器(它) | 是 | 否 | 2 / 2 | CP1 / TP1 | 因果顺序+中央转换服务器 | 标量 |
谷歌Wave的OT[ 17 ] | 变换和组合(它) | 是 | 否 | 2 / 2 | CP1 / TP1 | 因果顺序+中央转换服务器+ stop'n'wait传输协议 | 标量 |
得到了[ 3 ](减少) | 它和ET | 是 | 否 | CP1、CP2、TP1、TP2 | 无 | 因果顺序+间断全序 | 状态向量 |
goto[ 5 ](减少,共词,共沉淀物,comaya) | 它和ET | 是 | 否 | 无 | CP1、CP2、TP1、TP2 | 因果顺序 | 状态向量 |
anyundo[ 6 ](减少,共词,共沉淀物,comaya) | 它和ET | 否 | 撤消任何操作 | IP2,IP3,RP | IP1,CP1、CP2、TP1、TP2 | 因果顺序 | 状态向量 |
SCOP[ 23 ](好的) | IT | 是 | 否 | 2 / 2 | CP1 / TP1 | 因果顺序+中央转换服务器 | 标量 |
胶辊[ 24 ](减少,共词,共沉淀物,comaya) | IT | 是 | 撤消任何操作 | 2 / 2,IP2,IP3 | CP1 / TP1,(没有等没有必要因此IP1) | 因果顺序+间断全序 | 上下文向量 |
tibot[ 28 ] | IT | 是 | 否 | 2 / 2 | CP1 / TP1 | 因果顺序 | 标量 |
soct4[ 11 ] | 正变换(它) | 是 | 否 | 2 / 2 | CP1 / TP1 | 因果顺序+连续全序 | 标量 |
soct2[ 27 ] | 正变换(IT)和反向变换(ET) | 是 | 否 | 无 | CP1、CP2、TP1,TP2,RP | 因果顺序 | 状态向量 |
MOT2[ 29 ] | 正变换(它) | 是 | 否 | ?? | CP1、CP2、TP1、TP2 | ?? | 标量 |
连续总订单是严格全序它可以检测到丢失的元素即1,2,3,4,…是一个连续的全序,1、2、3、5,…不连续的全序。
基于变换的算法[ 8 ][ 9 ]基于选择的一致性模型“CSM”和“CA”如上。他们的方法不同于那些在台上市。他们使用矢量时间戳因果保存。其他的正确性条件是“单”、“多”的运行效果关系的保持或“受理”保存。这些条件保证了控制程序和转换功能的协同作用。没有必要去讨论他们的工作1 / 2。因此,他们不是在上表列出。
有一些乐观的一致性控制算法,寻找替代的方法来设计算法,但不具有上述的分类和特性相吻合。例如,马克和追溯[ 30 ]
优选论的正确性问题导致transformationless后OT方案介绍,如哇,[ 31 ]Logoot-[ 32 ]因果树(CT)。[ 33 ]“OT”格式的文件分解成原子操作,但他们的工作需要相结合的独特的符号标识变换运算,向量时间戳和/或墓碑。
批判的OT
而通过偏移定义操作文本中的经典OT的方法似乎是简单和自然的,分布式系统提出严重的问题。即操作有限速度传播,美国的参与者往往不同,因此产生的状态和操作的组合预测和理解非常困难。李和李说的,“由于需要考虑复杂的个案报道,正式的证据是非常复杂且容易出错,甚至其他的算法,只把两个字符图元(插入和删除)”。[ 34 ]
同样的,Joseph Gentle是一位前谷歌工程师和波的share.js库的作者写道,“不幸的是,实施OT很烂。有不同的权衡一百万种算法,大多被困在学术论文。该算法是非常困难和耗费时间的正确执行。[…]波写了2年,如果我们重写了它的今天,它将几乎只要写一次。”[ 35 ]
其他的工作,每一个变化的数据需要被抓获:“获得国家快照通常是微不足道的,但捕捉编辑是一个完全不同的问题。[…]的丰富现代用户界面可以使这个问题,特别是在一个基于浏览器的环境。”替代OT差动同步。[ 36 ]
另一种替代OT是使用序列类型无冲突的复制的数据类型。