CN102955816B - 利用串匹配进行数据同步的方法和系统 - Google Patents

利用串匹配进行数据同步的方法和系统 Download PDF

Info

Publication number
CN102955816B
CN102955816B CN201110252194.0A CN201110252194A CN102955816B CN 102955816 B CN102955816 B CN 102955816B CN 201110252194 A CN201110252194 A CN 201110252194A CN 102955816 B CN102955816 B CN 102955816B
Authority
CN
China
Prior art keywords
block diagram
block
copy
data
old
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201110252194.0A
Other languages
English (en)
Other versions
CN102955816A (zh
Inventor
张凯
高英明
霍嘉
邹献
杨远琳
肖红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201110252194.0A priority Critical patent/CN102955816B/zh
Priority to US13/471,296 priority patent/US9043275B2/en
Publication of CN102955816A publication Critical patent/CN102955816A/zh
Application granted granted Critical
Publication of CN102955816B publication Critical patent/CN102955816B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据或文件同步技术领域。更具体地,本发明尤其涉及利用字符串匹配算法进行数据同步的方法和系统。本发明提供了一种用于数据同步的方法,包括:获取待同步数据位于源节点的旧拷贝和新拷贝;利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图;以及将所生成的区块图发送至目标节点,以将所述目标节点的待同步数据的旧拷贝同步为所述新拷贝。

Description

利用串匹配进行数据同步的方法和系统
技术领域
本发明涉及数据或文件同步技术领域。更具体地,本发明尤其涉及利用字符串匹配算法进行数据同步的方法和系统。
背景技术
目前,越来越多的应用程序具有储存于不同的计算机上的数据或文件,并且需要保证当在其中一个计算机节点上对数据或文件进行更新后,能够在其它多个计算机上同步这些更新。通常,数据更新发生的原始计算机或计算节点被称作源节点,而待同步的其它计算机或计算节点被称作目标节点。进一步地,这样的数据同步需求在云计算(CloudComputing)环境下更加迫切,例如在云存储(CloudStorage)环境下,数据及文件冗余地分布在多个不同的节点上,需要数据同步技术来保证云环境下多个不同节点间的数据及文件同步。
现有技术中存在一些解决数据同步问题的技术方案。根据现有技术中的一种解决方案,当源节点中的文件被更新时,直接将更新后的文件整体传送至其它远程或本地的需要同步该文件的目标节点。该技术方案的一个明显缺点是:即使文件中只有一个字节被更新,也要传送整个文件,从而造成对时间和网络资源的大量不必要耗费。
根据现有技术中的另一种解决方案,是将数据或文件的旧拷贝分成固定长度的数据块,当数据或文件在源节点中被更新后,利用哈希算法(Hash)在数据或文件的新拷贝中识别这些数据块,然后将更新后的文件中的数据块的位置信息以及更新了的数据块的内容发送至目标节点以实现数据同步。这种技术方案的明显缺点是:哈希运算会耗费大量的CPU资源,并且大量的数据块内容和位置的传输会消耗过多的网络资源。
因此,需要一种避免传输全部文件内容来计算新旧数据或文件间的差异的在源节点和目标节点间进行数据同步的方法。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种能够在源节点和目标节点间进行数据同步的方法或系统。本发明的又一目的在于提供一种避免传输全部文件内容的数据同步方法或系统。本发明的再一目的在于提供一种避免使用哈希算法来计算新旧文件间的差异的数据同步的方法或系统。本发明并非需要同时达成上述三个目的,而只需满足三个目的之一即可。
根据本发明的一个方面,提供了一种用于数据同步的方法,包括:获取待同步数据位于源节点的旧拷贝和新拷贝;利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图;以及将所生成的区块图发送至目标节点,以将所述目标节点的待同步数据的旧拷贝同步为所述新拷贝。
根据本发明的另一方面,提供了一种用于数据同步的系统,包括:获取装置,被配置为获取待同步数据位于源节点的旧拷贝和新拷贝;区块图生成装置,被配置为利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图;以及发送装置,被配置为将所生成的区块图发送至目标节点,以将所述目标节点的待同步数据的旧拷贝同步为所述新拷贝。
根据本发明的方法和系统,通过字符串匹配的方式,可以识别出新、旧数据间的差异以实现目标节点和源节点间的数据同步,在数据同步的过程中仅需传输必要的内容并且无需利用哈希算法。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。
图2示出了根据本发明一个实施例的用于数据同步的方法的流程图;
图3示出了根据本发明另一实施例的用于数据同步的方法的流程图;
图4A至4G是示出了根据本发明一个实施例的区块图的生成过程的各阶段以及在目标节点同步数据的示意图;
图5示出了根据本发明一个实施例的用于数据同步的系统的框图。
具体实施方式
在下文中,将参考附图通过实施方式对本发明提供的用于数据同步的方法和系统进行详细地描述。
所属技术领域的技术人员知道,本发明的多个方面可以体现为系统、方法或计算机程序产品。因此,本发明的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明的多个方面还可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。
可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件的语境中,计算机可读存储介质可以是任何包含或存储程序的有形的介质,该程序被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可包括在基带中或者作为载波一部分传播的、其中体现计算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序的任何计算机可读介质。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如“C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面参看图1。图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
图2示出了根据本发明一个实施例的用于数据同步的方法的流程图。图2所示的方法从步骤201开始。在步骤201中,获取待同步数据位于源节点的旧拷贝和新拷贝。源节点是指数据或文件发生更新的原始计算机或原始计算节点。顾名思义,旧拷贝是指更新前的数据,而新拷贝是指经更新后的数据。根据步骤201,待同步数据的旧拷贝和新拷贝均在可在源节点获取。这与传统的通过哈希算法进行多节点间数据同步操作是不同的,利用哈希算法时,不需要在源节点获取待同步数据的旧拷贝。从下文中可以更加清晰地理解要求在源节点获取新拷贝和旧拷贝的原因——字符串匹配的需要。
接下来,图2所示的方法进行至步骤202。在步骤202中,利用字符串匹配,确定旧拷贝和新拷贝间的差异以生成区块图。“字符串匹配”指串搜索算法(Stringsearchingalgorithm)。根据本发明的一个实施例,串搜索算法是用于搜索一个给定的模式串在一个更大的串中出现的位置的算法。这类算法常用于字符串搜索,但大部分串搜索算法并不限制串的格式(除了基于字典的字符串搜索算法),他们可以用于任意由若干字节(byte)组成的串,包括字符串和二进制串。常见的串搜索算法包括但不限于:简单串搜索算法(Naivestringsearchalgorithm)、KMP算法(Knuth-Morris-Prattalgorithm)、BM算法(Boyer-Moorestringsearchalgorithm)等。本领域技术人员应当理解,上述串搜索算法的具体内容属于本领域的公知技术,可以从相关公开文献中查阅,在此不再赘述。同时需要强调的是,本发明并不限定何种具体的串搜索算法,只要能够进行字符串之间的匹配判断,即可适用于本发明。
正是因为在步骤201中在获取了源节点的待同步数据的旧拷贝和新拷贝,从而可以在步骤202中利用字符串匹配来确定旧拷贝和新拷贝间的差异,并依据所确定的差异生成区块图。根据本发明的一个实施例,所生成的区块图包括未改变区块的位置信息以及改变区块的位置信息和内容。需要指出的是,区块图的核心在于提供相关信息,并不对其具体的信息提供或展示方式作出任何限定,区块图是由计算机读取的,并非用于向用户展示。因此下文中(尤其是图4中)给出的具体生成区块图的示例仅仅是为了说明运算的过程。还需要指出的是,所生成的区块图中的区块是在字符串匹配的过程中实时生成的,是变长的,而并非像利用哈希算法进行数据同步时那样事先对待同步文件分成定长数据块。关于步骤202中生成区块图的详细步骤,将在下文中结合图3和图4进行具体介绍。
接下来,在步骤203中,将所生成的区块图发送至目标节点,以将目标节点的待同步数据的旧拷贝同步为新拷贝。由于区块图中包括未改变区块的位置信息以及改变区块的位置信息和内容,因此目标节点利用所生成的区块图可以实现数据的同步。
利用图2提供的方法,通过字符串匹配的方式,可以识别出新、旧数据间的差异以实现目标节点和源节点间的数据同步,在数据同步的过程中仅需传输必要的内容并且无需利用哈希算法。
图3示出了根据本发明另一实施例的用于数据同步的方法的流程图。图3所示的方法从步骤301开始,步骤301对应于图2中的步骤201,在此不再赘述。在步骤302中,将区块图初始化为与新拷贝具有相同长度的未知区间。未知区间是指区块图中由于尚未进行过新旧拷贝间的字符串匹配,因此尚处于未知状态的区间。
接下来,图3所示的方法进行至步骤303。在步骤303中,从所述新拷贝中对应于所述未知区间的部分选取预定义长度的搜索块。搜索块是一小块从新文件取出来的数据,用于在旧文件中搜索相同的数据。搜索块的长度会影响搜索效率,应根据实现的时候采用的具体串搜索算法选定。一般来说512字节到2048字节(但不限于)是比较合适的。根据本发明的一个实施例,在未知区间的中点处选取预定义长度的搜索块。根据本发明的另一实施例,在未知区间的中点之外的位置选取预定义长度的搜索块。根据本发明的一个实施例,如果区块图在生成过程中存在多个未知区间,则先对较大的(长度较长)的未知区间进行处理。根据本发明的另一实施例,如果区块图在生成过程中存在多个未知区间,则随机地对任意一个未知区间先进行处理。本领域技术人员应当理解,虽然从较大的未知区间开始进行处理,以及从某个未知区间的中点处选取搜索块有助于提高匹配的效率,但是无论采用何种处理多个未知区间的优先顺序,也无论对一个特定未知区间采用何种选取搜索块的位置的方法,均不影响本发明的技术效果及目的的实现,均落入本发明的保护范围。
图3所示的方法进行至步骤304。在步骤304中,利用字符串匹配,判断所述旧拷贝中是否具有对应于所述搜索块的区块。无论选用何种字符串匹配(串搜索算法)方式,均可以判断旧拷贝中是否具有对应于新拷贝中所选取的搜索块的区块。然后,可以根据步骤304的判断结果,更新区块图。
具体地,响应于步骤304的判断结果为否,则说明源节点的旧拷贝中没有找到与新拷贝所选取的搜索块相同的区块,从而进行至步骤307,将区块图中的相应位置标记为改变区块。这里所说的“相应位置”是指区块图中对应于在新拷贝中所选取的搜索块的位置(区域)。
响应于步骤304的判断结果为是,则说明源节点的旧拷贝中找到了与新拷贝所选取的搜索块相同的区块,从而进行至步骤305,将搜索块在新拷贝和旧拷贝中向左右两个方向扩展进行逐字节比较,以确定未改变区块的左右边界。然后再步骤306中,在区块图中标记所确定的具有左右边界的未改变区块。通常来讲,如果在旧拷贝中找到了相同的区块,就把搜索块同样大小的区间在区块图中标记为未改变区块即可。但是为了提高比对效率,本发明中创造性地提出了通过向左右扩展进行逐字节比较的方式,从而最大程度地一次性确定尽可能大范围的未改变区块。
接下来,无论步骤304的判断结果如何并执行何种相应的操作,步骤306和307执行完毕后均进行至步骤308。在步骤308中,判断区块图中是否还存在未知区间。响应于判断结果为否,说明区块图中的所有未知区间均已被处理,区块图中已经仅包含改变区块和未改变区块的标记,从而区块图生成完毕,图3所示的方法“执行步骤203并结束”,在步骤203中,将所生成的区块图发送至目标节点,以将目标节点的待同步数据的旧拷贝同步为新拷贝。
响应于步骤308中的判断结果为是,则进行至步骤309。在步骤309中,判断未知区间是否小于预定义长度的最小未知区间值。最小未知区间值是一个未知区间长度的下限。当一个未知区间的长度小于最小未知区间值的时候,优选地不再将这个未知区间用于搜索,而是直接将其在区块图中标注为改变区块。预定义最小未知区间的目的是在搜索消耗的资源和传输消耗的资源之间取得平衡。如果一个区块很小,直接传输它所消耗的资源已经接近或者小于将它用于搜索所消耗的资源的话,我们就直接将其标注为改变区块并直接传送它的数据。最小未知区间值的长度定义取决于网络传输速度和计算机的性能。较快的网络传输速度应选取较大的最小未知区间值,而较高的计算机性能应选取较小的最小未知区间值。
如上所述,响应于步骤309中的判断结果为是,则进行至步骤307,将区块图中的相应位置标记为改变区块。然后重复进行步骤308和309的判断,直至在步骤308中判断结果为否。响应于步骤309中的判断结果为否,说明存在的未知区间大于或者等于预定义的最小未知区间值,仍然需要对该未知区间进行处理,因此进行至步骤303,并重复执行步骤303至步骤309的操作,直至在步骤308中判断结果为否。
需要指出的是,步骤309并非本发明的必须的步骤。本领域技术人员应当理解,完全可以对所有的未知区间均进行如步骤301至步骤308的操作,直至所有的未知区间均处理完毕(无论未知区间长度有多小)。
由图3所示的方法可以看出,通过初始化区块图,并对区块图中的未知区间进行字符串匹配处理,直至消除所有的区块图中的未知区间,可以识别出新、旧数据间的差异以实现目标节点和源节点间的数据同步,在数据同步的过程中仅需传输必要的内容并且无需利用哈希算法,而且可以在找到匹配搜索块的情况下通过左右扩展来尽可能地找出最大的未改变区块,从而提高数据同步的效率并节省运算资源。
图4A至4G是示出了根据本发明一个实施例的区块图的生成过程的各阶段的示意图。在图4示出的示例中,每次循环我们在区块图中找到最大的未知区间,用其正中间的位置作为选取搜索块的位置。
图4A示出了图例说明以及第一次循环操作的示意图。在第一次循环中,整个区块图都是一个完整的未知区间。从这个未知区间中部开始搜索。在新文件对应的位置取出一块搜索块,在旧文件上用串搜索算法进行搜索。搜索没有找到对应的区块,所以将区块图中部标记为改变区块。
图4B示出了第二次循环操作的示意图。在第一次循环结束时,区块图中形成左右两块等大的未知区间。我们在左边的未知区间中部选取搜索块,在新文件对应位置取到搜索块。串搜索算法在旧文件中找到了对应的块。我们把搜索块在新旧文件中向左右扩展做逐字节比较,寻找未改变块区域的左右边界。比如:假设搜索块在新文件的左边界为m,在旧文件中为对应为m’,我们向左边比较新文件的第m-1个字节和旧文件的第m’-1个字节,如果相同,继续比较新文件的m-2和旧文件的第m’-2个字节,重复这个过程,直到找到新文件的第m-k(k>=1)个字节和旧文件的第m’-k个字节不同,则未改变区块的左边界是新文件的第m-k+1个字节,对应于旧文件的第m’-k+1个字节。同样,假设搜索块在新文件的右边界为n,在旧文件中为对应为n’。用同样的方法可以从搜索快右边界向右找到第一个新文件和旧文件不同的字节为新文件中的n+l(l>=1),对应于旧文件中的n’+l。于是未改变区块的右边界在新文件中为n+l-1,对应于旧文件的n’+l-1。于是我们在区块图中标出第m-k+1个字节到第n+l-1个字节为未改变区块,这个区块的数据和旧文件中第m’-k+1个字节到第n’+l-1个字节完全相同。区块图中的标出的位置也就是旧文件中的区块B在新文件中对应的位置。
图4C示出了第三次循环操作的示意图。在第二次循环结束时,区块图中形成两块未知区间。我们选取最大的那块未知区间中部搜索,在新文件对应位置取到搜索块。串搜索算法在旧文件中找到了对应的块。我们用和图二相同的方法把搜索块向左右扩展到未改变区块的边界,然后在区块图中标出旧文件的区块D在新文件中对应的位置。
图4D示出了第四次循环操作的示意图。在第四次循环操作中,选取最大的未知区间中部开始搜索。串搜索算法没有在旧文件中找到对应的搜索块,于是我们把搜索块在区块图中标记为改变区块。同时我们发现这个新标注的区块左右两边的未搜索区块都小于最小未知区间,于是我们把左右两小块未知区间直接标注为改变区块,不再对它们尝试搜索。
图4E示出了第五次循环操作的示意图。选取区块图中最后一个未知区间中部开始搜索。串搜索算法没有在旧文件中找到对应的搜索块,于是我们把搜索块在区块图中标记为改变区块。同时我们发现这个新标注的区块左右两边的未搜索区块都小于最小未知区间,于是我们把左右两小块未知区间直接标注为改变区块,不再对它们尝试搜索。可以看出区块A实际上是未改变区块,但我们也将其标注为改变区块了。这是由于区块A太小了,传输这个区块的代价和对它进行搜索的代价相比小到可以忽略。
图4F示出了最终生成的区块图的示意图。在最终生成的区块图中,对于未改变的区块B和D,它们在新旧拷贝中的位置将被传输到远程计算机上(即目标节点)。对于改变区块X和Y,他们在新拷贝中的位置以及它们的数据会被传输到远程计算机上。
图4G示出了在目标节点利用所生成的区块图进行数据同步的示意图。利用区块图中的关于未改变区块B和D的位置信息,以及关于改变区块X和Y的位置及内容信息,可以将区块图与目标节点的旧拷贝合并从而生成新拷贝,以完成数据同步。
图5示出了根据本发明一个实施例的用于数据同步的系统的框图。图5所示的系统在整体上由500表示。具体地,系统500包括获取装置501,被配置为获取待同步数据位于源节点的旧拷贝和新拷贝;区块图生成装置502,被配置为利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图;以及发送装置503,被配置为将所生成的区块图发送至目标节点,以将所述目标节点的待同步数据的旧拷贝同步为所述新拷贝。本领域技术人员应当理解,系统500中的装置501-503分别对应于图2所示的方法中的步骤201-203,在此不再赘述。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
虽然以上结合具体实例,对本发明的利用远程应用处理本地文件的系统及方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。

Claims (10)

1.一种用于数据同步的方法,包括:
获取待同步数据位于源节点的旧拷贝和新拷贝;
利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图;以及
将所生成的区块图发送至目标节点,以将所述目标节点的待同步数据的旧拷贝同步为所述新拷贝,
其中所述区块图包括未改变区块的位置信息以及改变区块的位置信息和内容,并且
其中利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图包括:
将所述区块图初始化为与所述新拷贝具有相同长度的未知区间;
从所述新拷贝中对应于所述未知区间的部分选取预定义长度的搜索块;
利用字符串匹配,判断所述旧拷贝中是否具有对应于所述搜索块的区块;以及
根据所述判断结果,更新所述区块图。
2.如权利要求1所述的方法,其中根据所述判断结果,更新所述区块图包括:
响应于判断结果为否,将所述区块图中的相应位置标记为改变区块。
3.如权利要求1或2所述的方法,其中根据所述判断结果,更新所述区块图包括:
响应于判断结果为是,将所述搜索块在新拷贝和旧拷贝中向左右扩展进行逐字节比较,以确定未改变块区块的左右边界;以及
在所述区块图中标记所确定的具有左右边界的未改变区块。
4.如权利要求1所述的方法,其中利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图进一步包括:
判断所述区块图中的未知区间是否小于预定义长度的最小未知区间;
响应于判断结果为是,直接将所述区块图中的未知区间标记为改变区块。
5.如权利要求1所述的方法,所述区块图中的区块是变长的。
6.一种用于数据同步的系统,包括:
获取装置,被配置为获取待同步数据位于源节点的旧拷贝和新拷贝;
区块图生成装置,被配置为利用字符串匹配,确定所述旧拷贝和新拷贝间的差异以生成区块图;以及
发送装置,被配置为将所生成的区块图发送至目标节点,以将所述目标节点的待同步数据的旧拷贝同步为所述新拷贝,
所述区块图包括未改变区块的位置信息以及改变区块的位置信息和内容,
其中区块图生成装置被配置为:
将所述区块图初始化为与所述新拷贝具有相同长度的未知区间;
从所述新拷贝中对应于所述未知区间的部分选取预定义长度的搜索块;
利用字符串匹配,判断所述旧拷贝中是否具有对应于所述搜索块的区块;以及
根据所述判断结果,更新所述区块图。
7.如权利要求6所述的系统,其中区块图生成装置被进一步配置为:
响应于判断结果为否,将所述区块图中的相应位置标记为改变区块。
8.如权利要求6或7所述的系统,其中区块图生成装置被进一步配置为:
响应于判断结果为是,将所述搜索块在新拷贝和旧拷贝中向左右扩展进行逐字节比较,以确定未改变块区块的左右边界;以及
在所述区块图中标记所确定的具有左右边界的未改变区块。
9.如权利要求6所述的系统,其中区块图生成装置被进一步配置为:
判断所述区块图中的未知区间是否小于预定义长度的最小未知区间;
响应于判断结果为是,直接将所述区块图中的未知区间标记为改变区块。
10.如权利要求6所述的系统,所述区块图中的区块是变长的。
CN201110252194.0A 2011-08-30 2011-08-30 利用串匹配进行数据同步的方法和系统 Expired - Fee Related CN102955816B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110252194.0A CN102955816B (zh) 2011-08-30 2011-08-30 利用串匹配进行数据同步的方法和系统
US13/471,296 US9043275B2 (en) 2011-08-30 2012-05-14 Data synchronization using string matching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110252194.0A CN102955816B (zh) 2011-08-30 2011-08-30 利用串匹配进行数据同步的方法和系统

Publications (2)

Publication Number Publication Date
CN102955816A CN102955816A (zh) 2013-03-06
CN102955816B true CN102955816B (zh) 2016-04-20

Family

ID=47745089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110252194.0A Expired - Fee Related CN102955816B (zh) 2011-08-30 2011-08-30 利用串匹配进行数据同步的方法和系统

Country Status (2)

Country Link
US (1) US9043275B2 (zh)
CN (1) CN102955816B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252469B (zh) 2013-06-27 2017-10-20 国际商业机器公司 用于模式匹配的方法、设备和电路
CN103561102B (zh) * 2013-11-08 2017-03-22 北京奇虎科技有限公司 数据实时同步方法及系统
CN103646101B (zh) * 2013-12-20 2017-06-27 北京奇虎科技有限公司 查找内容项中是否存在标志的方法及装置
US9990352B2 (en) * 2014-08-06 2018-06-05 Quest Software Inc. Chunk compression in a deduplication aware client environment
US10303666B2 (en) * 2015-03-09 2019-05-28 International Business Machines Corporation File transfer system using file backup times
CN107515897B (zh) * 2017-07-19 2021-02-02 中国科学院信息工程研究所 一种串匹配场景下数据集生成方法、设备和可读存储介质
CN109362236A (zh) * 2018-08-31 2019-02-19 深圳大学 基于双云端的数据安全存储方法、装置、设备及存储介质
CN111988345B (zh) * 2019-05-21 2021-12-03 华为技术有限公司 一种信息同步的方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453396B1 (en) * 1999-07-14 2002-09-17 Compaq Computer Corporation System, method and computer program product for hardware assisted backup for a computer mass storage system
US6636872B1 (en) * 1999-03-02 2003-10-21 Managesoft Corporation Limited Data file synchronization
CN101387976A (zh) * 2008-11-07 2009-03-18 清华大学 一种基于数据差异的逻辑卷快速同步方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05314073A (ja) 1992-05-08 1993-11-26 Nec Corp プログラム仕様データの部分転送方式
US5832520A (en) 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US8156074B1 (en) * 2000-01-26 2012-04-10 Synchronoss Technologies, Inc. Data transfer and synchronization system
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7096311B2 (en) 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
JP2004152136A (ja) 2002-10-31 2004-05-27 Matsushita Electric Ind Co Ltd データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム
US7003534B2 (en) 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
WO2004114130A2 (en) 2003-06-23 2004-12-29 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
US7509635B2 (en) 2003-09-26 2009-03-24 Red Hat, Inc. Software and data file updating process
US7870226B2 (en) 2006-03-24 2011-01-11 International Business Machines Corporation Method and system for an update synchronization of a domain information file
WO2009132261A1 (en) 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
US8924354B2 (en) * 2011-02-01 2014-12-30 Ca, Inc. Block level data replication
JP5314073B2 (ja) 2011-04-08 2013-10-16 三菱電機株式会社 内燃機関用ノックセンサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636872B1 (en) * 1999-03-02 2003-10-21 Managesoft Corporation Limited Data file synchronization
US6453396B1 (en) * 1999-07-14 2002-09-17 Compaq Computer Corporation System, method and computer program product for hardware assisted backup for a computer mass storage system
CN101387976A (zh) * 2008-11-07 2009-03-18 清华大学 一种基于数据差异的逻辑卷快速同步方法

Also Published As

Publication number Publication date
CN102955816A (zh) 2013-03-06
US20130054522A1 (en) 2013-02-28
US9043275B2 (en) 2015-05-26

Similar Documents

Publication Publication Date Title
CN102955816B (zh) 利用串匹配进行数据同步的方法和系统
CN103853581B (zh) 软件版本管理系统和方法
US8290919B1 (en) System and method for distributing and accessing files in a distributed storage system
CN101911015B (zh) 通过处理器指令减少对计算机体系结构依赖性的方法及装置
TWI610184B (zh) 有效地執行散列運算的方法及設備
Chang et al. A de novo next generation genomic sequence assembler based on string graph and MapReduce cloud computing framework
US8392368B1 (en) System and method for distributing and accessing files in a distributed storage system
CN102884516A (zh) 文件系统迁移
BR102014028893A2 (pt) método para resolver entidades de uma pluralidade de documentos; e sistema de resolução de entidade para resolução de entidade de uma pluralidade de documentos
US20140347371A1 (en) Graphics processing using dynamic resources
US11573793B2 (en) Lazy push strategies for vectorized D-Heaps
US20210209057A1 (en) File system quota versioning
US11443090B2 (en) Optimization device and method of controlling optimization device
TW201729085A (zh) 用於使用硬體與軟體之壓縮的系統、方法及裝置
TW201741867A (zh) 記憶體複製指令、處理器、方法及系統
JP2019091257A (ja) 情報処理装置、情報処理方法及びプログラム
US10268617B2 (en) Frame format for a serial interface
US8146068B2 (en) Managing heuristic properties
CN108595917A (zh) 基于fpga的面向基因测序串匹配算法的加速平台及设计方法
US10601711B1 (en) Lens table
US12019606B1 (en) Hash operation manipulations
TW201025351A (en) Data processing and addressing methods for use in an electronic apparatus and electronic apparatus
TW201411389A (zh) 與其他步驟同時地執行以覆蓋區爲基礎之優化的方法或裝置
Bian et al. PAS: A new powerful and simple quantum computing simulator
US10511531B1 (en) Enhanced lens distribution

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160420

Termination date: 20200830

CF01 Termination of patent right due to non-payment of annual fee