CN102170455A - 用于在本地装置和远程装置间更新对象的方法和系统 - Google Patents
用于在本地装置和远程装置间更新对象的方法和系统 Download PDFInfo
- Publication number
- CN102170455A CN102170455A CN2011101507683A CN201110150768A CN102170455A CN 102170455 A CN102170455 A CN 102170455A CN 2011101507683 A CN2011101507683 A CN 2011101507683A CN 201110150768 A CN201110150768 A CN 201110150768A CN 102170455 A CN102170455 A CN 102170455A
- Authority
- CN
- China
- Prior art keywords
- value
- fingerprint
- place
- array
- index
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61M—DEVICES FOR INTRODUCING MEDIA INTO, OR ONTO, THE BODY; DEVICES FOR TRANSDUCING BODY MEDIA OR FOR TAKING MEDIA FROM THE BODY; DEVICES FOR PRODUCING OR ENDING SLEEP OR STUPOR
- A61M3/00—Medical syringes, e.g. enemata; Irrigators
- A61M3/02—Enemata; Irrigators
- A61M3/06—Enemata; Irrigators combined with bidets
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99955—Archiving or backup
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Hematology (AREA)
- Veterinary Medicine (AREA)
- Public Health (AREA)
- General Health & Medical Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Heart & Thoracic Surgery (AREA)
- Biomedical Technology (AREA)
- Anesthesiology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
用于在本地装置和远程装置间更新对象的方法和系统。本方法和系统涉及经有限带宽网络更新对象。使用远程差分压缩(RDC)技术在两个或多个计算装置间更新对象,使得所需要的数据传送最少。在一方面中,通过把RDC算法递归地应用到对象自己的元数据中可完成大对象的有效传送;在此情形中可使用单个或多个递归步骤以减少由RDC算法经网络发送的元数据量。通过把边界置于经动态确定的位置上,对象和/或签名以及信息块长度列表可得以拆分。一数学函数可估算相对于可能拆分边界的与水平窗口相关联的散列值。所述方法和系统在各种网络化应用中有用,诸如点对点重复符、电子邮件客户机和服务器、客户机侧高速缓存系统、通用复制实用程序、数据库重复符、入口、软件更新服务、文件/数据同步、以及其它。
Description
本申请是申请人于2005年3月15日提交的、申请号为“200510055107.7”的发明名称为“用于远程差分压缩的有效算法和协议”的发明专利申请的分案申请。
技术领域
本发明一般涉及用有限带宽经网络更新数据对象,尤其涉及使用远程差分压缩(RDC)方法来进行对象数据的差分传输的系统和方法。可使用RDC方法的递归应用来进一步地使大型对象传送所使用的带宽最小。
背景技术
诸如内联网、外联网以及互联网的网络盛行已导致共享跨越广泛网络的信息的用户数量有了很大的增长。基于与传输介质以及其它基础设施相关限制相关联的带宽,最大数据传输速率关联于每个物理网络。作为有限网络带宽的结果,用户在网络上取得和传送大量数据时会经历长时间的滞后。
数据压缩技术已经变成在具有有限带宽的网络上传送大量数据的普遍方法。通常数据压缩可为无损的或有损的。无损压缩涉及这样的数据集转换,即通过应用解压转换可取得该数据集的精确副本。当需要精确副本时,最常使用无损压缩来压缩数据。
在数据对象的接收者已经具有对象先前的或较旧的版本情形下,可使用一种称为远程差分压缩(RDC)的无损压缩方法来确定并仅传送该对象新旧版本间的差异。由于RDC传送仅涉及传送观察到的新旧版本之间的差异(比如,对于文件情形,文件更改或上次访问日期、文件属性、或对文件内容的较小改变),所传送的数据总量可大大减少。RDC可与另一无损压缩算法组合,以进一步减少网络通信量。当大对象需要在计算装置之间频繁地往返传送,并且难以或不能维持这些对象的旧副本从而不能使用本地差分算法时,RDC的优点最为显著。
发明内容
简言之,本发明涉及用于经有限带宽网络更新对象的方法和系统。使用远程差分压缩(RDC)技术在两个或多个计算装置间更新对象,使得所需要的数据传送最少。在一方面中,通过把RDC算法迭递归地应用到对象自己的元数据中可完成大对象的有效传送;在此情形中可使用单个或多个递归步骤以减少由RDC算法经网络发送的元数据量。通过把边界置于经动态确定的位置上,对象和/或签名以及信息块长度列表可得以拆分(chunk)。一数学函数可估算相对于可能的信息块边界的与水平窗口相关联的散列值。所述方法和系统在各种网络化应用中有用,诸如点对点重复符、电子邮件客户机和服务器、客户机侧高速缓存系统、通用复制实用程序、数据库重复符、入口、软件更新服务、文件/数据同步、以及其它。
可参照在下面简要归纳的附图、以下详述的本发明说明性实施例以及所附权利要求来获得本发明及其改进的更完整理解。
附图说明
本发明的非限制和非穷举实施例参照以下附图进行描述。
图1是示出操作环境的示图;
图2是示出示例计算装置的示图;
图3A和3B是示出示例RDC过程的示图;
图4A和4B是示出在示例RDC过程期间用于本地装置和远程装置之间交互的过程流的示图;
图5A和5B是示出在RDC过程期间用于示例交互中签名和信息块长度列表的递归远程差分压缩的过程流的示图;
图6是图形地示出示例RDC序列中递归压缩示例的示图;
图7是示出使用示例RDC过程进行客户机和服务器应用的交互的示图;
图8是示出用于示例拆分过程的过程流的示图;
图9是示出用于示例拆分过程的示例指令代码的示图;
图10和11是根据本发明的至少一方面安排的,示出用于另一示例拆分过程的另一示例指令代码的示图。
具体实施方式
本发明的各种实施例参照附图进行详细描述,其中相同标号在附图中代表相同的部件和装配件。对各种实施例的应用并不限制本发明的范围,它仅受所附权利要求范围限制。另外,在本说明书中陈述的任何示例并非旨在限制本发明,且仅陈述许多可能实施例中的若干实施例。
本发明在具有一个或多个存储在其上的共同相关联对象的本地和远程计算装置(或“装置”,为简化起见)的环境中进行描述。术语“本地”和“远程”指的是方法的一个情况。然而,同一装置在不同情况中可扮演“本地”和“远程”两种角色。可使用远程差分压缩(RDC)方法以经网络用有限带宽来有效更新共同相关联的对象。当具有对象新副本的装置需要更新具有该对象或相似对象旧副本的装置时,采用RDC方法来经网络仅仅传送对象之间的差异。描述RDC方法的示例使用(1)用来传送RDC元数据的递归方法,以减少为大对象传送的元数据量;以及(2)本地的基于最大值的拆分方法,以增加关联于对象差异的精度从而使带宽利用最少。获益于所述RDC方法的某些示例应用包括:点对点复制服务、诸如SMB的文件传输协议、传送大图像的虚拟服务器、电子邮件服务器、蜂窝电话及PDA同步、数据库服务器复制,仅在此列举若干。
操作环境
图1是示出本发明示例操作环境的示图。如图所示,安排装置经网络进行通信。这些装置可以是连接于网络的通用计算装置、专用计算装置、或任何其它适当的装置。网络102可对应于任何链接技术,包括,但不限于:直接接线链接(例如并行端口、串行端口、USB、IEEE 1394等等)、无线链接(例如IR端口、蓝牙端口等等)、有线网络、无线网络、局域网、广域网、超广域网、互联网、内联网以及外联网。
在装置A(100)和装置B(101)之间的示例交互中,对象的不同版本本地地存储在两个装置中:对象OA在100上,以及对象OB在101上。在某点,装置A(100)决定要用存储在装置B(101)上的副本(对象OB)来更新对象OA的副本,并向装置B(101)发送启用RDC方法的请求。在另一可选实施例中,RDC方法可由装置B(101)启用。
装置A(100)和装置B(101)都处理其本地存储对象,并将相关联数据以数据依赖方式拆分成可变数量块(例如块1-n、块1-k分别是对象OA、OB的)。诸如信息块强散列(SHA)的签名集由两个装置本地计算。两个装置都编译签名的单独列表。在RDC方法的下一步骤期间,装置B(101)经网络102向装置A(100)传送经计算的签名列表和信息块长度1-n。装置A(100)通过把每个收到的签名与其自己生成的签名列表1-k相比较,装置A(100)估算签名的这个列表。签名列表中的不匹配指示对象中需要修正的一个或多个差异。装置A(100)传送对装置B(101)发送已由签名列表中的不匹配所标识的信息块的请求。装置B(101)随后压缩并传送被请求的信息块,然后该信息块在接收和解压缩完成后由装置A(100)进行重组。装置A(100)把收到的信息块与其自己的匹配信息块进行重组,以获取对象OB的本地副本。
示例计算装置
图2是根据本发明安排的示例计算装置的框图。在基本配置中,计算装置200通常包括至少一个处理单元(202)和系统存储器(204)。取决于计算装置的准确配置和类型,系统存储器204可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等等)、或两者的某些组合。系统存储器204通常包括操作系统(205);一个或多个程序模块(206);也可包括程序数据(207)。基本配置由虚线208内那些组件如图2所示。
计算装置200还可具有附加特征或功能。例如,计算装置200还可包括附加数据存储装置(可移动的和/或不可移动的)诸如磁盘、光盘或磁带。这种附加存储由可移动存储209以及不可移动存储210如图2所示。计算机存储介质包括以用来存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性的和非易失性的、可移动的和不可移动的介质。系统存储器204、可移动存储器209和不可移动存储器210都是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字式多用盘(DVD)或其它光学存储器,磁盒、磁带、磁盘存储器或其它磁性存储装置,或任何可用于存储所需信息并可由计算装置200访问的其它介质。任何这种计算机存储介质可以是装置200的一部分。计算装置200也可具有诸如键盘、鼠标、笔、语音输入装置、触摸输入装置等等的输入装置212。还可包括诸如显示器、扬声器、打印机等等的输出装置214。这些装置都是本领域技术人员众所周知的,在此无需赘述。
计算装置200还可包含使装置能与其它计算装置218诸如经网络进行通信的通信连接216。通信连接216是通信介质的一个示例。通信介质通常体现为计算机可读指令、数据结构、程序模块、或其它诸如载波或其它传输机制的已调制数据信号中的数据,并包括任何信息传递介质。术语“已调数据信号”意指用将信息编码成信号的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、微波、卫星、红外和其它无线介质的无线介质。在此所用的术语计算机可读介质包括存储介质和通信介质。
各种过程和接口在驻留于系统存储器204中的一个或多个应用程序中实现。在一示例中,应用程序是在计算装置(例如客户机)和另一位于远程的计算装置(例如服务器)之间安排文件同步的远程差分压缩算法。在另一示例中,应用程序是在系统存储器204中提供的用来压缩和解压缩数据的压缩/解压缩过程。在又一示例中,应用程序是客户机装置的系统存储器204中提供的解密过程。
远程差分压缩(RDC)
图3A和3B是根据本发明的至少一方面示出示例RDC过程的示图。取决于实际对象OA和OB特定信息块的数量可根据每个实例变化。
参照图3A,基本RDC协议在两个计算装置之间(装置A和装置B)达成。RDC协议隐含地假设装置A和B具有相同对象或资源的两个不同实例(或版本),分别由对象实例(或版本)OA和OB标识。作为本图中示出的实例,装置A具有资源OA的旧版本,而装置B具有关联于该资源的在内容(或数据)上稍有(或增加)不同的版本OB。
用来从装置B把经更新对象OB传送到装置A的协议如下所述。可使用类似的协议把对象从装置A传送到装置B,且无需对以下所述的协议作重大更改就可在装置A或装置B的要求下开始该传送。
1.装置A使用RDC协议向装置B发送传送对象OB的请求。在一可选实施例中,装置B开始传送;在此情形中,协议跳过步骤1并从下面的步骤2开始。
2.装置A将对象OA拆分成信息块1-k,且对对象OA的每个信息块1……k分别计算签名SigAi和长度(或字节字节数的大小)LenAi。将在下面详细描述拆分成信息块。装置A存储签名和信息块长度的列表((SigA1,LenA1)……(SigAk,LenAk))。
3.装置B将对象OB拆分成信息块1-n,且对对象OB的每个信息块1……n分别计算签名SigBi和长度字节LenBi。在步骤3中使用的拆分算法必须匹配在以上步骤2中的算法。
4.装置B向装置A发送关联于对象OB的经计算的信息块签名和信息块长度列表((SigB1,LenB1)……(SigBn,LenBn))。随后可由装置A使用信息块长度信息以通过用其开始偏移及长度对它们的标识来请求信息块的特定组。由于列表的固有序列,通过合计列表中所有前面信息块的长度,在每个信息块的字节数Bi中计算起始偏移是可能的。
在另一实施例中,在发送给装置A之前,可使用无损压缩算法对信息块签名和信息块长度的列表进行紧密编码,并作进一步压缩。
5.收到该数据后,装置A根据在步骤2中为对象OA计算的关联于内容旧版本的签名SigA1……SigAk来比较收到的签名列表。
6.装置A向装置B发送对所有在步骤4接收的其签名与在步骤2由装置A计算的任何签名都不匹配的信息块的请求。对于每个被请求的信息块Bi,该请求包括在步骤4中由装置A计算的信息块起始偏移和信息块长度。
7.装置B向装置A发送关联于所有被请求信息块的内容。由装置B发送的内容在发送给装置A之前可使用无损压缩算法进行进一步的压缩。
8.通过使用在步骤7中从装置B接收的信息块,以及匹配步骤4中由装置B发送的签名的对象OA自己的信息块,装置A重建了对象OB的本地副本。在装置A上重新排列的本地和远程信息块的顺序由在步骤4中装置A接收的信息块签名列表来确定。
拆分步骤2和3以使用在相关联对象(分别为OA和OB)的每个字节位置上计算的指纹函数的数据依赖方式出现。对于一给定位置,使用包围对象中位置的小数据窗口来计算指纹函数;指纹函数的值取决于包括在该窗口的对象的所有字节数。指纹函数可以是任何适当函数,诸如散列函数或Rabin多项式。
在指纹函数算出满足选定条件的值的对象位置上确定信息块边界。可使用密码学安全散列函数(SHA)或诸如抗冲突(collision-resistant)散列函数的某些其它散列函数来计算信息块签名。
步骤4中发送的签名和信息块长度列表提供了使用原始信息块和经标识更新的或新的信息块来重建对象的基础。步骤6中请求的信息块由其偏移和长度标识。通过以相同顺序使用其签名匹配步骤4中由装置A所接收签名的本地和远程信息块,在装置A上重建对象。
当重建步骤由装置A完成后,可删除对象OA并以在装置A上重建的对象OB的副本替换之。在其它实施例中,装置A可保留对象OA用于未来RDC传送期间信息块可能的“重新使用”。
对于大对象,即使对象OA和对象OB非常接近或相同,图3A中示出的基本RDC协议实例在步骤4仍然导致了大量固定的额外开销(overhead)。给定一平均信息块尺寸C,步骤4中经网络传送的信息量与对象OB的尺寸成比例,尤其与对象OB的尺寸除以C,即对象B的信息块数量成比例,且因此与在步骤4中传送的(信息块签名,信息块长度)对成比例。
例如,参照图6,大图像(由诸如微软虚拟服务器的虚拟机器监视器使用的虚拟硬盘图像)可导致尺寸为9.1GB的对象(OB)。对于平均信息块尺寸C为3KB而言,9GB的对象可导致为对象OB产生的三百万个信息块,带有在步骤4需要经网络传送的42MB的相关联签名和信息块长度信息。由于即使当对象OA和OB的差异(且因此需要在步骤7传送的数据量)非常小时仍需经网络传送42MB的签名信息,协议的固定额外开销成本非常高。
通过使用RDC协议的递归应用而不是步骤4中的签名信息传送,可大大减少固定额外开销成本。参照图3B,替换基本RDC算法步骤4的附加步骤4.2-4.8描述如下。步骤4.2-4.8对应于如上所述的基本RDC协议的步骤2-8的递归应用。递归应用还可进一步地应用于以下的步骤4.4等等,直至任意所需递归深度。
4.2装置A执行其签名和信息块长度列表((SigA1,LenA1)……(SigAk,LenAk))的递归拆分,形成递归式签名信息块,从而获得递归式签名和递归式信息块长度的另一列表((RSigA1,RLenA1)……(RSigAs,RLenAs)),其中s<<k。
4.3装置B递归地把签名和信息块长度列表((SigB1,LenB1)……(SigBk,LenBk))拆分成块,从而产生递归式签名和递归式信息块长度的另一列表((RSigB1,RLenB1)……(RSigBr,RLenBr)),其中r<<n。
4.4装置B向装置A发送递归式签名和递归式信息块长度的按序列表((RSigB1,RLenB1)……(RSigBr,RLenBr))。在发送给装置A之前,可使用无损压缩算法对递归式信息块签名和递归式信息块长度的列表进行紧密编码,并作进一步压缩。
4.5装置A把在步骤4.2中计算的递归式签名的自己的列表与从装置B收到的递归式签名进行比较。
4.6装置A向装置B发送对在其集(RSigA1……RSigAs)中没有匹配的递归式签名的每个单个递归式签名信息块(带有递归式签名RsigBk)的请求。
4.7装置B向装置A发送被请求递归式签名信息块。在发送给装置A之前可使用无损压缩算法对该被请求递归式签名信息块进行进一步的压缩。
4.8通过使用局部匹配的递归式签名信息块,以及在步骤4.7中从装置B接收的递归式信息块,装置A重建了签名和信息块信息列表((SigB1,LenB1)……(SigBn,LenBn))。
当完成以上的步骤4.8后,执行在如上所述基本RDC协议的步骤5上继续,如图3A所示。
作为递归式拆分操作的结果,关联于对象的递归式签名的数量按等于平均信息块尺寸C的系数减少,产生极少的递归式签名量(分别是对于对象OA,r<<n;对于对象OB,s<<k)。在一实施例中,可使用与拆分原始对象OA和OB相同的拆分参数来拆分签名。在一可选实施例中,可将其它拆分参数用于递归步骤。
对于非常大的对象,可应用以上的递归步骤k次,其中k≥1。对于平均信息块尺寸C,递归式拆分可导致网络上的签名通信量的尺寸(步骤4.2到4.8)按约对应于Ck的系数减少。由于C相对较大,一般对于极大的对象才会需要大于1的递归深度。
在一实施例中,通过考虑包括一个或多个以下参数可动态地确定的递归步骤数:期望平均信息块尺寸、对象OA和/或OB的尺寸、对象OA和/或OB的数据格式、链接装置A和装置B的网络的等待时间和带宽特征。
在步骤2使用的指纹函数与步骤3中使用的指纹函数相匹配。类似地,在步骤4.2使用的指纹函数与步骤4.3中使用的指纹函数相匹配。步骤2-3的指纹函数与步骤4.2-4.3的指纹函数可有选择地匹配。
如前所述,每个指纹函数都使用包围对象中位置的小数据窗口;其中关联于指纹函数的值取决于包括在数据窗口内的对象的所有字节数。数据窗口的尺寸可基于一个或多个标准进行动态地调整。此外,拆分过程使用指纹函数的值以及一个或多个附加拆分参数,以确定以上步骤2-3和4.2-4.3中的信息块边界。
通过动态地改变窗口尺寸和拆分参数,信息块边界得以调整从而任何必须的数据传送都可使用最少的可用带宽来完成。
用于调整窗口尺寸和拆分参数的示例标准包括:关联于对象的数据类型、环境限制、使用模型、连接装置A和装置B的网络的等待时间和带宽特征、以及用来确定平均数据传送块尺寸的任何其它适当模型。示例数据类型包括字处理文件、数据库图像、电子制表软件表格、展示放映幻灯片以及图像。示例使用模型可在典型数据传送所需的平均字节数受到监测之处。
对应用程序中单个元素的改变可导致对相关联数据和/或文件的一些改变。因为大多数应用程序具有相关联文件类型,该文件类型是值得在调整窗口尺寸和拆分参数中考虑的一个可能标准。在一示例中,字处理文件中单个字符的更改导致了相关联文件中约100个字节的改变。在另一示例中,数据库应用程序中单个元素的更改导致了数据库索引文件中1000个字节的改变。对于每个示例,适当的窗口尺寸和拆分参数可能是不同的,从而使拆分过程具有适当的基于特定应用而最优化的粒度。
示例过程流
图4A和4B是示出根据本发明的至少一方面安排的用于在示例RDC过程期间本地装置(例如装置A)和远程装置(例如装置B)之间交互的过程流。图4A的左侧示出了在本地装置A上操作的步骤400-413,而图4A的右侧示出了在远程装置B上操作的步骤450-456。
如图4A所示,交互由装置A在步骤400请求对对象OB的RDC传送开始,而装置B在步骤450接收该请求。随后,本地装置A和远程装置B分别在步骤401和451独立地计算指纹、在步骤402和452将其各自的对象拆分成信息块、并在步骤403和453计算每个信息块的签名(例如SHA)。
在步骤454,装置B向装置A发送在步骤452和453中计算的签名和信息块长度列表,而装置A在步骤404接收该信息。
在步骤405,本地装置A把被请求信息块的列表初始化为空列表,并把远程信息块的跟踪偏移初始化为零。在步骤406,基于对步骤404中接收的列表的考虑,选择下一(签名,信息块长度)对(SigBi,LenBi)。在步骤407,装置A检查在步骤406中选定的签名SigBi是否匹配在步骤403期间计算的任一签名。如果匹配,执行在步骤409继续。如果不匹配,跟踪远程信息块偏移和字节长度LenBi在步骤408被添加到请求列表中。在步骤409,跟踪偏移增加一个当前信息块长度LenBi。
在步骤410,本地装置A测试是否已处理了在步骤404中接收的所有(签名,信息块长度)对。如果没有,执行在步骤406继续。否则,在步骤411对信息块请求列表以紧密方式进行适当地编码、压缩、并发送给远程装置B。
远程装置B在步骤455接收信息块的经压缩列表,并在步骤456对其解压缩,然后压缩并送回信息块数据。
本地装置在步骤412接收并解压缩被请求的信息块。使用对象OA的本地副本和收到的信息块数据,本地装置在步骤413重组OB的本地副本。
图4B示出图4A步骤413的具体示例。过程在步骤414继续,其中本地装置A把重建对象初始化为空。
在步骤415,基于对步骤404接收的列表考虑,选择下一(签名,信息块长度)对(SigBi,LenBi)。在步骤416,装置A检查在步骤417选择的签名SigBi是否匹配在步骤403期间计算的任一签名。
如果匹配,执行在步骤417继续,其中对应的本地信息块被附加到重建对象中。如果不匹配,则被接收及解压缩的远程信息块在步骤418附加于重建对象上。
在步骤419,本地装置A测试是否已处理了在步骤404接收的所有(签名,信息块长度)对。如果没有,执行在步骤415继续。否则,在步骤420使用重建对象来替代装置A上对象OA的旧副本。
示例递归式签名传送过程流
图5A和5B是示出根据本发明的至少一方面安排的用于在示例RDC过程中签名和信息块长度列表的递归传送的过程流的示图。可把以下所述的过程应用于尝试更新共同关联对象的本地和远程装置。
图5A的左侧示出了在本地装置A上操作的步骤501-513,而图5A的右侧示出了在远程装置B上操作的步骤551-556。步骤501-513替换图4A中的步骤404,而步骤551-556替换图4A中的步骤454。
在步骤501和551中,本地装置A和远程装置B分别独立地计算在步骤402/403和452/453已分别计算的其签名和信息块长度列表((SigA1,LenA1)……(SigAk,LenAk))和((SigB1,LenB1)……(SigBn,LenBn))的递归式指纹。在步骤502和552装置把其相应的签名和信息块长度列表拆分成递归式信息块,且在步骤503和553为每个递归式信息块分别计算递归式签名(例如SHA)。
在步骤554,装置B向装置A发送在步骤552和553中计算的递归式签名和信息块长度列表,而装置A在步骤504接收该信息。
在步骤505,本地装置A把被请求的递归式信息块的列表初始化为空列表,并把远程递归式信息块的跟踪远程递归式偏移初始化为零。在步骤506,基于对步骤504收到列表的考虑,选择下一(递归式签名,递归式信息块长度)对(RSigBi,RLenBi)。在步骤507,装置A检查在步骤506选定的递归式签名RSigBi是否与其在步骤503期间计算的任一递归式签名匹配。如果匹配,执行在步骤509继续。如果不匹配,追踪远程递归式信息块偏移,且字节长度RLenBi在步骤508添加到请求列表。在步骤509,追踪远程递归式偏移增加当前递归式信息块的长度RLenBi。
在步骤510,本地装置A测试是否已处理了在步骤504收到的所有(递归式签名,递归式信息块长度)对。如果没有,执行在步骤506继续。否则,递归式信息块请求列表在步骤511被紧密编码、压缩、并发送到远程装置B。
远程装置B在步骤555接收递归式信息块的经压缩列表、解压缩该列表,然后在步骤556压缩并送回递归式信息块数据。
本地装置在步骤512接收并解压缩被请求的递归式信息块数据。使用签名和信息块长度列表((SigA1,LenA1)……(SigAk,LenAk))的本地副本和收到的递归式信息块数据,本地装置在步骤513重组签名和信息块长度列表((SigB1,LenB1)……(SigBn,LenBn))的本地副本。然后执行在图4A中的步骤405上继续。
图5B示出了图5A步骤513的详细示例。过程在步骤514继续,其中本地装置A把远程签名和信息块长度列表SIGCL初始化为空列表。
在步骤515,基于对在步骤504收到列表的考虑选择下一(递归式签名,递归式信息块长度)对(RSigBi,RLenBi)。在步骤516,装置A检查在步骤515选定的递归式签名RSigBi是否与步骤503期间其计算的任一递归式签名匹配。
如果匹配,执行在步骤517继续,其中装置A将对应的本地递归式信息块附加到SIGCL。如果不匹配,在步骤518把远程接收的递归式信息块附加到SIGCL。
在步骤519,本地装置A测试是否已处理在步骤504收到的所有(递归式签名,递归式信息块长度)对。如果没有,执行在步骤515继续。否则,签名和信息块信号列表((SigB1,LenB1)……(SigBn,LenBn))的本地副本在步骤520被设定为SIGCL的值。然后执行回到图4A中的步骤405继续。
可任选地估算递归式签名和信息块长度列表以确定是否必需附加的递归式远程差分压缩以使带宽利用最少,如前所述。通过用RDC过程的另一实例替换步骤504和554来使用所述拆分过程等等,直到达到所需的压缩级别,递归式签名和信息块长度列表可递归地加以压缩。当递归式签名列表充分压缩之后,为了如前在所述远程和本地装置之间的传送返回递归式签名列表。
图6是图形地示出根据实例实施例安排的示例RDC序列中递归压缩示例的示图。如图6所示的示例,原始对象是9.1GB的数据。使用拆分过程编译签名和信息块长度列表,其中签名和信息块长度列表导致三百万个信息块(或42MB的尺寸)。在第一次递归步骤后,签名列表被拆分成三万三千个信息块,并减少为尺寸为33KB的递归式签名和递归式信息块长度列表。通过递归地压缩签名列表,可显著地减少用来传送签名列表的带宽利用,从42MB下降到约395KB。
示例对象更新
图7是示出根据本发明的至少一方面安排的使用示例RDC过程进行客户机和服务器应用的交互的示图。在服务器和客户机两者上的原始文件都包含有文本“Thequick fox jumped over the lazy brown dog.The dog was so lazy that he didn’t notice thefox jumping over him.”。
随后,服务器上的文件被更新为:“The quick foxjumped over the lazy brown dog.The brown dog was so lazy that he didn’t notice the fox jumping over him.”。
如前所述,客户机周期性地请求文件作更新。客户机和服务器都把对象(文本)拆分成如图所示的信息块。在客户机上,信息块为:“The quick foxjumped”、“over the lazy brown dog.”、“The dog was so lazy that he didn’t notice”、以及“the foxjumping over him.”;生成的客户机签名列表为:SHA11、SHA12、SHA13、以及SHA14。在服务器上,信息块为:“The quick fox jumped”、“over the lazy brown dog.”、“Thebrown dog was”、“so lazy that he didn’t notice”、以及“the foxjumping over him.”;生成的服务器签名列表为:SHA21、SHA22、SHA23、SHA24、以及SHA25。
服务器使用如前所述的递归式压缩技术传送签名列表(SHA21-SHA25)。客户机确认本地存储的签名列表(SHA11-SHA14)与收到的签名列表(SHA21-SHA25)不匹配,并向服务器请求遗漏的信息块3和4。服务器压缩并传送信息块3和4(“The brown dog was”、和“so lazy that he didn’t notice”)。客户机接收经压缩信息块、解压缩它们、并更新文件,如图7所示。
拆分信息块分析
通过优化用于拆分对象数据和/或拆分签名和信息块长度列表的拆分信息块过程,可提高以上所述的基本RDC过程的效率。
基本RDC过程具有由以下诸项之和标识的网络通信额外开销成本:
(S1)|来自B的签名和信息块长度|=|OB|*|SigLen|/C,其中|OB|是对象OB的字节长度,SigLen是(签名,信息块长度)对的字节长度、以及C是期望平均信息块的字节长度;以及
因此通信成本获益于平均的大信息块尺寸、以及远程和本地信息块之间的大交集。选择如何把对象拆分成信息块确定了协议的质量。本地和远程装置必需无预先通信地同意在何处拆分对象。以下描述并分析用来找出拆分点的各种方法。
假设拆分算法已知以下特征:
1.松弛字节(slack):用于调和文件差异所需要的信息块字节数。假设有序列s1、s2和s3,并通过连接形成两个序列s1s3、s2s3。这两个序列生成信息块Chunks1和Chunks2。如果Chunks1’和Chunks2’分别是从Chunks1和Chunks2直到抵达第一个共同后缀的信息块长度的和,松弛字节由以下公式给出:
slack=Chunks1’-|s1|=Chunks2’-|s2|
2.平均信息块尺寸C:
当对象OA和OB有S段都共同具有平均尺寸K,可在客户机上本地获得的信息块数量由以下给出:
且以上的(S2)改写为:
因而,使松弛字节最少的拆分信息块算法将使经网络传送的字节数最少。因此使用使预计的松弛字节最少的拆分信息块算法是有利的。
指纹函数
所有的拆分信息块算法都使用取决于小窗口(即有限字节序列)的指纹函数或散列(hash)。当那些算法适合有限差分(强度缩减)优化时,用于拆分信息块的散列算法的执行时间不依赖散列窗口尺寸。因而,对于尺寸为k的散列窗口,仅使用b0、bk、以及#[b0,b1,...,bk-1]来计算散列#[b1,...,bk-1,bk]应当是容易的(仅需一定数量的步骤)。可采用各种散列函数,诸如使用Rabin多项式的散列函数、以及基于预先计算的随机数表格(table)显得计算更为有效的其它散列函数。
在一示例中,可使用基于滚动求校验和的32位Adler散列作为指纹的散列函数。该过程通过使用带有256个条目的固定表格提供相当好的随机散列函数,其中表格的每个条目是预先计算的16位随机数。使用该表格把指纹字节转换成16位随机数。32位散列被拆分成两个16位数sum1和sum2,它们由以下过程更新:
sum1+=table[bk]-table[b0]
sum2+=sum1-k*table[b0]
在另一示例中,可使用具有循环位移的64位随机散列作为指纹的散列函数。循环位移的周期由散列值的尺寸进行限制。因而,使用64位散列值来设定散列周期为64。更新散列的过程如下给出:
hash=hash^((table[b0]<<1)|(table[b0]>>u))^table[bk];
hash=(hash<<1)|(hash>>63);
where1=k%64并且u=64-1
在又一示例中,可采用其它位移方法来提供指纹。直接循环位移产生有限长度的周期,并受散列值尺寸的限制。其它置换有更长的周期。例如,由循环(1230)(5 6 7 8 9 10 11 12 13 14 4)(16 17 18 19 20 21 15)(23 24 25 26 22)(28 29 27)(31 30)给出的置换具有长度为4*3*5*7*11=4620的周期。使用右位移以及随后的修补每个间隔开始位置的操作,可计算该示例置换的单个应用。
分析用于以预定模式拆分信息块的现有技术
通过用预定窗口尺寸k(=48)计算指纹散列,并基于散列字节的子集是否匹配预定模式来标识拆分点,可确定初步的拆分信息块方法。有了随机散列值,该模式也可以为0,且相关子集也可以是散列的前缀。在基本指令中,这翻译成以下形式的谓词:
CutPoint(hash)≡0==(hash&((1<<c)-1))
其中c是要相匹配的字节数。
由于给定随机散列函数匹配的概率为2-c,导致平均信息块尺寸C=2c。然而,最小和最大的信息块尺寸都不由该过程确定。如果给予的最小信息块长度为m,则平均信息块尺寸为:
C=m+2c
期望松弛字节的粗略估算通过考虑流s1s3和s2s3获取。s1和s2中的拆分点可出现在任意位置。由于平均信息块长度是C=m+2c,s1和s2中最后拆分点的约(2c/C)2部分将在距离m之外。它们将作为在约为2c的松弛。剩下的1-(2c/C)2作为长度约为C的松弛。期望松弛将约为(2c/C)3+(1-(2c/C)2)*(C/C)=(2c/C)3+1-(2c/C)2,它具有对于m=2c-1的总体最小值,其值约为23/27=0.85。更精确的分析将对剩下的1-(2c/C)2部分给出较低的估算,但仍需要对s3中距离m内的拆分点作补偿,这些出发点用于更高的估算。
因而,现有技术的期望松弛约为0.85*C。
过滤器上拆分信息块(新技术)
过滤器上拆分信息块基于固定一过滤器(长度为m的模式序列),并根据该过滤器匹配指纹散列序列。当过滤器不允许散列序列匹配过滤器的前缀和后缀时,可推断任何两个匹配之间的最小距离必须至少为m。可从现有技术中使用的CutPoint(拆分点)谓词中获取示例过滤器,通过把第一个m-1模式设定为
0!=(hash&((1<<c)-1))
并将最后的模式设定为
0==(hash&((1<<c)-1))
匹配该过滤器的概率由(1-p)m-1p给出,其中p为2-c。可计算期望信息块长度由匹配过滤器概率的倒数给出(要求过滤器不允许序列匹配前缀和后缀两者),因而示例过滤器的期望长度为(1-p)-m+1p-1。当设定p:=1/m时该长度最小化,且它变为约(e*m)。如本领域技术人员可查证的,平均松弛在0.8左右徘徊。该方法的可选实施例使用直接用原始输入工作的模式,而不使用滚动散列。
本地最大极限上的信息块拆分(新技术)
本地最大极限上的信息块拆分基于选择限制界限(horizon)内最大的拆分点位置。以后,我们将使用h作为界限的值。如果在偏移offset-h,...,offset-1,以及offset+1,...,offset+h的散列值比offset上的散列值都小,我们说在位置offset上的散列是h-本地最大极限。换言之,从h向左和向右的所有位置都具有较小的散列值。本领域技术人员将理解本地最大极限可由本地最小极限或任何其它基于米制的比照进行替换(诸如“与散列中值最接近”)。
对于尺寸为n的对象的本地最大极限集可在由2·n次操作限制的时间内进行计算,从而计算本地最大极限集的成本接近于基于独立拆分信息块计算拆分点的成本,或者与其相同。使用本地最大极限生成的信息块总是具有对应于h的最小尺寸,其平均尺寸约为2h+1。CutPoint(拆分点)过程如图8和9所示,并如下所述:
1.分配长度为h的阵列M,其中阵列的条目用记录{isMax=false,hash=0,offset=0}({isMax=假,散列=0,偏移=0})进行初始化。每个域的第一条目(isMax)指示候选对象是否是本地最大极限。第二个域条目(hash)指示关联于该条目的散列值,并初始化为零(或可选地,初始化为最大的可能散列值)。条目中最后的域(offset)字节中指示向候选对象的绝对偏移进入指纹对象。
2.把阵列M的最小和最大偏移初始化为零。这些变量指向当前正在使用的阵列的第一个和最后的元素。
3.Cutpoint(hash,offset)在图8中的步骤800上开始,并在对象的每次偏移中调用以更新M并返回指示特定偏移是否是拆分点的结果。
过程通过在步骤801设定结果=假开始。
在步骤803,过程检查是否M[max].offset+h+1=offset。如果该条件为真,执行在步骤804继续,其中执行以下分配:结果设定为M[max].isMax,,且max设定为(max-1)%h。然后执行在步骤805继续。如果步骤803上的条件为假,执行在步骤805继续。在步骤805,过程检查是否M[min].hash>hash。如果该条件为真,执行在步骤806上继续,其中min设定为min-1%h。执行继续到步骤807,其中M[min]设定为{isMax=false,hash=hash,offset=offset}({isMax=假,散列=散列,偏移=偏移}),且到步骤811,返回经计算结果。
如果步骤805上的条件为假,执行在步骤808上继续,其中过程检查是否M[min].hash=hash。如果该条件为真,执行在步骤807继续。
如果步骤808上的条件为假,执行在步骤809上继续,其中过程检查是否min=max。如果该条件为真,执行在步骤810继续,其中M[min]设定为{isMax=true,hash=hash,offset=offset}({isMax=真,散列=散列,偏移=偏移})。然后执行在步骤811上继续,返回经计算结果。
如果步骤809上的条件为假,执行在步骤811上继续,其中min设定为(min+1)%h。然后执行回到步骤805上继续。
4.当CutPoint(散列,偏移)返回为真时,情形将为在位置offset-h-1上的偏移是新的拆分点。
本地最大极限过程的分析
带有n个字节的对象通过调用CutPoint n次进行处理,从而最多有n个条目插入给定对象中。每重复一次在步骤805开始的循环去除一个条目,从而不会有超过n个条目删除。因而,对于每个条目可进入处理循环一次,且重复的组合次数最多可为n次。这隐含了对CutPoint的每次调用循环中的平均步骤数比2略小,且计算拆分点的步骤数不依赖h。
由于来自元素的散列值形成min和max之间的递减链,我们将看到min和max之间的平均距离(|min-max|%h)由h的自然对数给出。未包括在M中两个相邻条目之间的偏移具有小于等于两个条目的散列值。这种链的平均长度由递归等式f(n)=1+1/n*∑k<nf(k)给出。长度n间隔上的最长递减链的平均长度比从最大元素位置开始的最长递减链的平均长度大1,其中最大元素可以1/n的概率在任意位置找到。递归关系具有对应于调和数Hn=1+1/2+1/3+1/4+....+1/n的解答,这可通过把Hn代入等式并执行n的归纳来验证。Hn与n的自然对数成比例。因而,尽管阵列M被分配以尺寸h,在任一次中只会使用尺寸的一小部分ln(h)。
只要数间的距离保持在h之内,用模数h计算min和max允许M的使用间距的任意增长。
M初始值额的选择隐含了拆分点可在前h个偏移中产生。可改写算法以避免这些前h个偏移上的拆分点。
由该过程生成的信息块的期望尺寸约为2h+1。我们从给定位置是拆分点的概率获取该数字。假设散列具有m个不同的可能值。然后概率可由以下公式确定:
∑0≤k<m 1/m(k/m)2h
近似地使用积分∫0≤x<m 1/m(x/m)2hdx=1/(2h+1)指示当m足够大时的概率。
概率可进行更精确地计算,首先把和简化为:
(1/m)2h+1∑0≤k<mk2h
它使用Bernoulli数Bk扩展为:
(1/m)2h+1 1/(2h+1)∑0≤k<2h (2h+1)!/k!(2h+1-k)!Bk m2h+1-k
非零的仅有的Bernoulli奇数是B1,具有-1/2的对应值。Bernoulli偶数满足等式:
H∞ (2n)=(-1)n-122n-1π2nB2n/(2n)!
等式左边代表无限和1+(1/2)2n+(1/3)2n+...,对n的偶数中值它非常接近于1。
当m比h大得多时可忽略除第一项的所有项,如通过积分可见。它们可由0与1之间的常数乘以与hk-1/mk成比例的项给出。第一项(其中B0=1)简化为1/(2h+1)。(第二项为-1/(2m,第三项为h/(6m2))。)
对于期望松弛的粗略估算考虑流s1s3和s2s3。s1和s2中的最后拆分点可出现在任意位置。由于平均信息块长度约为2h+1,最后拆分点的约1/4在s1和s2中都将在距离h之内。它们将作为约7/8h上的拆分点。在另一1/2的情形中,一个拆分点将在距离h之内,而另一个则落于距离h之外。这些作为约3/4h上的拆分点。s1和s2中的最后拆分点剩下的1/4部分将在大于h的距离上。因此期望松弛约为1/4*7/8+1/2*3/4+1/4*1/4=0.66。
因此,我们独立拆分信息块方法的期望松弛是0.66*C,它是对现有技术的(0.85*C)的改进。
有标识拆分点的可选方法,该方法需要执行平均较少的指令,而使用最多与h成比例的、或平均为ln h的空间。以上过程在长度为n的流中的每个位置0..n-1插入条目。可选过程中的基本思路是仅当在长度为h的间隔中遭遇递增链元素时进行更新。我们观察到每个间隔上平均仅有ln h个这种更新。此外,通过比较两个长度为h的连续间隔中的本地最大极限,可确定两个本地最大极限中的每一个是否也是h本地最大极限。在可选过程中有一特征;它需要通过以尺寸为h的块来遍历该流来计算递增链,其中每个块沿反方向遍历。
在该可选过程中(见图10、11),为了简便我们假设散列流作为序列给出。子例程CutPoint在长度为h(在图中扩展为“horizon”)的每个子序列中得到调用。它返回零个或被确定为拆分点的一个偏移。仅有对插入的调用的ln(h)将通过第一次测试。
通过根据A中最大条目来测试偏移上的散列值,可完成对A的插入。
可最优化更新A[k]和B[k].isMax两者的循环,使得在循环体中仅执行一次测试。B[1].hash<=A[k].hash和B[1].isMax的情形在两个循环中处理,第一个循环根据B[1].hash检查散列值直到它不小于,第二个循环更新A[k]。其它情形可使用仅更新A[k]随后更新B[1].isMax的循环来处理。
每次对CutPoint的调用需要对A的平均ln h次存储器写入,以及关于找出最大极限的循环提升h+ln h比较。通过平均最多有ln h个步骤的二进制检索或从索引0开始对B的遍历,可执行对A[k].isMax的最后更新。每次对CutPoint的调用还需要在更新窗口中的last(最后)位置上重新计算滚动散列。这需要像滚动散列窗口的尺寸一样多的步骤。
经改进拆分信息块算法的观察优点
最小的信息块尺寸在如上所述的本地最大极限和过滤器方法中建立。常规实现需要最小信息块尺寸单独用额外参数提供。
基于本地最大值(或数学)方法产生可测量的更佳松弛估算,其翻译成经网络的进一步压缩。过滤器方法还产生比常规方法更佳的松弛性能。
两种新方法都有拆分点的位置属性。在s3中界限之外的所有拆分点将是流s1s3和s2s3的拆分点。(换言之,考虑流s1s3,如果p是≥|s1|+界限的位置且p是s1s3中的拆分点,则它也是s2s3的拆分点。相同的属性反向保持(对称),如果p是s2s3中的拆分点,则它也是s1s3的拆分点。)对于常规方法情形则不同,其中拆分点在某些最小信息块尺寸之外的要求会有不利的干扰。
可选数学函数
尽管上述的拆分信息块过程描述了使用本地最大极限计算定位拆分点的装置,本发明不受限制。可安排任何数学函数来检查可能的拆分点。通过估算位于界限窗口内假想拆分点附近的散列值,可估算每个可能的拆分点。散列值的估算由数学函数完成,该数学函数可包括定位界限内最大值、定位界限内最小值、估算散列值之间的差值、估算散列值的差值、以及根据随机常数比较结果的至少之一,以及某些其它数学或统计函数。
如前所述的用于本地最大极限的特定数学函数是二进制谓词“_>_”。当p是对象中的偏移时,如果对于所有的k,hashp>hashk,,其中p-horizon≤k<p,或者p<k≤p+horizon,p被选为拆分点。然而,二进制谓词>可用任何数学函数替换,不背离本发明精神。
以上说明书、示例和数据提供了对本发明组成的制造和使用的完整描述。由于可作成本发明的许多实施例而不背离本发明的精神和范围,本发明驻留于所附权利要求书。
Claims (48)
1.一种用于将对象拆分成信息块的方法,包括:
计算在所述对象中的每个位置处的指纹值;
估算与每个可能的拆分点位置相关联的偏移;
估算位于所述对象的每个位置周围的界限内的指纹值;
响应于所估算的指纹值来标识拆分点位置;以及
基于所标识的拆分点位置将对象拆分成信息块。
2.如权利要求1所述的方法,其特征在于,计算在所述对象中的每个位置处的指纹值还包括:将指纹函数应用于包含在每个位置周围的小窗口中的对象数据。
3.如权利要求2所述的方法,其特征在于,应用所述指纹函数还包括:使用下述项中的至少一项:Rabin多项式、Adler散列以及具有循环位移的随机散列。
4.如权利要求1所述的方法,其特征在于,进一步包括:基于下述项中的至少一项来调整界限的尺寸:与所述对象相关联的数据类型、所述对象的大小、环境约束以及与所述对象相关联的使用模型。
5.如权利要求2所述的方法,其特征在于,进一步包括:基于下述项中的至少一项来调整小窗口的尺寸:与所述对象相关联的数据类型、所述对象的大小、环境约束以及与所述对象相关联的使用模型。
6.如权利要求1所述的方法,其特征在于,估计位于界限内的指纹值还包括:将数学函数应用于所述指纹值,并且当满足所述数学函数时标识拆分点位置。
7.如权利要求6所述的方法,其特征在于,应用数学函数还包括:使用谓词将指纹值映射到布尔值,把指纹值分成小范围,确定界限的最大值,确定界限的最小值,估算界限内的指纹值之间的差值,以及对界限内的指纹值求和。
8.如权利要求2所述的方法,其特征在于,估算位于界限内的指纹值还包括:在指纹值上应用数学函数,以及当数学函数在给定偏移达到预定值,并且在预定数目的先前偏移达到其他预定值时,在给定偏移处标识拆分点位置。
9.如权利要求8所述的方法,其特征在于,所述数学函数包括下述项中的至少一项:谓词以及将指纹值分成适当小范围的函数。
10.如权利要求2所述的方法,其特征在于,应用所述数学函数还包括:确定界限中的本地最大的指纹值。
11.如权利要求10所述的方法,其特征在于,进一步包括:分配长度等于界限的第一标志阵列和第二标志阵列,并且初始化标志阵列为布尔假;分配长度等于界限的第一指纹阵列和第二指纹阵列,并且初始化指纹阵列为零;分配长度等于界限的第一偏移阵列和第二偏移阵列,并且初始化偏移阵列为零;初始化索引1为零,初始化索引k为零,并初始化到对象中的当前偏移为零。
12.如权利要求11所述的方法,其特征在于,进一步包括:以尺寸为h的间隔组遍历对象,在每个间隔中:设置到第一标志阵列的第一索引的值为真,设置到第一偏移阵列的第一索引的值为当前间隔组的最后的偏移,设置到指纹阵列的第一索引的值为当前间隔的最后的偏移处的指纹,并确定所述偏移为当前间隔的最后的位置。
13.如权利要求12所述的方法,其特征在于,进一步包括:只要当前间隔的最后的偏移的当前值大于在索引1处的第二偏移阵列的值加上h的值,则将位置k处的第一标志阵列的值更新为假,在最后的偏移的当前值处提供的指纹值等于位置k处的第一指纹阵列的值,如果最后的偏移的当前值处的指纹值大于位置k处的第一指纹阵列的值,那么,递增k并将索引k处的第一偏移阵列的值设置为当前的最后的偏移的值,将索引k处的第一标志阵列的值设置为真,并将索引k处的第一散列阵列的值设置为最后的偏移的当前值,并确定所述偏移为当前间隔的最后位置。
14.如权利要求12所述的方法,其特征在于,进一步包括:只要偏移的当前值不小于到当前间隔的开始处的偏移,则将位置k处的第一标志阵列的值更新为假,在最后的偏移的当前值处提供的指纹值等于位置k处的第一指纹阵列的值,如果最后的偏移的当前值处的指纹值大于位置k处的第一指纹阵列的值,那么,递增k并将索引k处的第一偏移阵列的值设置为当前的最后的偏移的值,将索引k处的第一标志阵列的值设置为真,并将索引k处的第一散列阵列的值设置为最后的偏移的当前值,如果索引1处的第二指纹阵列的值不大于最后的偏移的当前值处的指纹值,则将索引1处的第二标志阵列的值设置为假,并递减到当前间隔的最后位置的偏移。
15.如权利要求14所述的方法,其特征在于,进一步包括:如果索引k处的第一标志阵列的值已经为假或当存在0到1之间的索引j时,包括索引j处的第二偏移阵列的值加上值h至少与索引k处的第一偏移阵列的值一样大并且索引j处的第二指纹阵列的值至少为索引k处的第一指纹阵列的值,则将索引k处的第一标志阵列的值设置为假。
16.如权利要求15所述的方法,其特征在于,进一步包括:如果在位置1处的第二标志阵列的值为真,则将索引1处的第二偏移阵列的值设置为拆分点。
17.如权利要求16所述的方法,其特征在于,进一步包括:在进行下一个间隔之前,交换到第一和第二偏移、指纹阵列和标志阵列的引用。
18.如权利要求10所述的方法,其特征在于,进一步包括:分配长度等于界限的标志阵列并将标志阵列初始化为布尔假,分配长度等于界限的指纹阵列并将指纹阵列初始化为零,分配长度等于界限的偏移阵列并将偏移阵列初始化为零,初始化最小索引为零,初始化最大索引为零,并将到对象内的当前偏移初始化为零。
19.如权利要求18所述的方法,其特征在于,进一步包括:当当前偏移值被标识为等于在最大索引处的偏移阵列条目的值加上界限加上1时:如果在最大索引处的标志阵列条目的值是布尔真,查找在最大索引处的偏移阵列的值所给定的偏移处的本地最大值;并且将最大索引设置为递减1的最大值模界限确定的值。
20.如权利要求19所述的方法,其特征在于,进一步包括:当与当前偏移相关联的指纹值小于在最小索引处的指纹阵列条目的值时:递减最小索引模界限,设置最小索引处的标志阵列的值为布尔假,设置最小索引处的指纹阵列条目的值为与当前偏移相关联的指纹值,并将最小索引处的偏移阵列条目的值设置为当前偏移。
21.如权利要求20所述的方法,其特征在于,进一步包括当与当前偏移相关联的指纹值等于在最小索引处的指纹阵列条目的值时:将最小索引处的标志阵列条目的值设置为布尔假,将最小索引处的指纹阵列条目的值设置为与当前偏移相关联的指纹值,并将最小索引处的偏移阵列条目的值设置为当前偏移。
22.如权利要求21所述的方法,其特征在于,进一步包括:当与当前偏移相关联的指纹值等于在最小索引处的指纹阵列条目的值,并且当所述最小索引不同于所述最大索引时:递增最小索引加1模界限。
23.如权利要求22所述的方法,其特征在于,进一步包括:当与当前偏移相关联的指纹值大于在最小索引处的指纹阵列条目的值,并且当所述最小索引等于所述最大索引时:将最小索引处的标志阵列条目设置为布尔真,将最小索引处的指纹阵列条目设置为与当前偏移相关联的指纹值,并且将最小索引处的偏移阵列条目设置为当前偏移。
24.如权利要求23所述的方法,其特征在于,进一步包括:当完成先前的确定时,递增当前偏移。
25.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于将对象拆分成信息块,包括:
计算在所述对象中的每个位置处的指纹值;
估算与每个可能的拆分点位置相关联的偏移;
估算位于所述对象的每个位置周围的界限内的指纹值;
响应于所估算的指纹值来标识拆分点位置;以及
基于所标识的拆分点位置将对象拆分成信息块。
26.如权利要求25所述的计算机可读介质,其特征在于,计算在所述对象中的每个位置处的指纹值还包括:将指纹函数应用于包含在每个位置周围的小窗口中的对象数据。
27.如权利要求26所述的计算机可读介质,其特征在于,应用所述指纹函数还包括:使用下述项中的至少一项:Rabin多项式、Adler散列以及具有循环位移的随机散列。
28.如权利要求25所述的计算机可读介质,其特征在于,进一步包括:基于下述项中的至少一项来调整界限的尺寸:与所述对象相关联的数据类型、所述对象的大小、环境约束以及与所述对象相关联的使用模型。
29.如权利要求26所述的计算机可读介质,其特征在于,进一步包括:基于下述项中的至少一项来调整小窗口的尺寸:与所述对象相关联的数据类型、所述对象的大小、环境约束以及与所述对象相关联的使用模型。
30.如权利要求25所述的计算机可读介质,其特征在于,估计位于界限内的指纹值还包括:将数学函数应用于所述指纹值,并且当满足所述数学函数时标识拆分点位置。
31.如权利要求30所述的计算机可读介质,其特征在于,应用数学函数还包括:使用谓词将指纹值映射到布尔值,把指纹值分成小范围,确定界限的最大值,确定界限的最小值,估算界限内的指纹值之间的差值,以及对界限内的指纹值求和。
32.如权利要求26所述的计算机可读介质,其特征在于,估算位于界限内的指纹值还包括:在指纹值上应用数学函数,以及当数学函数在给定偏移达到预定值,并且在预定数目的先前偏移达到其他预定值时,在给定偏移处标识拆分点位置。
33.如权利要求32所述的计算机可读介质,其特征在于,所述数学函数包括下述项中的至少一项:谓词以及将指纹值分成适当小范围的函数。
34.如权利要求26所述的计算机可读介质,其特征在于,应用所述数学函数还包括:确定界限中的本地最大的指纹值。
35.如权利要求34所述的计算机可读介质,其特征在于,进一步包括:分配长度等于界限的第一标志阵列和第二标志阵列,并且初始化标志阵列为布尔假;分配长度等于界限的第一指纹阵列和第二指纹阵列,并且初始化指纹阵列为零;分配长度等于界限的第一偏移阵列和第二偏移阵列,并且初始化偏移阵列为零;初始化索引1为零,初始化索引k为零,并初始化到对象中的当前偏移为零。
36.如权利要求35所述的计算机可读介质,其特征在于,进一步包括:以尺寸为h的间隔组遍历对象,在每个间隔中:设置到第一标志阵列的第一索引的值为真,设置到第一偏移阵列的第一索引的值为当前间隔组的最后的偏移,设置到指纹阵列的第一索引的值为当前间隔的最后的偏移处的指纹,并确定所述偏移为当前间隔的最后的位置。
37.如权利要求36所述的计算机可读介质,其特征在于,进一步包括:只要当前间隔的最后的偏移的当前值大于在索引1处的第二偏移阵列的值加上h的值,则将位置k处的第一标志阵列的值更新为假,在最后的偏移的当前值处提供的指纹值等于位置k处的第一指纹阵列的值,如果最后的偏移的当前值处的指纹值大于位置k处的第一指纹阵列的值,那么,递增k并将索引k处的第一偏移阵列的值设置为当前的最后的偏移的值,将索引k处的第一标志阵列的值设置为真,并将索引k处的第一散列阵列的值设置为最后的偏移的当前值,并确定所述偏移为当前间隔的最后位置。
38.如权利要求36所述的计算机可读介质,其特征在于,进一步包括:只要偏移的当前值不小于到当前间隔的开始处的偏移,则将位置k处的第一标志阵列的值更新为假,在最后的偏移的当前值处提供的指纹值等于位置k处的第一指纹阵列的值,如果最后的偏移的当前值处的指纹值大于位置k处的第一指纹阵列的值,那么,递增k并将索引k处的第一偏移阵列的值设置为当前的最后的偏移的值,将索引k处的第一标志阵列的值设置为真,并将索引k处的第一散列阵列的值设置为最后的偏移的当前值,如果索引1处的第二指纹阵列的值不大于最后的偏移的当前值处的指纹值,则将索引1处的第二标志阵列的值设置为假,并递减到当前间隔的最后位置的偏移。
39.如权利要求36所述的计算机可读介质,其特征在于,进一步包括:如果索引k处的第一标志阵列的值已经为假或当存在0到1之间的索引j时,包括索引j处的第二偏移阵列的值加上值h至少与索引k处的第一偏移阵列的值一样大并且索引j处的第二指纹阵列的值至少为索引k处的第一指纹阵列的值,则将索引k处的第一标志阵列的值设置为假。
40.如权利要求39所述的计算机可读介质,其特征在于,进一步包括:如果在位置1处的第二标志阵列的值为真,则将索引1处的第二偏移阵列的值设置为拆分点。
41.如权利要求40所述的计算机可读介质,其特征在于,进一步包括:在进行下一个间隔之前,交换到第一和第二偏移、指纹阵列和标志阵列的引用。
42.如权利要求34所述的计算机可读介质,其特征在于,进一步包括:分配长度等于界限的标志阵列并将标志阵列初始化为布尔假,分配长度等于界限的指纹阵列并将指纹阵列初始化为零,分配长度等于界限的偏移阵列并将偏移阵列初始化为零,初始化最小索引为零,初始化最大索引为零,并将到对象内的当前偏移初始化为零。
43.如权利要求42所述的计算机可读介质,其特征在于,进一步包括:当当前偏移值被标识为等于在最大索引处的偏移阵列条目的值加上界限加上1时:如果在最大索引处的标志阵列条目的值是布尔真,查找在最大索引处的偏移阵列的值所给定的偏移处的本地最大值;并且将最大索引设置为递减1的最大值模界限确定的值。
44.如权利要求43所述的计算机可读介质,其特征在于,进一步包括:当与当前偏移相关联的指纹值小于在最小索引处的指纹阵列条目的值时:递减最小索引模界限,设置最小索引处的标志阵列的值为布尔假,设置最小索引处的指纹阵列条目的值为与当前偏移相关联的指纹值,并将最小索引处的偏移阵列条目的值设置为当前偏移。
45.如权利要求44所述的计算机可读介质,其特征在于,进一步包括当与当前偏移相关联的指纹值等于在最小索引处的指纹阵列条目的值时:将最小索引处的标志阵列条目的值设置为布尔假,将最小索引处的指纹阵列条目的值设置为与当前偏移相关联的指纹值,并将最小索引处的偏移阵列条目的值设置为当前偏移。
46.如权利要求45所述的计算机可读介质,其特征在于,进一步包括:当与当前偏移相关联的指纹值等于在最小索引处的指纹阵列条目的值,并且当所述最小索引不同于所述最大索引时:递增最小索引加1模界限。
47.如权利要求46所述的计算机可读介质,其特征在于,进一步包括:当与当前偏移相关联的指纹值大于在最小索引处的指纹阵列条目的值,并且当所述最小索引等于所述最大索引时:将最小索引处的标志阵列条目设置为布尔真,将最小索引处的指纹阵列条目设置为与当前偏移相关联的指纹值,并且将最小索引处的偏移阵列条目设置为当前偏移。
48.如权利要求47所述的计算机可读介质,其特征在于,进一步包括:当完成先前的确定时,递增当前偏移。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/825,735 | 2004-04-15 | ||
US10/825,735 US7555531B2 (en) | 2004-04-15 | 2004-04-15 | Efficient algorithm and protocol for remote differential compression |
CN2005100551077A CN1684464B (zh) | 2004-04-15 | 2005-03-15 | 用于在本地装置和远程装置间更新对象的方法和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100551077A Division CN1684464B (zh) | 2004-04-15 | 2005-03-15 | 用于在本地装置和远程装置间更新对象的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102170455A true CN102170455A (zh) | 2011-08-31 |
CN102170455B CN102170455B (zh) | 2015-12-16 |
Family
ID=34939140
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110150768.3A Active CN102170455B (zh) | 2004-04-15 | 2005-03-15 | 用于在本地装置和远程装置间更新对象的方法和系统 |
CN2005100551077A Active CN1684464B (zh) | 2004-04-15 | 2005-03-15 | 用于在本地装置和远程装置间更新对象的方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100551077A Active CN1684464B (zh) | 2004-04-15 | 2005-03-15 | 用于在本地装置和远程装置间更新对象的方法和系统 |
Country Status (18)
Country | Link |
---|---|
US (1) | US7555531B2 (zh) |
EP (2) | EP1587007A3 (zh) |
JP (1) | JP4796315B2 (zh) |
KR (1) | KR100922674B1 (zh) |
CN (2) | CN102170455B (zh) |
AU (1) | AU2005201386B2 (zh) |
BR (1) | BRPI0501166A (zh) |
CA (1) | CA2500894C (zh) |
CO (1) | CO5680121A1 (zh) |
IL (1) | IL167467A (zh) |
MX (1) | MXPA05002949A (zh) |
MY (1) | MY144798A (zh) |
NO (1) | NO20051344L (zh) |
NZ (1) | NZ538839A (zh) |
RU (1) | RU2382511C2 (zh) |
SG (1) | SG116576A1 (zh) |
TW (1) | TWI360336B (zh) |
ZA (1) | ZA200502115B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103580982A (zh) * | 2012-07-19 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 代收电子邮件的方法、装置及系统 |
CN107468240A (zh) * | 2017-09-18 | 2017-12-15 | 山东正心医疗科技有限公司 | 手持式心电监护系统 |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047855A1 (en) * | 2004-05-13 | 2006-03-02 | Microsoft Corporation | Efficient chunking algorithm |
US7555531B2 (en) | 2004-04-15 | 2009-06-30 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression |
US20050262167A1 (en) * | 2004-05-13 | 2005-11-24 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression on a local device |
US20050256974A1 (en) * | 2004-05-13 | 2005-11-17 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression on a remote device |
US8376855B2 (en) | 2004-06-28 | 2013-02-19 | Winview, Inc. | Methods and apparatus for distributed gaming over a mobile device |
US8870639B2 (en) | 2004-06-28 | 2014-10-28 | Winview, Inc. | Methods and apparatus for distributed gaming over a mobile device |
US10226698B1 (en) | 2004-07-14 | 2019-03-12 | Winview, Inc. | Game of skill played by remote participants utilizing wireless devices in connection with a common game event |
US7613787B2 (en) * | 2004-09-24 | 2009-11-03 | Microsoft Corporation | Efficient algorithm for finding candidate objects for remote differential compression |
US8073926B2 (en) * | 2005-01-07 | 2011-12-06 | Microsoft Corporation | Virtual machine image server |
US20070094348A1 (en) * | 2005-01-07 | 2007-04-26 | Microsoft Corporation | BITS/RDC integration and BITS enhancements |
US7849462B2 (en) * | 2005-01-07 | 2010-12-07 | Microsoft Corporation | Image server |
US20060184784A1 (en) * | 2005-02-16 | 2006-08-17 | Yosi Shani | Method for secure transference of data |
US20060277322A1 (en) * | 2005-06-03 | 2006-12-07 | Nokia Corporation | System and method for implementing reference-based electronic mail compression |
US10721543B2 (en) | 2005-06-20 | 2020-07-21 | Winview, Inc. | Method of and system for managing client resources and assets for activities on computing devices |
EP1904196A2 (en) | 2005-06-20 | 2008-04-02 | Airplay Network, Inc. | Method of and system for managing client resources and assets for activities on computing devices |
US20070070999A1 (en) * | 2005-08-02 | 2007-03-29 | Black Jeffrey T | Synchronization of historical data without retransmission |
US8149530B1 (en) | 2006-04-12 | 2012-04-03 | Winview, Inc. | Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming |
US8705195B2 (en) | 2006-04-12 | 2014-04-22 | Winview, Inc. | Synchronized gaming and programming |
US9919210B2 (en) | 2005-10-03 | 2018-03-20 | Winview, Inc. | Synchronized gaming and programming |
US9511287B2 (en) | 2005-10-03 | 2016-12-06 | Winview, Inc. | Cellular phone games based upon television archives |
US9056251B2 (en) | 2006-01-10 | 2015-06-16 | Winview, Inc. | Method of and system for conducting multiple contests of skill with a single performance |
US8002618B1 (en) | 2006-01-10 | 2011-08-23 | Winview, Inc. | Method of and system for conducting multiple contests of skill with a single performance |
US10556183B2 (en) | 2006-01-10 | 2020-02-11 | Winview, Inc. | Method of and system for conducting multiple contest of skill with a single performance |
US20070226298A1 (en) * | 2006-03-24 | 2007-09-27 | Sap Ag. | Methods and systems providing metadata in service signatures |
US11082746B2 (en) | 2006-04-12 | 2021-08-03 | Winview, Inc. | Synchronized gaming and programming |
KR101381551B1 (ko) | 2006-05-05 | 2014-04-11 | 하이버 인크 | 그룹 기반의 완료 및 증분 컴퓨터 파일 백업 시스템, 프로세스 및 장치 |
US7617322B2 (en) * | 2006-09-29 | 2009-11-10 | Microsoft Corporation | Secure peer-to-peer cache sharing |
US7844581B2 (en) * | 2006-12-01 | 2010-11-30 | Nec Laboratories America, Inc. | Methods and systems for data management using multiple selection criteria |
US8214517B2 (en) * | 2006-12-01 | 2012-07-03 | Nec Laboratories America, Inc. | Methods and systems for quick and efficient data management and/or processing |
US7954008B2 (en) * | 2007-01-15 | 2011-05-31 | Microsoft Corporation | Objective assessment of application crashes from a customer environment |
CN103516725B (zh) * | 2007-03-12 | 2017-01-11 | 思杰系统有限公司 | 用于使用压缩历史来改进网络性能的系统和方法 |
US8255570B2 (en) | 2007-03-12 | 2012-08-28 | Citrix Systems, Inc. | Systems and methods of compression history expiration and synchronization |
AU2012203797B2 (en) * | 2007-03-12 | 2015-05-07 | Citrix Systems, Inc. | Systems and methods for using compression histories to improve network performance |
US7460038B2 (en) | 2007-03-12 | 2008-12-02 | Citrix Systems, Inc. | Systems and methods of clustered sharing of compression histories |
US7532134B2 (en) | 2007-03-12 | 2009-05-12 | Citrix Systems, Inc. | Systems and methods for sharing compression histories between multiple devices |
US7827237B2 (en) | 2007-03-12 | 2010-11-02 | Citrix Systems, Inc. | Systems and methods for identifying long matches of data in a compression history |
US7865585B2 (en) | 2007-03-12 | 2011-01-04 | Citrix Systems, Inc. | Systems and methods for providing dynamic ad hoc proxy-cache hierarchies |
US7619545B2 (en) | 2007-03-12 | 2009-11-17 | Citrix Systems, Inc. | Systems and methods of using application and protocol specific parsing for compression |
US8819288B2 (en) | 2007-09-14 | 2014-08-26 | Microsoft Corporation | Optimized data stream compression using data-dependent chunking |
US8813112B1 (en) | 2007-10-23 | 2014-08-19 | Winview, Inc. | Method of and apparatus for utilizing SMS while running an application on a mobile device controlling a viewer's participation with a broadcast |
US8200969B2 (en) * | 2008-01-31 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Data verification by challenge |
US8375396B2 (en) * | 2008-01-31 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | Backup procedure with transparent load balancing |
WO2009108579A2 (en) | 2008-02-26 | 2009-09-03 | Vmware, Inc. | Extending server-based desktop virtual machine architecture to client machines |
JP2009245089A (ja) * | 2008-03-31 | 2009-10-22 | Fujitsu Ltd | 分散オブジェクト・プログラム及びレプリケーション処理方法 |
FR2929778B1 (fr) * | 2008-04-07 | 2012-05-04 | Canon Kk | Procedes et dispositifs de codage et de decodage binaire iteratif pour documents de type xml. |
WO2009132261A1 (en) | 2008-04-25 | 2009-10-29 | Vmware, Inc. | Updating a file using differences and file format therefor |
US8527482B2 (en) * | 2008-06-06 | 2013-09-03 | Chrysalis Storage, Llc | Method for reducing redundancy between two or more datasets |
US8255806B2 (en) * | 2008-09-15 | 2012-08-28 | Vmware, Inc. | Unified secure virtual machine player and remote desktop client |
US9716918B1 (en) | 2008-11-10 | 2017-07-25 | Winview, Inc. | Interactive advertising system |
US8380663B2 (en) * | 2008-12-17 | 2013-02-19 | Sybase, Inc. | Data integrity in a database environment through background synchronization |
US8977765B1 (en) * | 2009-02-27 | 2015-03-10 | Symantec Corporation | Method and apparatus for streaming applications to a plurality of clients within a peer to-peer network |
US8583625B2 (en) * | 2009-03-20 | 2013-11-12 | The Trustees Of Princeton | Systems and methods for network acceleration and efficient indexing for caching file systems |
US8805953B2 (en) * | 2009-04-03 | 2014-08-12 | Microsoft Corporation | Differential file and system restores from peers and the cloud |
US20100268784A1 (en) * | 2009-04-17 | 2010-10-21 | Marc Henness | Data synchronization system and method |
US20100318759A1 (en) * | 2009-06-15 | 2010-12-16 | Microsoft Corporation | Distributed rdc chunk store |
US8321484B2 (en) * | 2010-02-26 | 2012-11-27 | Microsoft Corporation | Minimizing bandwidth in file path-centric protocol message |
US8909657B2 (en) * | 2011-01-14 | 2014-12-09 | Apple Inc. | Content based file chunking |
FR2972546B1 (fr) * | 2011-03-07 | 2013-03-08 | Bull Sas | Procedes, dispositifs et programmes d'ordinateur pour optimiser la replication de donnees dans des systemes informatiques |
EP2645286A1 (en) * | 2012-03-09 | 2013-10-02 | ABB Research Ltd. | Authentication in an industrial control system |
US8856445B2 (en) | 2012-05-24 | 2014-10-07 | International Business Machines Corporation | Byte caching with chunk sizes based on data type |
US8832375B2 (en) | 2012-05-24 | 2014-09-09 | International Business Machines Corporation | Object type aware byte caching |
US9626373B2 (en) * | 2012-10-01 | 2017-04-18 | Western Digital Technologies, Inc. | Optimizing data block size for deduplication |
US9110964B1 (en) * | 2013-03-05 | 2015-08-18 | Emc Corporation | Metadata optimization for network replication using differential encoding |
US9235475B1 (en) | 2013-03-05 | 2016-01-12 | Emc Corporation | Metadata optimization for network replication using representative of metadata batch |
KR101479864B1 (ko) * | 2013-11-08 | 2015-01-06 | 주식회사 엘지유플러스 | 멀티미디어 청크(chunk)를 수신하는 통신 단말기 및 그 제어방법과, 그 제어방법을 실행하기 위한 프로그램을 기록한 기록 매체 |
US10097868B2 (en) | 2013-12-09 | 2018-10-09 | Sony Corporation | Data processing device and data processing method |
CN105024970B (zh) * | 2014-04-18 | 2018-07-13 | 中国电信股份有限公司 | 移动应用数据拷贝的控制方法、系统、客户端和服务器 |
WO2016088964A1 (ko) * | 2014-12-02 | 2016-06-09 | 엘지전자(주) | 무선 통신 시스템에서 블루투스 통신을 이용하여 객체 전송 서비스를 수행하기 위한 방법 및 장치 |
US9973597B1 (en) | 2014-12-10 | 2018-05-15 | Amazon Technologies, Inc. | Differential dictionary compression of network-accessible content |
US10574751B2 (en) | 2016-03-22 | 2020-02-25 | International Business Machines Corporation | Identifying data for deduplication in a network storage environment |
US11551529B2 (en) | 2016-07-20 | 2023-01-10 | Winview, Inc. | Method of generating separate contests of skill or chance from two independent events |
CN107783990B (zh) * | 2016-08-26 | 2021-11-19 | 华为技术有限公司 | 一种数据压缩方法及终端 |
US11308765B2 (en) | 2018-10-08 | 2022-04-19 | Winview, Inc. | Method and systems for reducing risk in setting odds for single fixed in-play propositions utilizing real time input |
CN110443156B (zh) * | 2019-07-16 | 2022-03-25 | 浙江大华技术股份有限公司 | 轨迹相似度度量方法、数据处理设备及存储设备 |
US11449325B2 (en) | 2019-07-30 | 2022-09-20 | Sony Interactive Entertainment LLC | Data change detection using variable-sized data chunks |
US11307841B2 (en) | 2019-07-30 | 2022-04-19 | Sony Interactive Entertainment LLC | Application patching using variable-sized units |
US11262927B2 (en) | 2019-07-30 | 2022-03-01 | Sony Interactive Entertainment LLC | Update optimization using feedback on probability of change for regions of data |
CN110740352B (zh) * | 2019-11-14 | 2021-07-20 | 北京京航计算通讯研究所 | 显卡透传环境下基于spice协议的差异图像显示方法 |
CN110868614B (zh) * | 2019-11-14 | 2021-09-28 | 北京京航计算通讯研究所 | 显卡透传环境下基于spice协议的差异图像显示系统 |
CN112286550B (zh) * | 2020-10-22 | 2024-08-16 | 上海艾拉比智能科技有限公司 | 一种嵌入式设备系统升级的安全性签名算法 |
US11681659B2 (en) * | 2021-05-21 | 2023-06-20 | Red Hat, Inc. | Hybrid file compression model |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998035306A1 (en) * | 1997-02-11 | 1998-08-13 | Connected Corporation | File comparison for data backup and file synchronization |
US20020038314A1 (en) * | 2000-06-22 | 2002-03-28 | Thompson Peter F. | System and method for file transmission using file differentiation |
US6470329B1 (en) * | 2000-07-11 | 2002-10-22 | Sun Microsystems, Inc. | One-way hash functions for distributed data synchronization |
US20030140132A1 (en) * | 2002-01-22 | 2003-07-24 | Yves-Andre Champagne | Method and apparatus for updating network device configuration information in a network management system |
US6601023B1 (en) * | 1998-10-16 | 2003-07-29 | Computer Associates Think, Inc. | Method for impact analysis of a model |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446888A (en) | 1994-01-14 | 1995-08-29 | Pyne; Charles F. | Remote file transfer method and apparatus |
US5488364A (en) | 1994-02-28 | 1996-01-30 | Sam H. Eulmi | Recursive data compression |
US5486826A (en) | 1994-05-19 | 1996-01-23 | Ps Venture 1 Llc | Method and apparatus for iterative compression of digital data |
WO1996025801A1 (en) | 1995-02-17 | 1996-08-22 | Trustus Pty. Ltd. | Method for partitioning a block of data into subblocks and for storing and communicating such subblocks |
US5933104A (en) | 1995-11-22 | 1999-08-03 | Microsoft Corporation | Method and system for compression and decompression using variable-sized offset and length fields |
WO1997027707A1 (en) | 1996-01-22 | 1997-07-31 | Matsushita Electric Industrial Co., Ltd. | Digital image encoding and decoding method and digital image encoding and decoding device using the same |
US5794254A (en) | 1996-12-03 | 1998-08-11 | Fairbanks Systems Group | Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets |
US5987022A (en) | 1996-12-27 | 1999-11-16 | Motorola, Inc. | Method for transmitting multiple-protocol packetized data |
US6374250B2 (en) | 1997-02-03 | 2002-04-16 | International Business Machines Corporation | System and method for differential compression of data from a plurality of binary sources |
US6226629B1 (en) | 1997-02-28 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus determining and using hash functions and hash values |
US6449612B1 (en) | 1998-03-17 | 2002-09-10 | Microsoft Corporation | Varying cluster number in a scalable clustering system for use with large databases |
US6052531A (en) | 1998-03-25 | 2000-04-18 | Symantec Corporation | Multi-tiered incremental software updating |
US6317754B1 (en) | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
US6952823B2 (en) | 1998-09-01 | 2005-10-04 | Pkware, Inc. | Software patch generator using compression techniques |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6574657B1 (en) * | 1999-05-03 | 2003-06-03 | Symantec Corporation | Methods and apparatuses for file synchronization and updating using a signature list |
US6791982B2 (en) | 1999-09-29 | 2004-09-14 | Telefonaktiebolaget Lm Ericsson | Segmentation protocol that supports compressed segmentation headers |
EP1168174A1 (en) | 2000-06-19 | 2002-01-02 | Hewlett-Packard Company, A Delaware Corporation | Automatic backup/recovery process |
US7058941B1 (en) | 2000-11-14 | 2006-06-06 | Microsoft Corporation | Minimum delta generator for program binaries |
JP2004514214A (ja) | 2000-11-17 | 2004-05-13 | ビットフォン コーポレイション | 情報をアップデートおよび配布するシステムおよび方法 |
US7054912B2 (en) | 2001-03-12 | 2006-05-30 | Kabushiki Kaisha Toshiba | Data transfer scheme using caching technique for reducing network load |
US20020152219A1 (en) | 2001-04-16 | 2002-10-17 | Singh Monmohan L. | Data interexchange protocol |
US8041803B2 (en) | 2001-09-26 | 2011-10-18 | Qurio Holdings, Inc. | Method and system for delivering files in digital file marketplace |
BR0206453A (pt) | 2001-11-16 | 2004-01-13 | Koninkl Philips Electronics Nv | Método para atualizar, cliente compartilhador de arquivo arranjado para atualizar, servidor arranjado papa atualizar, um banco de dados compreendendo uma impressão digital de, e, um conjunto de metadados associado para cada um de, um número de objetos de multimìdia, e, rede de compartilhamento de arquivo |
US7370120B2 (en) | 2001-12-07 | 2008-05-06 | Propel Software Corporation | Method and system for reducing network latency in data communication |
EP1326189A3 (en) * | 2001-12-12 | 2005-08-17 | Microsoft Corporation | Controls and displays for acquiring preferences, inspecting behaviour, and guiding the learning and decision policies of an adaptive communications prioritization and routing systems |
US6947604B2 (en) | 2002-01-17 | 2005-09-20 | Intel Corporation | Method and hardware to implement two-dimensional compression |
JP4020676B2 (ja) | 2002-03-26 | 2007-12-12 | 株式会社東芝 | Webシステム及びWebシステムの制御方法 |
JP3848209B2 (ja) * | 2002-05-23 | 2006-11-22 | 株式会社東芝 | データ転送装置、データ転送方法及びプログラム |
US7360093B2 (en) | 2002-07-22 | 2008-04-15 | Xerox Corporation | System and method for authentication of JPEG image data |
US20040039716A1 (en) | 2002-08-23 | 2004-02-26 | Thompson Dean S. | System and method for optimizing a computer program |
JP2004094617A (ja) | 2002-08-30 | 2004-03-25 | Fujitsu Ltd | 差分圧縮によるバックアップ方法、システム及び差分圧縮方法 |
US7099884B2 (en) * | 2002-12-06 | 2006-08-29 | Innopath Software | System and method for data compression and decompression |
US20060047855A1 (en) | 2004-05-13 | 2006-03-02 | Microsoft Corporation | Efficient chunking algorithm |
US7555531B2 (en) | 2004-04-15 | 2009-06-30 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression |
US20050262167A1 (en) | 2004-05-13 | 2005-11-24 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression on a local device |
US20050256974A1 (en) | 2004-05-13 | 2005-11-17 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression on a remote device |
US7613787B2 (en) | 2004-09-24 | 2009-11-03 | Microsoft Corporation | Efficient algorithm for finding candidate objects for remote differential compression |
WO2006052897A2 (en) | 2004-11-08 | 2006-05-18 | Innopath Software, Inc. | Reorganizing images in static file system differencing and updating |
US7640363B2 (en) | 2005-02-16 | 2009-12-29 | Microsoft Corporation | Applications for remote differential compression |
-
2004
- 2004-04-15 US US10/825,735 patent/US7555531B2/en active Active
-
2005
- 2005-02-22 SG SG200501089A patent/SG116576A1/en unknown
- 2005-03-01 RU RU2005105759/09A patent/RU2382511C2/ru not_active IP Right Cessation
- 2005-03-09 BR BR0501166-3A patent/BRPI0501166A/pt not_active IP Right Cessation
- 2005-03-14 KR KR1020050021145A patent/KR100922674B1/ko active IP Right Grant
- 2005-03-14 TW TW094107741A patent/TWI360336B/zh not_active IP Right Cessation
- 2005-03-14 ZA ZA2005/02115A patent/ZA200502115B/en unknown
- 2005-03-15 CN CN201110150768.3A patent/CN102170455B/zh active Active
- 2005-03-15 NO NO20051344A patent/NO20051344L/no not_active Application Discontinuation
- 2005-03-15 JP JP2005073985A patent/JP4796315B2/ja not_active Expired - Fee Related
- 2005-03-15 CN CN2005100551077A patent/CN1684464B/zh active Active
- 2005-03-15 NZ NZ538839A patent/NZ538839A/en not_active IP Right Cessation
- 2005-03-15 CA CA2500894A patent/CA2500894C/en not_active Expired - Fee Related
- 2005-03-15 CO CO05024087A patent/CO5680121A1/es not_active Application Discontinuation
- 2005-03-15 MY MYPI20051086A patent/MY144798A/en unknown
- 2005-03-16 IL IL167467A patent/IL167467A/en unknown
- 2005-03-16 MX MXPA05002949A patent/MXPA05002949A/es active IP Right Grant
- 2005-04-01 AU AU2005201386A patent/AU2005201386B2/en not_active Ceased
- 2005-04-05 EP EP05102664A patent/EP1587007A3/en not_active Withdrawn
- 2005-04-05 EP EP11009555A patent/EP2444909A2/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998035306A1 (en) * | 1997-02-11 | 1998-08-13 | Connected Corporation | File comparison for data backup and file synchronization |
US6601023B1 (en) * | 1998-10-16 | 2003-07-29 | Computer Associates Think, Inc. | Method for impact analysis of a model |
US20020038314A1 (en) * | 2000-06-22 | 2002-03-28 | Thompson Peter F. | System and method for file transmission using file differentiation |
US6470329B1 (en) * | 2000-07-11 | 2002-10-22 | Sun Microsystems, Inc. | One-way hash functions for distributed data synchronization |
US20030140132A1 (en) * | 2002-01-22 | 2003-07-24 | Yves-Andre Champagne | Method and apparatus for updating network device configuration information in a network management system |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103580982A (zh) * | 2012-07-19 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 代收电子邮件的方法、装置及系统 |
CN103580982B (zh) * | 2012-07-19 | 2017-12-15 | 腾讯科技(深圳)有限公司 | 代收电子邮件的方法、装置及系统 |
CN107468240A (zh) * | 2017-09-18 | 2017-12-15 | 山东正心医疗科技有限公司 | 手持式心电监护系统 |
CN107468240B (zh) * | 2017-09-18 | 2024-05-07 | 山东正心医疗科技有限公司 | 手持式心电监护系统 |
Also Published As
Publication number | Publication date |
---|---|
BRPI0501166A (pt) | 2005-12-06 |
TWI360336B (en) | 2012-03-11 |
CA2500894C (en) | 2013-07-02 |
EP1587007A3 (en) | 2007-04-18 |
TW200537881A (en) | 2005-11-16 |
ZA200502115B (en) | 2007-08-29 |
EP2444909A2 (en) | 2012-04-25 |
KR20060043620A (ko) | 2006-05-15 |
NZ538839A (en) | 2007-07-27 |
KR100922674B1 (ko) | 2009-10-19 |
SG116576A1 (en) | 2005-11-28 |
RU2005105759A (ru) | 2006-08-10 |
JP4796315B2 (ja) | 2011-10-19 |
MXPA05002949A (es) | 2005-10-19 |
IL167467A (en) | 2010-11-30 |
AU2005201386A1 (en) | 2005-10-27 |
RU2382511C2 (ru) | 2010-02-20 |
EP1587007A2 (en) | 2005-10-19 |
CN102170455B (zh) | 2015-12-16 |
NO20051344D0 (no) | 2005-03-15 |
US20050235043A1 (en) | 2005-10-20 |
US7555531B2 (en) | 2009-06-30 |
CN1684464A (zh) | 2005-10-19 |
CO5680121A1 (es) | 2006-09-29 |
MY144798A (en) | 2011-11-15 |
CA2500894A1 (en) | 2005-10-15 |
NO20051344L (no) | 2005-10-17 |
CN1684464B (zh) | 2011-07-27 |
AU2005201386B2 (en) | 2010-06-17 |
JP2005302004A (ja) | 2005-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1684464B (zh) | 用于在本地装置和远程装置间更新对象的方法和系统 | |
CN1753368B (zh) | 为远程差异压缩标识对象的方法和系统 | |
US8117173B2 (en) | Efficient chunking algorithm | |
US7640363B2 (en) | Applications for remote differential compression | |
US20050262167A1 (en) | Efficient algorithm and protocol for remote differential compression on a local device | |
US6636872B1 (en) | Data file synchronization | |
KR20210095915A (ko) | 블록체인 네트워크를 통한 효율적이고 안전한 데이터 처리, 접근 및 전송을 위한 시스템 및 방법 | |
CN110599169B (zh) | 数据处理方法、装置、终端及介质 | |
US20050256974A1 (en) | Efficient algorithm and protocol for remote differential compression on a remote device | |
CN104063377B (zh) | 信息处理方法和使用其的电子设备 | |
CN118210770A (zh) | 增量数据同步方法、装置、计算机设备和存储介质 | |
Agarwal et al. | Bandwidth efficient string reconciliation using puzzles | |
US20120047142A1 (en) | Network coding with last modified dates for p2p web caching | |
US20170048303A1 (en) | On the fly statistical delta differencing engine | |
Yu | Unbalanced Big Data‐Compatible Cloud Storage Method Based on Redundancy Elimination Technology | |
김민철 | Privacy and Security in Coded Computation and Cache-aided Information Retrieval | |
CN109933573A (zh) | 数据库业务更新方法、装置及系统 | |
CN118171298A (zh) | 一种面向容器仓库中加密镜像的文件去重方法和装置 | |
CN105100204A (zh) | 一种信息处理方法及装置 | |
TH71599A (th) | อัลกอริทึมและโปรโตคอลที่มีประสิทธิภาพสำหรับการบีบอัดข้อมูลเชิงอนุพันธ์ระยะไกล |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150731 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150731 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |