数据同步
编辑是在源数据存储和目标数据存储之间建立一致性的过程,并随着时间的推移不断协调数据。它是各种应用的基础,包括文件同步和移动设备同步。
基于文件的解决方案
编辑有一些工具可用于文件同步、版本控制(CVS、Subversion等)、分布式文件系统(Coda等)和镜像(rsync等),在所有这些试图保持文件集的同步。然而,只有版本控制和文件同步工具可以处理对文件的多个副本的修改问题。
文件同步通常用于外部硬盘上的家庭备份或更新USB闪存驱动器上的运输。自动过程可以防止复制已经相同的文件,因此相对于手动复制来说,可以节省相当多的时间,而且速度更快,更不容易出错。 版本控制工具旨在处理多个用户试图同时修改同一个文件的情况,而文件同步器则针对一次只编辑一个文件副本的情况进行优化。由于这个原因,虽然版本控制工具可以用于文件同步,但专用程序需要的开销较少。 分布式文件系统也可以看作是确保一个文件的多个版本的同步。这通常要求存储文件的设备总是连接在一起,但有些分布式文件系统,如Coda,允许断开操作后再进行调和。分布式文件系统的合并设施通常比版本控制系统的设施更有限,因为大多数文件系统不保留版本图。 镜像(计算)。镜像是一个数据集的精确拷贝。在互联网上,一个镜像站点是另一个互联网站点的精确拷贝。镜像网站最常被用来提供同一信息的多个来源,作为提供可靠访问大型下载的一种方式,具有特殊的价值。 理论模型 在研究文献中存在几种数据同步的理论模型,该问题也与信息论中的Slepian-Wolf编码问题有关。这些模型是根据它们认为数据同步的方式进行分类的。
无序数据
编辑无序数据的同步化问题(也称为集合调和问题)被建模为试图计算对称差S A⊕S B = ( S A - S B ) ∪ ( S B - S A ) {displaystyle S_{A}oplus S_{B}=(S_{A}-S_{B})/cup (S_{B}-S_{A})}在两个b位数的远程集合S A {displaystyle S_{A}}和S B {displaystyle S_{B}}之间。这个问题的一些解决方案的典型代表是。
批量传输在这种情况下,所有数据都被传输到一台主机上进行本地比较。时间戳同步在这种情况下,数据的所有变化都有时间戳标记。同步的过程是通过传输所有时间戳晚于前一次同步的数据来进行的。数学同步在这种情况下,数据被视为数学对象,同步对应于一个数学过程。
有序数据在这种情况下,两个远程字符串σ A {displaystyle sigma _{A}和σ B {displaystyle sigma _{B}需要被调和。通常情况下,假设这些字符串最多有固定数量的编辑(即字符的插入、删除或修改)而不同。然后,数据同步是减少σ A {displaystyle sigma _{A}和σ B {displaystyle sigma _{B}之间编辑距离的过程。}直到理想的距离为零。这适用于所有基于文件系统的同步(其中数据是有序的)。这方面的许多实际应用在上面有讨论或参考。
有时可以通过一个称为shingling(将字符串分割成shingles)的过程将问题转化为无序数据的问题。
错误处理
编辑在容错系统中,分布式数据库必须能够应对其数据的(部分)丢失或损坏。xxx步通常是复制,这涉及到制作多个数据副本,并在发生变化时保持它们都是最新的。然而,当一个实例发生丢失或损坏时,有必要决定依靠哪个副本。
最简单的方法是有一个单一的主实例,它是真理的xxx来源。对它的修改被复制到其他实例上,当旧的主实例失效时,这些实例中的一个成为新的主实例。
Paxos和Raft是更复杂的协议,它们的存在是为了解决故障切换过程中的瞬时效应问题,比如两个实例同时认为自己是主控。
如果整个节点的故障非常普遍,秘密共享就很有用。这将同步从一个明确的恢复过程转移到每个读的一部分。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/193153/