KR100922674B1 - 네트워크를 통한 객체 갱신 시스템 - Google Patents

네트워크를 통한 객체 갱신 시스템 Download PDF

Info

Publication number
KR100922674B1
KR100922674B1 KR1020050021145A KR20050021145A KR100922674B1 KR 100922674 B1 KR100922674 B1 KR 100922674B1 KR 1020050021145 A KR1020050021145 A KR 1020050021145A KR 20050021145 A KR20050021145 A KR 20050021145A KR 100922674 B1 KR100922674 B1 KR 100922674B1
Authority
KR
South Korea
Prior art keywords
signature
delete delete
chunk
remote
local
Prior art date
Application number
KR1020050021145A
Other languages
English (en)
Other versions
KR20060043620A (ko
Inventor
댄 테도시우
니콜라 에스 브조너
패트릭 이 보제맨
유리 거레비치
Original Assignee
마이크로소프트 코포레이션
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 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060043620A publication Critical patent/KR20060043620A/ko
Application granted granted Critical
Publication of KR100922674B1 publication Critical patent/KR100922674B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61MDEVICES 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/00Medical syringes, e.g. enemata; Irrigators
    • A61M3/02Enemata; Irrigators
    • A61M3/06Enemata; Irrigators combined with bidets
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • General Health & Medical Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Hematology (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)을 사용하여 2개 이상의 컴퓨팅 장치들 사이에서 갱신된다. 한 실시양상에서, 효율적인 큰 객체 전송은 RDC 알고리즘을 자신의 메타데이터에 반복적으로 적용함으로써 달성되고; 단일 또는 다수의 반복 단계(들)은 이러한 경우에 네트워크를 통해 보내진 메타데이터량을 RDC 알고리즘에 의해 감소시키기 위해 사용될 수 있다. 객체 및/또는 서명 및 청크 길이 리스트는 동적으로 결정된 위치에 경계를 배치함으로써 청크될 수 있다. 수학적 함수는 잠재적 청크 경계에 대한 수평 윈도우와 관련된 해시 값을 평가한다. 설명된 방법 및 시스템은 피어 투 피어 레플리케이터, 이메일 클라이언트 및 서버, 클라이언트측 캐싱 시스템, 범용 카피 유틸리티, 데이터베이스 레플리케이터, 포털, 소프트웨어 갱신 서비스, 파일/데이터 동기화 및 기타와 같은 여러가지 네트워크화 애플리케이션에 유용하다.
원격 차등 압축(RDC), 핑거프린트 함수, 객체, 서명, 청크, 해시 함수

Description

네트워크를 통한 객체 갱신 시스템{Efficient Algorithm and Protocol for Remote Differential Compression}
도 1은 동작 환경을 도시한 도면.
도 2는 예시적인 컴퓨팅 장치를 도시한 도면.
도 3a 및 3b는 예시적인 RDC 절차를 도시한 도면.
도 4a 및 4b는 예시적인 RDC 절차동안 로컬 장치와 원격 장치 사이의 상호작용을 위한 프로세스 흐름을 도시한 도면.
도 5a 및 5b는 RDC 절차동안 예시적인 상호작용에 있어서 서명 및 청크 길이 리스트의 반복적 원격 차등 압축을 위한 프로세스 흐름을 도시한 도면.
도 6은 예시적인 RDC 시퀀스의 반복적 압축의 한 예를 그래프로 도시한 도면.
도 7은 예시적인 RDC 절차를 사용하는 클라이언트 및 서버 애플리케이션의 상호작용을 도시한 도면.
도 8은 예시적인 청킹(chunking) 절차를 위한 프로세스 흐름을 도시한 도면.
도 9는 예시적인 청킹 절차를 위한 예시적인 명령어 코드의 도면.
도 10 및 11은 본 발명의 최소한 하나의 실시양상에 따라 배열된, 다른 예시적인 청킹 절차를 위한 다른 예시적인 명령어 코드의 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 장치A
101 : 장치B
102 : 네트워크
200 : 컴퓨팅 장치
202 : 프로세싱 유닛
204 : 시스템 메모리
본 발명은 일반적으로 제한된 대역폭을 갖는 네트워크를 통해 데이터 객체를 갱신하는 것에 관한 것이다. 더욱 구체적으로, 본 발명은 원격 차등 압축(Remote Differential Compression: RDC) 방법을 사용하는 객체 데이터의 차등 전송을 위한 시스템 및 방법에 관한 것이다. 반복적인 RDC 방법의 적용은 큰 객체 전송을 위한 대역폭 사용을 더욱 최소화하기 위해 사용될 수 있다.
인트라넷, 엑스트라넷, 인터넷 등과 같은 네트워크의 확산은 광범위한 네트워크 전반을 통해 정보를 공유하는 사용자의 수를 크게 증가시켰다. 최대 데이터 전송 속도는 다른 인프라스트럭처(infrastructure) 관련 제한뿐만 아니라 전송 매체와 관련된 대역폭에 기초한 각각의 물리적 네트워크와 관련된다. 제한된 네트워크 대역폭의 결과로서, 사용자는 네트워크 전반을 통해 대량의 데이터를 검색하고 전송할 때 긴 지연을 경험할 수 있다.
데이터 압축 기술은 제한된 대역폭을 갖는 네트워크 전반을 통해 대량의 데이터를 전송하는 대중적인 방법이 되었다. 데이터 압축은 일반적으로 손실이 없거나 손실이 많은 것으로 특징지워질 수 있다. 무손실 압축은 데이터 세트의 정확한 재생이 압축해제 변환을 적용함으로써 검색될 수 있도록 데이터 세트의 변환을 수반한다. 무손실 압축은 정확한 복제가 요구될 때, 데이터를 압축하기 위해 가장 자주 사용된다.
데이터 객체의 수신자가 이미 그 객체의 이전 버전 또는 구버전을 갖고 있는 경우에, 원격 차등 압축(RDC)이라 불리는 무손실 압축 방법은 객체의 신버전과 구버전 사이의 차이를 판단하여 단지 전달하기 위해서만 사용될 수 있다. RDC 전송은 단지 신버전과 구버전 사이의 관찰된 차이(예를들어, 파일의 경우에, 파일 변경 또는 최종 액세스 날짜, 파일 속성, 또는 파일 내용의 작은 변화)만을 통신할 필요가 있기 때문에, 전송된 총 데이터량은 매우 감소될 수 있다. RDC는 네트워크 트래픽을 더욱 감소시키기 위해 다른 무손실 압축 알고리즘과 결합될 수 있다. RDC의 이점은, 큰 객체가 컴퓨팅 장치들 사이에서 앞뒤로 자주 통신될 필요가 있고, 이들 객체의 구 복사본을 유지하는 것이 어렵거나 실행 불가능하여 로컬 차등 알고리즘이 사용될 수 없는 경우에 가장 중요하다.
간단하게 설명하면, 본 발명은 제한된 대역폭 네트워크를 통해 객체를 갱신하기 위한 방법 및 시스템에 관한 것이다. 객체는 요구된 데이터 전송이 최소화되 도록 원격 차등 압축(RDC) 기술을 사용하여 2개 이상의 컴퓨팅 장치들 사이에서 갱신된다. 한 실시양상에서, 효율적인 큰 객체 전송은 RDC 알고리즘을 그 자신의 메타데이터에 반복적으로 적용함으로써 달성되고; 단일 또는 다수의 반복 단계(들)은 이러한 경우에 RDC 알고리즘에 의해 네트워크를 통해 보내진 메타데이터의 양을 감소시키기 위해 사용될 수 있다. 객체 및/또는 서명 및 청크 길이 리스트는 동적으로 결정된 위치에 경계를 배치함으로써 청크될 수 있다. 수학적 함수는 잠재적 청크 경계에 대한 수평(horizon) 윈도우와 관련된 해시 값을 평가한다. 설명된 방법 및 시스템은 피어-투-피어 레플리케이터(replicator), 이메일 클라이언트 및 서버, 클라이언트측 캐싱 시스템, 범용 카피 유틸리티, 데이터베이스 레플리케이터, 포털, 소프트웨어 갱신 서비스, 파일/데이터 동기화 및 기타와 같은 여러가지 네트워크화 애플리케이션에 유용하다.
본 발명의 더욱 완전한 이해 및 그것의 개선점은 첨부된 도면, 본 발명의 예시적인 실시예의 상세한 설명, 및 첨부된 청구범위를 참조함으로써 얻어질 수 있다.
도면을 참조하여 본 발명의 제한적이지 않고 소모적이지 않은 실시예가 기술된다.
본 발명의 다양한 실시예는 도면을 참조하여 상세하게 설명되는데, 몇몇 도면에서 유사한 참조번호는 유사한 구성부분 및 어셈블리를 나타낸다. 다양한 실시예에 대한 참조는 본 발명의 범위를 제한하지 않으며, 본 발명의 범위는 첨부된 청 구범위에 의해서만 제한된다. 부수적으로, 이 명세서에서 설명된 임의의 예들은 제한하고자 하는 것이 아니라, 청구된 본 발명의 다수의 가능한 실시예들 중의 일부를 설명하고자 하는 것일 뿐이다.
본 발명은 하나 이상의 공통으로 관련된 객체가 저장되어 있는 로컬 및 원격 컴퓨팅 장치(또는 짧게 "장치")와 관련하여 설명된다. "로컬" 및 "원격"이라는 용어는 방법의 한 가지 예에 관련된다. 그러나, 동일한 장치가 서로 다른 예에서 "로컬"과 "원격" 둘다 될 수 있다. 원격 차등 압축(RDC) 방법은 제한된 대역폭을 갖는 네트워크를 통해 공통으로 관련된 객체를 효율적으로 갱신하기 위해 사용된다. 객체의 새로운 복사본을 갖는 장치가 동일한 객체, 또는 유사한 객체의 구 복사본을 갖는 장치를 갱신할 필요가 있을 때, RDC 방법은 네트워크를 통해 객체들 간의 차이만을 전송하기 위해 이용된다. 설명된 예시적인 RDC 방법은 (1) 큰 객체용으로 전송된 메타데이터의 양을 감소시키기 위한 RDC 메타데이터의 전송에 대한 반복적인 방법, 및 (2) 대역폭 이용이 최소화되도록 객체 차이와 관련된 정밀도를 증가시키기 위한 로컬 최대치 기반의 청킹 방법을 사용한다. 설명된 RDC 방법으로부터 이익을 얻는 몇몇 예시적인 애플리케이션은 몇가지만 거론하자면, 피어 투 피어 복제 서비스, SMB와 같은 파일-전송 프로토콜, 큰 이미지를 전송하는 가상 서버, 이메일 서버, 셀룰러 폰 및 PDA 동기화, 데이터베이스 서버 복제를 포함한다.
동작 환경
도 1은 본 발명의 예시적인 동작 환경을 도시한 도면이다. 도면에 도시된 바와 같이, 장치는 네트워크를 통해 통신하도록 배열된다. 이들 장치는 범용 컴퓨 팅 장치, 전용 컴퓨팅 장치, 또는 네트워크에 접속되는 임의의 다른 적절한 장치일 수 있다. 네트워크(102)는 직접 유선 접속(예를 들어, 병렬 포트, 직렬 포트, USB, IEEE 1394 등), 무선 접속(예를 들어, IR 포트, 블루투스 포트 등), 유선 네트워크, 무선 네트워크, 근거리망(LAN), 광역망(WAN), 초광역망(ultra-WAN), 인터넷, 인트라넷 및 엑스트라넷을 포함하는(이것에 제한되지 않음) 임의의 접속 형태에 대응할 수 있다.
장치A(100)와 장치B(101) 사이의 예시적인 상호작용에 있어서, 한 객체의 상이한 버전들, 즉 장치(100) 상의 객체 OA 및 장치(101) 상의 객체 OB는 2개의 장치 상에 국부적으로 저장된다. 어떤 시점에서, 장치A(100)는 자신의 객체 OA 복사본을 장치B(101) 상에 저장된 복사본(객체 OB)으로 갱신할 것을 결정하고, 장치B(101)에 RDC 방법을 개시하라는 요청을 보낸다. 대안적인 실시예에서, RDC 방법은 장치B(101)에 의해 개시될 수 있다.
장치A(100) 및 장치B(101)는 그들의 국부적으로 저장된 객체를 프로세스하고, 관련된 데이터를 데이터-종속 형태로 가변수의 청크로(예를 들어, 각각, 객체 OB에 대한 청크 1-n, 및 객체 OA에 대한 청크 1-k) 나눈다. 청크에 대한 스트롱 해시(SHA)와 같은 서명 세트는 이 둘의 장치에 의해 국부적으로 계산된다. 이 둘의 장치는 별개의 서명 리스트를 컴파일한다. RDC 방법의 다음 단계 동안에, 장치B(101)는 계산된 서명 리스트 및 청크 길이 1-n을 네트워크(102)를 통해 장치A(100)에 전송한다. 장치A(100)는 각각의 수신된 서명을 자신의 생성된 서명 리스 트 1-k와 비교함으로써 이 서명 리스트를 평가한다. 서명 리스트의 불일치는 정정을 필요로 하는 객체 내의 하나 이상의 차이를 나타낸다. 장치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에 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 소정의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함할 수 있다. 시스템 메모리(24), 분리형 저장장치(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 프로토콜은 2개의 컴퓨팅 장치(장치A 및 장치B) 사이에서 협상된다. RDC 프로토콜은 암시적으로, 장치A 및 장치B가 각각 객체 인 스턴스(또는 버전) OA 및 OB에 의해 식별되는 동일한 객체 또는 자원의 2개의 상이한 인스턴스(또는 버전)을 갖는 것으로 가정한다. 도면에 도시된 예에서, 장치A는 자원의 구 버전 OA를 갖는 반면, 장치B는 그 자원과 관련된 내용(또는 데이터)에 약간의(또는 증가된) 차이를 갖는 버전 OB를 갖는다.
갱신된 객체 OB를 장치B에서 장치A로 전송하는 프로토콜은 아래에 설명된다. 유사한 프로토콜이 객체를 장치A에서 장치B로 전송하기 위해 사용될 수 있으며, 그러한 전송은 후술되는 프로토콜을 거의 변경하지 않고 장치A 또는 장치B의 명령으로 시작될 수 있다.
1. 장치A는 장치B에게 RDC 프로토콜을 사용하여 객체 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는 객체 OB와 관련된 자신의 계산된 청크 서명 및 청크 길이
의 리스트((SigB1, LenB1)...(SigBn, LenBn))를 장치A에 보낸다. 청크 길이 정
보는 그 후 특정 청크 세트를 그 시작 오프셋 및 그 길이로 식별함으로써 특
정 청크 세트를 요청하기 위해 장치A에 의해 사용될 수 있다. 리스트의 순
차적인 특성 때문에, 리스트 내의 이전의 모든 청크의 길이를 합함으로써 각
청크 Bi의 바이트의 시작 오프셋을 계산하는 것이 가능하다.
다른 실시예에서, 청크 서명 및 청크 길이의 리스트는 콤팩트하게 인
코드되고, 장치A에 보내지기 전에 무손실 압축 알고리즘을 사용하여 더욱
압축된다.
5. 이 데이터의 수신시, 장치A는 내용의 구 버전과 관련되는 단계 2
에서의 객체 OA에 대해 계산한 서명 SigA1...SigAk과 수신된 서명 리스트를 비
교한다.
6. 장치A는 장치B로부터 단계 4에서 수신한 서명이 단계 2에서 장치A
에 의해 계산된 임의의 서명과 일치하지 않은 모든 청크에 대한 요청을 장치
B에 보낸다. 각각의 요청된 청크 Bi에 있어서, 요청은 단계 4에서 장치A에
의해 계산된 청크 시작 오프셋, 및 청크 길이를 포함한다.
7. 장치B는 요청된 모든 청크와 관련된 내용을 장치A에 보낸다. 장
치B에 의해 보내진 내용은 장치A에 보내지기 전에 무손실 압축 알고리즘을
사용하여 더욱 압축될 수 있다.
8. 장치A는 단계 4에서 장치B에 의해 보내진 서명과 부합한 자신의
객체 OA 청크뿐만 아니라, 장치B로부터 단계 7에서 수신된 청크를 사용하
여 객체 OB의 로컬 복사본을 재구성한다. 로컬 및 원격 청크가 장치A 상에
서 재배열되는 순서는 단계 4에서 장치A에 의해 수신된 청크 서명 리스트에
의해 결정된다.
분할 단계 2 및 3은 관련된 객체(각각 OA 및 OB) 내의 모든 바이트 위치에서 계산되는 핑거프린팅 함수(fingerprinting function)를 사용하는 데이터 종속 형태로 발생할 수 있다. 주어진 위치에 대해, 핑거프린팅 함수는 객체 내의 그 위치를 둘러싸는 작은 데이터 윈도우를 사용하여 계산되고; 핑거프린팅 함수의 값은 그 윈도우 내에 포함된 객체의 모든 바이트에 의존한다. 핑거프린팅 함수는, 예를 들어 해시 함수 또는 라빈(Rabin) 다항식과 같은 임의의 적절한 함수일 수 있다.
청크 경계는 핑거프린팅 함수가 선택된 조건을 만족시키는 값으로 계산하는 객체 내의 위치에서 결정된다. 청크 서명은 암호화의 안전한 해시 함수(secure hash function: SHA), 또는 충돌 회피 해시 함수와 같은 소정의 다른 해시 함수를 사용하여 계산될 수 있다.
단계 4에서 보내진 서명 및 청크 길이 리스트는 오리지널 청크, 및 식별되어 갱신된 청크 또는 새로운 청크를 사용하여 객체를 재구성하는 기반을 제공한다. 단계 6에서 요청되는 청크는 그들의 오프셋 및 길이에 의해 식별된다. 객체는 서 명이 단계 4에서 장치A에 의해 수신된 것과 부합하는 로컬 및 원격 청크를 사용함으로써 장치A 상에서 동일한 순서로 재구성된다.
장치A에 의해 재구성 단계가 완료된 후, 객체 OA는 삭제되고, 장치A 상에서 재구성된 객체 OB의 복사본에 의해 대체될 수 있다. 다른 실시예에서, 장치A는 장래의 RDC 전송 동안에 청크의 잠재적인 "재사용"을 위해 주변에 객체 OA를 유지할 수 있다.
큰 객체에 있어서, 도 3a에 도시된 기본 RDC 프로토콜 인스턴스는 객체 OA와 OB가 매우 유사하거나 동일한 경우라도 단계 4에서 상당한 고정 오버헤드에 부딪친다. 평균 청크 크기 C가 주어지면, 단계 4에서 네트워크를 통해 전송된 정보의 양은 객체 OB의 크기에 비례하는데, 구체적으로 객체 OB의 청크의 수, 따라서 단계 4에서 전송된 (청크 서명, 청크 길이) 쌍의 수인 C로 나누어진 객체 OB의 크기에 비례한다.
예를 들어, 도 6을 참조하면, 큰 이미지(예를 들어, 마이크로소프트 가상 서버(Microsoft Virtual Server)와 같은 가상 기계 모니터에 의해 사용된 가상 하드 디스크 이미지)는 크기가 9.1 GB인 객체 OB가 생기게 할 수 있다. 평균 청크 크기 C가 3 KB인 경우에, 9 GB 객체는 3백만 청크가 객체 OB에 대해 생성될 수 있게 하고, 42 MB의 관련된 서명 및 청크 길이 정보가 단계 4에서 네트워크를 통해 보내질 필요가 있다. 객체 OA와 객체 OB 사이의 차이(따라서, 단계 7에서 보내질 필요가 있는 데이터의 양)이 매우 작더라도 42 MB의 서명 정보가 네트워크를 통해 보내져야 하기 때문에, 프로토콜의 고정 오버헤드 비용은 매우 높다.
이 고정 오버헤드 비용은 단계 4에서의 서명 정보 전송 대신에 RDC 프로토콜의 반복적 적용을 사용함으로써 상당히 감소될 수 있다. 도 3b를 참조하면, 기본 RDC 알고리즘의 단계 4를 대체하는 추가 단계 4.2-4.8이 다음과 같이 아래에 설명된다. 단계 4.2-4.8은 상술된 기본 RDC 프로토콜의 단계 2-8의 반복적 적용에 대응한다. 반복적 적용은 소정의 원하는 반복 깊이까지 아래의 단계 4.4 등등에 더욱 적용될 수 있다.
4.2. 장치A는 반복적 서명 청크 내로 자신의 서명 및 청크 길이 리스
트((SigA1, LenA1)...(SigAk, LenAk))의 반복적 청킹(chunking)을 실행하여, 다
른 반복적 서명 및 반복적 청크 길이 리스트((RSigA1, RLenA1)...(RSigAs,
RLenAs))(여기에서, s<<k)를 얻는다.
4.3. 장치B는 반복적 서명 및 반복적 청크 길이 리스트((RSigB1,
RLenB1)...(RSigAr, RLenAr))(여기에서, r<<k)를 생성하기 위해 서명 및 청크
길이 리스트((SigB1, LenB1)...(SigBn, LenBn))를 반복적으로 청크 업(chunk
up)한다.
4.4. 장치B는 순서화된 반복적 서명 및 반복적 청크 길이 리스트
((RSigB1, RLenB1)...(RSigAr, RLenAr))를 장치A에 보낸다. 반복적 청크 서명
및 반복적 청크 길이의 리스트는 콤팩트하게 인코드되고, 장치A에 보내지
기 전에 무손실 압축 알고리즘을 사용하여 더욱 압축될 수 있다.
4.5. 장치A는 장치B로부터 수신한 반복적 서명을 단계 4.2에서 계산
된 자신의 반복적 서명 리스트와 비교한다.
4.6. 장치A는 장치A가 부합되는 반복적 서명을 그 세트
(RSigA1...RSigAs) 내에서 갖고 있지 않는 (반복적 서명 RSigBk를 갖는) 모든
별개의 반복적 서명 청크에 대한 요청을 장치B에 보낸다.
4.7. 장치B는 요청된 반복적 서명 청크를 장치A에 보낸다. 요청된
반복적 서명 청크는 장치A에 보내지기 전에 무손실 압축 알고리즘을 사용하
여 더욱 압축될 수 있다.
4.8. 장치A는 단계 4.7에서 장치B로부터 수신한 반복적 청크, 및 국
부적으로 부합되는 반복적 서명 청크를 사용하여 서명 및 청크 정보 리스트
((SigB1, LenB1)...(SigBn, LenBn))를 재구성한다.
위의 단계 4.8이 완료된 후, 실행은 도 3a에 도시된 상술된 기본 RDC 프로토콜의 단계 5로 계속된다.
반복적 청킹 동작의 결과로서, 객체와 관련된 반복적 서명의 수는 평균 청크 크기 C와 동일한 인수만큼 감소되어, 상당히 작은 수의 반복적 서명(각각, 객체 OA의 경우에 s<<k, 및 객체 OB의 경우에 r<<n)을 얻는다. 한 실시예에서, 동일한 청킹 파라미터는 오리지널 객체 OA 및 OB를 청크하는 것과 같이 서명을 청크하기 위해 사용될 수 있다. 대안적인 실시예에서, 다른 청킹 파라미터가 반복 단계들에 대해 사용될 수 있다.
매우 큰 객체의 경우, 상기 반복 단계는 k번(k≥1) 적용될 수 있다. 평균 청크 크기가 C인 경우, 반복적 청킹은 대략 Ck에 대응하는 인수만큼 네트워크를 통한 서명 트래픽(단계 4.2 내지 4.8)의 크기를 줄일 수 있다. 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에 도시된 바와 같이, 상호작용은 단계 400에서 객체 OB의 RDC 전송을 요청하는 장치A에 의해 시작되고, 장치B는 이 요청을 단계 450에서 수신한다. 그 다음에, 로컬 장치A 및 원격 장치B는 각각 독립적으로 단계 401 및 451에서 핑거프린트를 계산하고, 단계 402 및 452에서 그들 각각의 객체를 청크로 나누며, 단계 403 및 453에서 각 청크에 대한 서명(예를 들어, SHA)을 계산한다.
단계 454에서, 장치B는 단계 452 및 453에서 계산한 서명 및 청크 길이 리스트를 단계 404에서 이 정보를 수신하는 장치A에 보낸다.
단계 405에서, 로컬 장치A는 요청된 청크 리스트를 빈 리스트로 초기화하고, 원격 청크에 대한 트래킹 오프셋을 0으로 초기화한다. 단계 406에서, 다음의 (서명, 청크 길이) 쌍(SigBi, LenBi)은 단계 404에서 수신한 리스트에서 고려하여 선택 된다. 단계 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에서, 다음의 (서명, 청크 길이) 쌍(SigBi, LenBi)은 단계 404에서 수신한 리스트에서 고려하여 선택된다. 단계 416에서, 장치A는 단계 415에서 선택한 서명 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는 단계 552 및 553에서 계산한 반복적 서명 및 청크 길이 리스트를 단계 504에서 이 정보를 수신하는 장치A에 보낸다.
단계 505에서, 로컬 장치A는 요청된 반복적 청크 리스트를 빈 리스트로 초기화하고, 원격 반복적 청크에 대한 트래킹 원격 반복적 오프셋을 0으로 초기화한다. 단계 506에서, 다음의 (반복적 서명, 반복적 청크 길이) 쌍(RSigBi, RLenBi)은 단계 504에서 수신한 리스트에서 고려하여 선택된다. 단계 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에서, 다음의 (반복적 서명, 반복적 청크 길이) 쌍(RSigBi, RLenBi)은 단계 504에서 수신한 리스트에서 고려하여 선택된다. 단계 516에서, 장치A는 단계 515에서 선택한 반복 서명 RSigBi가 단계 503 동안에 계산한 임의의 반복 서명에 부합하는지 확인한다.
부합하면, 실행은 단계 517에서 계속되어, 장치A는 대응하는 로컬 반복적 청크를 SIGCL에 부가한다. 부합하지 않으면, 원격 수신된 반복적 청크는 단계 518에 서 SIGCL에 부가된다.
단계 519에서, 로컬 장치A는 단계 504에서 수신한 모든 (반복적 서명, 반복적 청크 길이) 쌍이 프로세스되었는지 검사한다. 프로세스되지 않았으면, 실행은 단계 515에서 계속된다. 그렇지 않으면, 서명 및 청크 길이 리스트((SigB1, LenB1),...(SigBn, LenBn))의 로컬 복사본은 단계 520에서 SIGCL의 값으로 설정된다. 그 다음, 실행은 다시 도 4a의 단계 405로 계속된다.
반복적 서명 및 청크 길이 리스트는 추가 반복 원격 차등 압축이 상술된 바와 같이 대역폭 이용을 최소화하기 위해 필요한지 판정하기 위해 선택적으로 평가될 수 있다. 반복적 서명 및 청크 길이 리스트는 원하는 압축 레벨이 달성될 때까지 단계 504 및 554를 RDC 절차의 다른 인스턴스로 대체함으로써 설명된 청킹 절차를 사용하여 반복적으로 압축될 수 있다. 반복적 서명 리스트가 충분히 압축된 후, 반복적 서명 리스트는 상술된 바와 같이 원격 장치와 로컬 장치 간의 전송을 위해 복귀된다.
도 6은 예시적인 실시예에 따라 배열된 예시적인 RDC 시퀀스로 반복 압축의 예를 그래프로 도시한 도면이다. 도 6에 도시된 예에서, 오리지널 객체는 9.1 GB의 데이터이다. 서명 및 청크 길이 리스트는 청킹 절차를 사용하여 컴파일되는데, 여기에서 서명 및 청크 길이 리스트는 3백만 청크(또는 42 MB의 크기)를 만들어낸다. 제1 반복 단계 후, 서명 리스트는 3만3천 청크로 나누어지고, 33 KB 크기의 반복적 서명 및 반복적 청크 길이 리스트로 감소된다. 서명 리스트를 반복적으로 압축함으로써, 서명 리스트를 전송하는 대역폭 이용은 이와 같이 42 MB에서 약 395 KB로 극적으로 감소된다.
예시적인 객체 갱신
도 7은 본 발명의 최소한 한 실시양상에 따라 배열된 예시적인 RDC 절차를 사용하는 클라이언트 및 서버 애플리케이션의 상호작용을 도시한 도면이다. 서버 및 클라이언트 상의 오리지널 파일은 텍스트 "The quick fox jumped over the lazy brown dog. The dog was so lazy that he didn't notice the fox jumping over him."을 포함하고 있다.
그 다음 번에, 서버 상의 파일은 "The quick fox jumped over the lazy brown dog. The brown dog was so lazy that he didn't notice the fox jumping over him."로 갱신된다.
상술된 바와 같이, 클라이언트는 주기적으로 갱신될 파일을 요청한다. 클라이언트 및 서버는 객체(텍스트)를 도시된 바와 같이 청크로 청킹한다. 클라이언트 상에서, 청크는 "The quick fox jumped", "over the lazy brown dog.", "The dog was so lazy that he didn't notice" 및 "the fox jumping over him."이고; 클라이언트 서명 리스트는 SHA11, SHA12, SHA13, SHA14로 생성된다. 서버 상에서, 청크는 "The quick fox jumped", "over the lazy brown dog.", "The brown dog was", "so lazy that he didn't notice" 및 "the fox jumping 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는 예상된 평균 청크의 바이트 크기임.
(S2) ∑chunk-length,
여기에서, (signature, chunk-length) ∈ B로부터의 서명, 및
Figure 112005013382792-pat00001
A로부터의 서명.
통신 비용은 큰 평균 청크 크기, 및 원격 청크와 로컬 청크 사이의 큰 상호 작용으로부터 이익을 얻는다. 객체가 청크로 커트되는 방법의 선택은 프로토콜의 품질을 결정한다. 로컬 및 원격 장치는 객체를 커트하는 곳에 대해 사전의 통신없이 합치해야 한다. 다음은 커트하는 곳을 찾는 여러가지 방법을 설명하고 분석한다.
다음 특징은 커팅(cutting) 알고리즘으로 공지된 것으로 가정된다:
1. 슬랙(slack): 파일 차이를 조정하기 위해 청크에 요구된 바이트의 수. 시퀀스 s1, s2, s3을 고려하여, 2개의 시퀀스 s1s3, s2s3을 연결하여 형성한다. 이들 2개의 시퀀스에 대한 청크 Chunks1 및 Chunks2를 생성한다. Chunks1' 및 Chunks2'가 각각 Chunks1 및 Chunks2로부터의 청크 길이의 합이라고 하면, 제1 공통 서픽스(suffix)가 도달될 때까지, 바이트 내의 슬랙은 다음 공식으로 주어진다:
slack = Chunks1' - |s1| = Chunks2' - |s2
2. 평균 청크 크기 C:
객체 OA 및 OB가 공통으로 평균 크기 K인 S 세그먼트를 가질 때, 클라이언트 상에서 국부적으로 얻어질 수 있는 청크의 수는 다음과 같이 주어진다:
Figure 112005013382792-pat00002
상기 (S2)는 다음과 같이 다시 쓰여진다:
Figure 112005013382792-pat00003
그러므로, 슬랙을 최소화하는 청킹 알고리즘은 유선을 통해 보내진 바이트의 수를 최소화할 것이다. 그러므로, 예상 슬랙을 최소화하는 청킹 알고리즘을 사용 하는 것이 유리하다.
핑거프린팅 함수
모든 청킹 알고리즘은 작은 윈도우, 즉 제한된 바이트 시퀀스에 의존하는 핑거프린팅 함수 또는 해시를 사용한다. 청킹에 사용된 해시 알고리즘의 실행 시간은 이들 알고리즘이 유한 차분(순위 줄임) 최적화에 따를 때 해시 윈도우 크기에 무관하다. 그러므로, 크기가 k인 해시 윈도우의 경우에, b0, bk, 및 #[b0,b1,...,bk-1]만을 사용하여 해시 #[b1,...,bk-1,bk]를 계산하는 것이 용이해야 한다(일정 수의 단계들만을 필요로 해야 한다). 사전에 계산된 랜덤 수의 테이블에 기초하여 계산상 더욱 효율적으로 보이는 기타 해시 함수 뿐만 아니라, 라빈 다항식을 사용하는 해시 함수와 같은 다양한 해싱 함수가 이용될 수 있다.
한 예에서, 롤링 체크섬(rolling checksum)에 기초한 32비트 애들러(Adler) 해시는 핑거프린팅을 위한 해싱 함수로서 사용될 수 있다. 이 절차는 각각이 미리 계산된 16비트 랜덤 수인 256 엔트리를 갖는 고정 테이블을 사용함으로써 상당히 양호한 랜덤 해시 함수를 제공한다. 테이블은 핑거프린트된 바이트를 랜덤 16비트 수로 변환하기 위해 사용된다. 32비트 해시는 다음과 같은 절차를 감안하여 갱신되는 2개의 16비트 수 sum1과 sum2로 분할된다.
sum1+=table[bk]-table[b0]
sum2+=sum1-k*table[b0]
다른 예에서, 순환 시프팅을 갖는 64비트 랜덤 해시가 핑거프린팅을 위한 해 시 함수로서 사용될 수 있다. 순환 시프트의 주기는 해시 값의 크기에 의해 한정된다. 그러므로, 64비트 해시 값의 사용은 해시 주기를 64로 설정한다. 해시를 갱신하는 절차는 다음과 같이 주어진다.
hash=hash^((table[b0]<<ㅣ)|(table[b0]>>u))^table[bk];
hash=(hash<<ㅣ)|(hash>>63);
여기에서, ㅣ= k % 64, 및 u = 64-l
또 다른 예에서, 그외 다른 시프팅 방법이 핑거프린팅을 제공하기 위해 사용될 수 있다. 직통 순환 시프팅은 제한된 길이의 주기를 생성하고, 해시 값의 크기에 의해 한정된다. 그외 다른 순열은 더 긴 주기를 갖는다. 순환 (1 2 3 0)(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)를 갖는 핑거프린팅 해시를 계산하여, 해시 비트의 서브셋이 선정된 패턴에 부합하는지의 여부에 기초하여 커트 포인트(cut point)를 식별함으로써 결정된다. 랜덤 해시 값으로, 이 패턴은 또한 0일 수 있고, 관련 서브셋은 또한 해시의 프리픽스(prefix)일 수 있다. 기본 구성에서, 이것은 다음과 같은 형태의 술어로 다시 표현된다.
CutPoint(hash)≡0==(hash&((1<<c)-1)),
여기에서, c는 부합될 비트의 수이다.
랜덤 해시 함수를 감안한 일치 확률은 2-c이기 때문에, 평균 청크 크기 C=2c이 된다. 그러나, 최소도 아니고 최대도 아닌 청크 크기는 이 절차에 의해 결정된다. 최소 청크 길이 m이 부과되면, 평균 청크 크기는 다음과 같다.
C = m + 2c
예상된 슬랙의 대략적인 평가는 스트림 s1s3 및 s2s3을 고려하여 얻어진다. s1 및 s2에서의 커트 포인트는 임의의 자리에서 나타날 수 있다. 평균 청크 길이가 C=m+2c이기 때문에, 약 (2c/C)2인 s1 및 s2에서의 최종 커트 포인트는 거리 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인 패턴의 시퀀스인 필터의 고정화, 및 필터에 대한 핑거프린팅 해시 시퀀스의 일치화에 기초한다. 필터가 필터의 프리픽스 및 서픽스에 일치하는 해시의 시퀀스를 허용하지 않을 때, 임의의 2개의 일치 간의 최소 거리가 최소한 m이 되어야 한다는 것이 암시될 수 있다. 예시적인 필터는 제1 m-1 패턴을
0 ! = (hash & ((1<<c)-1))
로 설정하고, 최종 패턴을
0 = = (hash & ((1<<c)-1))
로 설정함으로써 종래 기술에서 사용된 CutPoint 술어로부터 얻어질 수 있다.
이 필터의 일치 확률은 (1-p)m-1p로 주어지고, p는 2-c이다. 예상 청크 길이가 필터의 일치 확률의 역으로 주어지는 것을 계산할 수 있으므로(필터가 프리픽스 및 서픽스에 일치하는 시퀀스를 허용하지 않는 것이 요구됨), 예시적인 필터의 예상 길이는 (1-p)-m+1p-1이다. 이 길이는 p를 p=1/m로 설정할 때 최소화되고, 약 (e*m)으로 된다. 평균 슬랙은 본 분야에 숙련된 기술자들에 의해 검증될 수 있는 바와 같이 약 0.8 주위를 맴돈다. 이 방법의 대안적인 실시예는 직접 미가공 입력을 대상으로 하는 패턴을 사용하고, 롤링 해시를 사용하지 않는다.
로컬 최대치에서의 청킹(새로운 기술)
로컬 최대치에서의 청킹은 한정된 수평거리 내에서 최대인 위치를 커트 포인 트로서 선택하는 것에 기초한다. 다음에서, 우리는 수평거리 값으로 h를 사용할 것이다. 오프셋 offset+1,...,offset+h 뿐만 아니라, offset-h,...,offset-1에서의 해시값이 모두 offset에서의 해시 값보다 작으면, 위치 offset에서의 해시가 h-로컬 최대치라고 하자. 즉, 좌측으로 h 나아가고 우측으로 h 나아가는 모든 위치는 더 작은 해시값을 갖는다. 본 분야에 숙련된 기술자들은 로컬 최대치가 로컬 최소치 또는 ("중앙 해시값에 가장 가까운 값"과 같은) 임의의 다른 메트릭 기반의 비교에 의해 대체될 수 있다는 것을 알 수 있을 것이다.
크기 n인 객체에 대한 로컬 최대치 세트는 로컬 최대치 세트를 계산하는 비용이 독립적 청킹에 기초하여 커트-포인트를 계산하는 비용에 가깝거나 그 비용과 동일하도록 2·n 연산으로 한정된 횟수로 계산될 수 있다. 로컬 최대치를 사용하여 생성된 청크는 항상 h에 대응하는 최소 크기를 갖고, 약 2h+1의 평균 크기를 갖는다. CutPoint 절차는 도 8 및 9에 도시되고, 다음과 같이 아래에 설명된다.
1. 엔트리가 기록 {isMax=false, hash=0, offset=0}으로 초기화되는
길이 h의 어레이 M을 할당한다. 각 필드 내의 제1 엔트리(isMax)는 후보가
로컬 최대치가 될 수 있는 지를 나타낸다. 제2 필드 엔트리(hash)는 그 엔
트리와 관련된 해시 값을 나타내고, 0으로(또는 대안적으로 최대 가능 해시
값으로) 초기화된다. 엔트리 내의 최종 필드(offset)는 핑거프린트된 객체
내로의 후보에 대한 바이트의 절대 오프셋을 나타낸다.
2. 어레이 M 내로의 오프셋 최소치 및 최대치를 0으로 초기화한다.
이들 변수는 현재 사용되고 있는 어레이의 최초 및 최종 요소를 가리킨다.
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}으로 설정되고, 단계 811로 계속되어, 계산된 결과가 복귀된
다.
단계 805에서의 조건이 거짓이면, 실행은 단계 808로 계속되어, 절차
는 M[min].hash=hash인지 확인한다. 이 조건이 참이면, 실행은 단계 807로
계속된다.
단계 808에서의 조건이 거짓이면, 실행은 단계 809로 계속되어, 절차
는 min=max인지 확인한다. 이 조건이 참이면, 실행은 단계 810으로 계속되
어, M[min]이 {isMax=true, hash=hash, offset=offset}으로 설정된다. 그
다음, 실행은 단계 812로 계속되어, 계산된 결과가 복귀된다.
단계 809에서의 조건이 거짓이면, 실행은 단계 812로 계속되어, min이
(min+1) % h로 설정된다. 그 다음, 실행은 다시 단계 805로 계속된다.
4. CutPoint(hash, offset)이 참을 돌려보낼 때는, 위치 offset-h-1
에서의 오프셋이 새로운 커트 포인트인 경우일 수 있다.
로컬 최대치 절차의 분석
n 바이트를 갖는 객체는 기껏해야 n개의 엔트리가 주어진 객체에 대해 삽입되도록 CutPoint를 n번 호출함으로써 프로세스된다. 삭제하기 위한 엔트리가 n개보다 많지 않게 있도록 단계 805에서 시작하는 루프가 반복될 때마다 하나의 엔트리가 제거된다. 그러므로, 프로세싱 루프는 엔트리마다 한번 시작될 수 있고, 결합된 반복 수는 기껏해야 n일 수 있다. 이것은 CutPoint에 대한 각 호출시의 루프 내의 평균 단계 수가 2보다 약간 작고, 커트 포인트를 계산하기 위한 단계 수가 h에 무관하다는 것을 나타낸다.
요소들로부터의 해시 값이 최소와 최대 사이에 내림차순 체인을 형성하기 때문에, 최소와 최대 사이의 평균 거리(|min-max|% h)가 h의 자연 대수에 의해 주어진다는 것을 알 것이다. M 내의 2개의 인접한 엔트리들 사이에 포함되지 않은 오프셋은 2개의 엔트리보다 작거나 동일한 해시 값을 갖는다. 그러한 체인의 평균 길이는 반복 방정식 f(n) = 1 + 1/n * ∑k < n f(k)에 의해 주어진다. 길이 n인 간격 상의 가장 긴 내림차순 체인의 평균 길이는 가장 큰 요소의 위치에서부터 시작하는 가장 긴 내림차순 체인의 평균 길이보다 1 크고, 가장 큰 요소는 1/n의 확률로 임 의의 위치에서 발견될 수 있다. 반복 관계식은 Hn을 방정식에 대입하고 n에 귀납법을 실행함으로써 유효하게 될 수 있는 조화 수 Hn = 1 + 1/2 + 1/3 + 1/4 +...+ 1/n에 대응하는 해를 갖는다. Hn은 n의 자연 대수에 비례한다. 그러므로, 어레이 M이 h의 크기로 할당되지만, 크기 ln(h)의 작은 소수부만이 언제든지 항상 사용된다.
모듈러스 h를 갖는 최소치와 최대치의 계산은 수들 사이의 거리가 h 내에 유지되는 한은 사용된 M 간격의 임의의 증가를 허용한다.
M에 대한 초기값의 선택은 커트 포인트가 제1 h 오프셋 내에서 발생될 수 있다는 것을 나타낸다. 알고리즘은 이들 제1 h 오프셋에서의 커트 포인트를 방지하도록 적응될 수 있다.
이 절차에 의해 발생된 청크의 예상 크기는 약 2h+1이다. 우리는 주어진 위치가 커트 포인트일 확률로부터 이 수를 얻는다. 해시가 m개의 서로다른 가능한 값을 갖는다고 하자. 그러면, 확률은 다음에 의해 결정된다.
0 ≤ k < m 1/m (k/m)2h
적분 ∫0 ≤ x < m 1/m (x/m)2h dx = 1/(2h+1)을 사용한 근사는 m이 충분히 클 때의 확률을 나타낸다.
확률은 먼저 합을 다음과 같이 간단하게 함으로써 더욱 정확하게 계산될 수 있고,
(1/m)2h+10 ≤ k < m k2h,
이것은 베르누이 수 Bk를 사용하면 다음으로 확장된다.
(1/m)2h+1 1/(2h+1)∑0 ≤ k < 2h (2h+1)!/k!(2h+1-k)! Bk m2h+1-k
비제로인 유일한 기수 베르누이 수는 -1/2의 대응 값을 갖는 B1이다. 우수 베르누이 수는 다음 방정식을 충족한다.
H (2n) = (-1)n-1 22n-1 л2n B2n/(2n)!
좌측은 더욱 적당한 n 값의 경우에 1에 매우 가까운 무한 합 1 + (1/2)2n + (1/3)2n + ...을 나타낸다. m이 h보다 훨씬 크면, 제1항을 제외한 모든 항은 우리가 적분으로 알고 있는 바와 같이, 무시될 수 있다. 그것들은 hk-1/mk에 비례하는 항으로 곱해진 0과 1 사이의 상수에 의해 주어진다. 제1항(B0=1)은 1/(2h+1)로 간략하게 되고, 제2항은 -1/(2m)으로, 제3항은 h/(6m)2으로 간략하게 된다.
예상 슬랙의 대략적인 평가를 위해 스트림 s1s3 및 s2s3를 고려한다. s1 및 s2 내의 최종 커트 포인트는 임의의 자리에서 나타날 수 있다. 평균 청크 길이가 약 2h+1이기 때문에, 최종 커트 포인트의 약 1/4은 s1 및 s2 내의 거리 h 내에 있을 것이다. 그것들은 약 7/8 h에서의 커트 포인트에 기여할 것이다. 그 경우의 다른 1/2에서, 하나의 커트 포인트는 거리 h 내에 있을 것이고, 다른 하나는 거리 h를 초과할 것이다. 이들은 약 3/4 h에서의 커트 포인트에 대해 기여한다. s1 및 s2 내의 최종 커트 포인트의 나머지 1/4은 h보다 큰 거리에 있을 것이다. 그러므로, 예상 슬랙은 약 1/4 * 7/8 + 1/2 * 3/4 + 1/4 * 1/4 = 0.66이 될 것이다.
그러므로, 우리의 독립적인 청킹 방식에 대한 예상 슬랙은 종래 기술(0.85*C)보다 개선된 0.66*C이다.
기껏해야 h, 또는 평균적으로 lnh에 비례하는 공간을 사용하면서 평균적으로 더 적은 명령어의 실행을 필요로 하는 커트 포인트를 식별하는 다른 방식이 있다. 상기 절차는 길이 n인 스트림 내의 모든 위치 0...n-1마다 엔트리를 삽입한다. 대안적인 절차의 기본적인 아이디어는 길이 h인 간격 내에서 오름차순 체인의 요소들에 부딪칠 때만 갱신하기 위한 것이다. 우리는 평균적으로 간격 당 lnh의 그러한 갱신이 있을 수 있을 뿐이다는 것을 알았다. 더욱이, 길이 h인 2개의 연속 간격 내의 로컬 최대치를 비교함으로써, 2개의 로컬 최대치 각각이 또한 h 로컬 최대치일 수 있는지 판정할 수 있다. 대안적인 절차가 갖는 한가지 특성이 있는데; 그 대안적인 절차는 크기 h인 블록 내의 스트림을 트래버스(traverse)함으로써 오름차순 체인을 계산하는 것을 필요로 하고, 각각의 블록은 역방향으로 트래버스된다.
대안적인 절차(도 10 및 11 참조)에 있어서, 간략하게 나타내기 위해, 해시의 스트림이 시퀀스로서 제공된다고 하자. 서브루틴 CutPoint는 (도면에서 "수평"으로 확장되는) 길이 h인 각각의 서브시퀀스마다 호출된다. 그것은 커트 포인트로 결정되는 0 또는 1 오프셋을 돌려 보낸다. 단지 Insert에 대한 호출의 ln(h)만이 제1 테스트를 통과할 것이다.
A로의 삽입은 지금까지 A 내에서 가장 큰 엔트리에 대한 오프셋에서의 해시 값을 테스트함으로써 달성된다.
A[k] 및 B[k].isMax를 갱신하는 루프는 평균적으로 하나의 테스트만이 루프 본체 내에서 실행되도록 최적화될 수 있다. B[l].hash <= A[k].hash 및 B[l].isMax의 경우는 2개의 루프에서 처리되는데, 첫번째는 그때까지 B[l].hash에 대한 해시값이 더 작지 않은지 확인하고, 두번째는 A[k]를 갱신한다. 다른 경우는 B[l].isMax에 대한 갱신 전에 A[k]만을 갱신하는 루프를 사용하여 처리될 수 있다.
CutPoint에 대한 각각의 호출은 평균적으로 A로의 lnh 메모리 기입을 필요로 하고, 최대치 찾기에 관련된 h + lnh 비교를 올리는 루프를 갖는다. A[k].isMax에 대한 최종 갱신은 기껏해야 log lnh 단계를 평균해서 인덱스 0부터 시작하여 B를 트래버스하거나 또는 이진 검색에 의해 실행될 수 있다. CutPoint에 대한 각각의 호출은 또한 갱신되어 있는 윈도우 내의 최종 위치에서 롤링 해시의 재계산을 필요로 한다. 이것은 롤링 해시 윈도우의 크기만큼 많은 단계를 갖는다.
개선된 청킹 알고리즘의 관찰된 이점
최소 청크 크기는 상술된 로컬 최대치 및 필터 방법 내로 삽입된다. 종래의 구현은 최소 청크 크기에 추가 파라미터가 따로 제공되는 것을 필요로 한다.
로컬 최대치(또는 수학적) 기반의 방법은 네트워크를 통해 더 압축되게 변환 하는 측정가능한 더 양호한 슬랙 평가치를 생성한다. 필터 방법은 또한 종래의 방법보다 더 양호한 슬랙 성능을 생성한다.
두가지 새로운 방법은 커트 포인트의 집약 특성을 갖는다. 수평거리보다 큰 s3 내의 모든 커트 포인트는 스트림 s1s3 및 s2s3에 대한 커트 포인트가 될 수 있다. (즉, 스트림 s1s3을 고려하여, p가 위치≥|s1|+ 수평거리이고, p가 s1s3 내의 커트 포인트이면, p는 또한 s2s3 내의 커트 포인트이다. 동일한 특성은 다른 방향으로(대칭으로) 유지되어, p가 s2s3 내의 커트 포인트이면, p는 또한 s1s3 내의 커트 포인트이다. 이것은 소정의 최소 청크 크기를 초과하도록 커트하는 요구사항이 불리하게 간섭할 수 있는 종래 방법의 경우가 아니다.
대안적인 수학적 함수
상술된 청킹 절차는 로컬 최대치 계산을 사용하여 커트 포인트를 배치하는 수단을 설명하지만, 본 발명은 그것에 제한되지 않는다. 임의의 수학적 함수가 잠재적 커트 포인트를 조사하기 위해 준비될 수 있다. 각각의 잠재적 커트 포인트는 고려된 커트 포인트에 대한 수평 윈도우 내에 위치한 해시 값을 평가함으로써 평가된다. 해시 값의 계산은 소정의 다른 수학적 또는 통계적 함수뿐만 아니라, 수평거리 내의 최대 값 배치, 수평거리 내의 최소값 배치, 해시 값들 간의 차이 평가, 해시 값들의 차이 평가, 및 임의의 상수에 대한 결과의 비교 중에서 최소한 하나를 포함할 수 있는 수학적 함수에 의해 달성된다.
로컬 최대치에 대해 상술된 특정의 수학적 함수는 이진 술어 "_ > _"이다. p 가 객체 내의 오프셋인 경우에, p는 모든 k에 대해 hashp > hashk이면 커트 포인트로서 선택되는데, 여기에서 p-수평거리 ≤ k < p, 또는 p < k ≤ p+수평거리이다. 그러나, 이진 술어 > 는 본 발명의 정신을 벗어나지 않고 임의의 다른 수학적 함수로 대체될 수 있다.
상기 명세서, 예 및 데이터는 본 발명의 구성요소의 사용 및 제조에 관한 완전한 설명을 제공한다. 본 발명의 많은 실시예가 본 발명의 정신 및 범위를 벗어나지 않고서 행해질 수 있기 때문에, 본 발명은 이후 첨부된 청구범위 내에 속한다.

Claims (77)

  1. 로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템으로서, 상기 시스템은,
    상기 네트워크를 통한 객체들의 갱신을 용이하게 하도록 배치된 원격 장치; 및
    상기 네트워크를 통한 객체들의 갱신을 용이하게 하기 위해 상기 원격 장치와 통신하도록 동작 가능한 로컬 장치를 포함하고,
    상기 원격 장치는,
    상기 네트워크를 통한 통신을 용이하게 하도록 배치된 제1 네트워크 연결 장치;
    제1 객체를 저장하기 위해 배치된 제1 데이터 저장소;및
    상기 제1 데이터 저장소 및 상기 제1 네트워크 연결 장치와 연결된 제1 프로세서를 포함하고,
    상기 제1 프로세서는,
    상기 원격 장치 상의 제1 객체의 모든 바이트 오프셋(byte offsets)에서 제1 핑거프린트(fingerprint) 함수를 계산하고;
    상기 제1 핑거프린트 함수에 기초하여 상기 원격 장치 상의 상기 제1 객체를 청킹(chunking)하고;
    상기 원격 장치 상의 상기 제1 객체와 관련된 각 청크에 대한 원격 서명(signature)을 계산하고;
    상기 원격 장치 상의 원격 서명 및 청크 길이 리스트를 생성하고 - 상기 원격 서명 및 청크 길이 리스트는 상기 제1 객체와 관련됨-;
    상기 원격 장치를 이용하여 상기 원격 서명 및 청크 길이 리스트를 상기 네트워크로 전송하고;
    적어도 하나의 갱신된 객체 청크를 전송하라는 상기 네트워크로부터의 요청을 상기 원격 장치를 이용하여 수신하며;
    상기 네트워크를 통해 상기 적어도 하나의 갱신된 객체 청크를 전송하도록 구성되고,
    상기 로컬 장치는,
    상기 네트워크를 통한 통신을 용이하게 하도록 배치된 제2 네트워크 연결 장치;
    제2 객체를 저장하기 위해 배치된 제2 데이터 저장소;및
    상기 제2 데이터 저장소 및 상기 제2 네트워크 연결 장치에 연결된 제2 프로세서를 포함하고,
    상기 제2 프로세서는,
    상기 로컬 장치 상의 상기 제2 객체의 모든 바이트 오프셋에서 제2 핑거프린트 함수를 계산하고 - 상기 제1 및 제2 객체는 서로 관련되어 있고, 상기 제1 핑거프린트 함수는 상기 제2 핑거프린트 함수에 매칭됨-;
    상기 제2 핑거프린트 함수에 기초하여 상기 로컬 장치 상의 상기 제2 객체를 청킹하고 - 상기 원격 장치 상의 상기 제1 객체의 청킹은 상기 로컬 장치 상의 상기 제2 객체의 청킹에 매칭됨-;
    상기 로컬 장치 상의 상기 제2 객체와 관련된 각 청크에 대한 로컬 서명을 계산하고 - 상기 로컬 서명의 계산은 상기 원격 서명의 계산에 매칭됨-;
    상기 로컬 장치 상의 로컬 서명 및 청크 길이 리스트를 생성하고 - 상기 로컬 서명 및 청크 길이 리스트는 상기 제2 객체와 관련됨-;
    상기 로컬 장치로의 상기 원격 서명 및 청크 길이 리스트의 전송을 위하여 대역폭 사용이 최소화되도록 상기 네트워크를 통한 상기 원격 장치에서 상기 로컬 장치로의 상기 원격 서명 및 청크 길이 리스트의 청크된 전송을 협상하고(negotiate);
    상기 로컬 서명 및 청크 길이 리스트를 상기 로컬 장치 상의 상기 원격 서명 및 청크 길이 리스트와 비교함으로써 상기 제1 객체와 상기 제2 객체간의 차이들을 식별하고;
    상기 제1 객체와 상기 제2 객체 간의 차이들이 상기 로컬 장치에 의해 식별될 때 상기 원격 장치로부터 적어도 하나의 갱신된 객체 청크의 전송을 요청하고;
    상기 원격 장치로부터 상기 적어도 하나의 갱신된 객체 청크를 수신하며;
    상기 로컬 장치 상의 상기 제1 객체의 복사본을 상기 적어도 하나의 갱신된 객체 청크로 어셈블링(assembling)하도록 구성된,
    로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템.
  2. 제1항에 있어서,
    상기 로컬 장치 상의 상기 제1 객체와 상기 제2 객체간의 차이들을 식별하는 동작은,
    상기 원격 서명 및 청크 길이 리스트를 상기 로컬 서명 및 청크 길이 리스트와 비교하고;
    상기 원격 서명 및 청크 길이 리스트와 상기 로컬 서명 및 청크 길이 리스트 사이의 적어도 하나의 차이를 식별하고;
    상기 적어도 하나의 차이를 상기 원격 서명 및 청크 길이 리스트에 맵핑하고;
    상기 적어도 하나의 차이와 상기 원격 서명 및 청크 길이 리스트 간의 상기 맵핑으로부터 상기 적어도 하나의 갱신된 객체 청크를 식별하는 동작을 포함하는,
    로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템.
  3. 제1항에 있어서,
    상기 제1 프로세서는,
    상기 원격 서명 및 청크 길이 리스트를 청킹하여 청크된 원격 서명 및 청크 길이 리스트를 제공하고;
    상기 청크된 원격 서명 및 청크 길이 리스트와 관련된 각 청크에 대한 재귀적 원격 서명을 계산하고;
    상기 재귀적 원격 서명들을 이용하여 재귀적 원격 서명 및 청크 길이 리스트를 생성하며;
    상기 로컬 장치 상의 상기 로컬 서명 및 청크 길이 리스트를 청킹 - 상기 로컬 서명 및 청크 길이 리스트의 청킹은 상기 원격 서명 및 청크 길이 리스트의 청킹에 매칭됨 - 하도록 더 구성되고,
    상기 제2 프로세서는,
    상기 청크된 로컬 서명 및 청크 길이 리스트와 관련된 각 청크에 대한 재귀적 로컬 서명을 계산하고 - 상기 재귀적 로컬 서명의 계산은 상기 재귀적 원격 서명의 계산에 매칭됨 -;
    상기 재귀적 로컬 서명과 상기 청크된 로컬 서명 및 청크 길이 리스트를 이용하여 상기 로컬 장치 상의 재귀적 로컬 서명 및 청크 길이 리스트를 생성하고 - 상기 재귀적 로컬 서명 및 청크 길이 리스트의 생성은 상기 재귀적 원격 서명 및 청크 길이 리스트의 생성에 매칭됨-;
    상기 로컬 장치로의 상기 재귀적 원격 서명 및 청크 길이 리스트의 전송을 위하여 대역폭 사용이 최소화되도록 상기 네트워크를 통한 상기 원격 장치에서 상기 로컬 장치로의 상기 재귀적 원격 서명 및 청크 길이 리스트의 전송을 협상하고;
    상기 로컬 장치 상에서의 상기 재귀적 로컬 서명 및 청크 길이 리스트와 상기 재귀적 원격 서명 및 청크 길이 리스트 간의 차이들을 식별하며;
    상기 로컬 장치에 의해 상기 재귀적 원격 서명 및 청크 길이 리스트와 상기 재귀적 로컬 서명 및 청크 길이 리스트간의 차이들이 식별될 때 상기 원격 장치로부터 적어도 하나의 갱신된 서명 청크의 전송을 요청하도록 더 구성된,
    로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템.
  4. 제3항에 있어서,
    상기 로컬 장치 상의 상기 재귀적 로컬 서명 및 청크 길이 리스트와 상기 재귀적 원격 서명 및 청크 길이 리스트 간의 차이들을 식별하는 동작은,
    상기 재귀적 원격 서명 및 청크 길이 리스트를 상기 재귀적 로컬 서명 및 청크 길이 리스트와 비교하고;
    상기 재귀적 원격 서명 및 청크 길이 리스트와 상기 재귀적 로컬 서명 및 청크 길이 리스트 간의 차이와 관련된 적어도 하나의 서명 청크를 식별하고;
    상기 적어도 하나의 서명 청크를 상기 원격 서명 및 청크 길이 리스트에 맵핑하고;
    상기 적어도 하나의 서명 청크와 상기 원격 서명 및 청크 길이 리스트 간의 상기 맵핑으로부터 상기 적어도 하나의 갱신된 서명 청크를 식별하는 동작을 더 포함하는,
    로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템.
  5. 제1항에 있어서,
    상기 네트워크를 통해 상기 원격 장치에서 상기 로컬 장치로의 상기 원격 서명 및 청크 길이 리스트의 상기 청크된 전송을 협상하는 동작은,
    상기 제1 객체와 관련된 데이터 크기, 상기 제2 객체와 관련된 데이터 크기, 상기 원격 장치와 관련된 환경 제약, 상기 로컬 장치와 관련된 환경 제약, 상기 네트워크의 특성들, 상기 제1 객체와 관련된 이용 모델 및 상기 제2 객체와 관련된 이용 모델, 상기 제1 객체와 관련된 청크 서명들의 개수, 및 상기 청크된 원격 서명 및 청크 길이 리스트와 관련된 청크 서명들의 개수를 포함하는 그룹 중 적어도 하나에 기초하여 재귀적 프로세싱을 위한 반복(iterations) 횟수를 결정하는 동작을 더 포함하는,
    로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템.
  6. 제5항에 있어서,
    상기 제1 프로세서 및 상기 제2 프로세서는 서명 및 청크 길이 리스트를 프로세싱하는 재귀적 프로시저를 더 실행하도록 구성되고,
    상기 재귀적 프로시저는,
    상기 서명 및 청크 길이 리스트를 청킹하여 청크된 서명 및 청크 길이 리스트를 제공하고;
    상기 청크된 서명 및 청크 길이 리스트와 관련된 각 청크에 대한 재귀적 서명을 계산하고;
    상기 재귀적 서명과 상기 청크된 서명 및 청크 길이 리스트를 이용하여, 재귀적 서명 및 청크 길이 리스트를 생성하고;
    재귀적 프로세싱을 위해 추가적인 반복이 요구될 때 상기 서명 및 청크 길이 리스트를 상기 재귀적 서명 및 청크 길이 리스트로 초기화하며;
    상기 재귀적 프로시저가 상기 반복 횟수를 완료했을 때 상기 재귀적 서명 및 청크 길이 리스트를 반환하는 동작을 포함하고,
    상기 제1 프로세서는 상기 원격 서명 및 청크 길이 리스트를 상기 서명 및 청크 길이 리스트로서 상기 재귀적 프로시저로 보내고 상기 재귀적 프로시저로부터 상기 재귀적 원격 서명 및 청크 길이 리스트를 반환함으로써, 상기 원격 서명 및 청크 길이 리스트를 상기 원격 장치 상의 상기 재귀적 프로시저로 프로세싱하는 동작을 더 실행하도록 구성되고,
    상기 제2 프로세서는 상기 로컬 서명 및 청크 길이 리스트를 상기 서명 및 청크 길이 리스트로서 상기 재귀적 프로시저에 보내고 상기 재귀적 프로시저로부터 상기 재귀적 로컬 서명 및 청크 길이 리스트를 반환함으로써, 상기 로컬 서명 및 청크 길이 리스트를 상기 로컬 장치 상의 상기 재귀적 프로시저로 프로세싱하는 동작을 더 수행하도록 구성된,
    로컬 장치와 원격 장치 사이에서 네트워크를 통해 객체들을 갱신하는 시스템.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
KR1020050021145A 2004-04-15 2005-03-14 네트워크를 통한 객체 갱신 시스템 KR100922674B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20060043620A KR20060043620A (ko) 2006-05-15
KR100922674B1 true KR100922674B1 (ko) 2009-10-19

Family

ID=34939140

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050021145A KR100922674B1 (ko) 2004-04-15 2005-03-14 네트워크를 통한 객체 갱신 시스템

Country Status (18)

Country Link
US (1) US7555531B2 (ko)
EP (2) EP2444909A2 (ko)
JP (1) JP4796315B2 (ko)
KR (1) KR100922674B1 (ko)
CN (2) CN1684464B (ko)
AU (1) AU2005201386B2 (ko)
BR (1) BRPI0501166A (ko)
CA (1) CA2500894C (ko)
CO (1) CO5680121A1 (ko)
IL (1) IL167467A (ko)
MX (1) MXPA05002949A (ko)
MY (1) MY144798A (ko)
NO (1) NO20051344L (ko)
NZ (1) NZ538839A (ko)
RU (1) RU2382511C2 (ko)
SG (1) SG116576A1 (ko)
TW (1) TWI360336B (ko)
ZA (1) ZA200502115B (ko)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20060047855A1 (en) * 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
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
US8870639B2 (en) 2004-06-28 2014-10-28 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US8376855B2 (en) 2004-06-28 2013-02-19 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
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
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
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
JP2008547122A (ja) 2005-06-20 2008-12-25 エアプレイ ネットワーク インコーポレイテッド サービス提供方法、データ受信方法、データ提供システム、クライアント装置及びサーバ装置
US20070070999A1 (en) * 2005-08-02 2007-03-29 Black Jeffrey T Synchronization of historical data without retransmission
US9511287B2 (en) 2005-10-03 2016-12-06 Winview, Inc. Cellular phone games based upon television archives
US8705195B2 (en) 2006-04-12 2014-04-22 Winview, Inc. Synchronized gaming and programming
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
US9919210B2 (en) 2005-10-03 2018-03-20 Winview, Inc. Synchronized gaming and programming
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
US9056251B2 (en) 2006-01-10 2015-06-16 Winview, Inc. Method of and system for conducting multiple contests 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
EP2021926A4 (en) 2006-05-05 2009-07-15 Hybir Inc SYSTEM FOR SAVING INCREMENTAL AND COMPLETE COMPUTER-BASED FILE FILES BASED ON THE GROUP, PROCESS AND APPARATUS
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
US7619545B2 (en) 2007-03-12 2009-11-17 Citrix Systems, Inc. Systems and methods of using application and protocol specific parsing for compression
US7532134B2 (en) 2007-03-12 2009-05-12 Citrix Systems, Inc. Systems and methods for sharing compression histories between multiple devices
US8255570B2 (en) 2007-03-12 2012-08-28 Citrix Systems, Inc. Systems and methods of compression history expiration and synchronization
US7460038B2 (en) 2007-03-12 2008-12-02 Citrix Systems, Inc. Systems and methods of clustered sharing of compression histories
US7827237B2 (en) 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
EP2677714B1 (en) * 2007-03-12 2015-04-22 Citrix Systems, Inc. Systems and methods for using compression histories to improve network performance
US7865585B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
AU2012203797B2 (en) * 2007-03-12 2015-05-07 Citrix Systems, Inc. Systems and methods for using compression histories to improve network performance
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
US8375396B2 (en) * 2008-01-31 2013-02-12 Hewlett-Packard Development Company, L.P. Backup procedure with transparent load balancing
US8200969B2 (en) * 2008-01-31 2012-06-12 Hewlett-Packard Development Company, L.P. Data verification by challenge
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
WO2010108165A1 (en) * 2009-03-20 2010-09-23 The Trustees Of Princeton University 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
US8832375B2 (en) 2012-05-24 2014-09-09 International Business Machines Corporation Object type aware byte caching
US8856445B2 (en) 2012-05-24 2014-10-07 International Business Machines Corporation Byte caching with chunk sizes based on data type
CN103580982B (zh) * 2012-07-19 2017-12-15 腾讯科技(深圳)有限公司 代收电子邮件的方法、装置及系统
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 华为技术有限公司 一种数据压缩方法及终端
CN107468240B (zh) * 2017-09-18 2024-05-07 山东正心医疗科技有限公司 手持式心电监护系统
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 浙江大华技术股份有限公司 轨迹相似度度量方法、数据处理设备及存储设备
US11307841B2 (en) * 2019-07-30 2022-04-19 Sony Interactive Entertainment LLC Application patching using variable-sized units
US11449325B2 (en) 2019-07-30 2022-09-20 Sony Interactive Entertainment LLC Data change detection using variable-sized data chunks
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协议的差异图像显示系统
US11681659B2 (en) * 2021-05-21 2023-06-20 Red Hat, Inc. Hybrid file compression model

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003042867A2 (en) 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Fingerprint database updating method, client and server
US6574657B1 (en) 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
KR20030051219A (ko) * 2001-12-12 2003-06-25 마이크로소프트 코포레이션 적응 통신 우선 순위화 및 루팅 시스템의 선호도 획득,동작 검사, 및 학습 및 결정 정책 안내를 위한 제어 및디스플레이

Family Cites Families (42)

* Cited by examiner, † Cited by third party
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
US5990810A (en) 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating 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
CN1125568C (zh) 1996-01-22 2003-10-22 松下电器产业株式会社 预测图像解码方法以及预测图像编码方法
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
WO1998035306A1 (en) 1997-02-11 1998-08-13 Connected Corporation File comparison for data backup and file synchronization
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
IL142564A0 (en) * 1998-10-16 2002-03-10 Computer Ass Think Inc Method and system for an extensible macro language
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
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
WO2001098951A1 (en) * 2000-06-22 2001-12-27 Synchrologic, Inc. A 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
US7058941B1 (en) 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
EP1337917A4 (en) 2000-11-17 2009-04-08 Hewlett Packard Development Co SYSTEM AND METHOD FOR UPDATING AND DISTRIBUTING INFORMATION
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
US7370120B2 (en) 2001-12-07 2008-05-06 Propel Software Corporation Method and system for reducing network latency in data communication
US6947604B2 (en) 2002-01-17 2005-09-20 Intel Corporation Method and hardware to implement two-dimensional compression
US7188160B2 (en) * 2002-01-22 2007-03-06 Ericsson Ab Method and apparatus for updating network device configuration information in a network management system
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
US20050256974A1 (en) 2004-05-13 2005-11-17 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a remote device
US20050262167A1 (en) 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
JP2008522254A (ja) 2004-11-08 2008-06-26 イノパス・ソフトウェアー・インコーポレーテッド スタティック・ファイル・システムの差異検出および更新
US7640363B2 (en) 2005-02-16 2009-12-29 Microsoft Corporation Applications for remote differential compression

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574657B1 (en) 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
WO2003042867A2 (en) 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Fingerprint database updating method, client and server
KR20030051219A (ko) * 2001-12-12 2003-06-25 마이크로소프트 코포레이션 적응 통신 우선 순위화 및 루팅 시스템의 선호도 획득,동작 검사, 및 학습 및 결정 정책 안내를 위한 제어 및디스플레이

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Athicha Muthitacharoen, Benjie Chen, and David Mazieres, "A Low-bandwidth Network File System," In the Proceedings of the 18th ACM Symposium on Operating Systems Principles, Pages: 174 - 187

Also Published As

Publication number Publication date
CA2500894A1 (en) 2005-10-15
IL167467A (en) 2010-11-30
CN102170455A (zh) 2011-08-31
MY144798A (en) 2011-11-15
RU2382511C2 (ru) 2010-02-20
CO5680121A1 (es) 2006-09-29
MXPA05002949A (es) 2005-10-19
TWI360336B (en) 2012-03-11
CA2500894C (en) 2013-07-02
RU2005105759A (ru) 2006-08-10
NO20051344D0 (no) 2005-03-15
NO20051344L (no) 2005-10-17
TW200537881A (en) 2005-11-16
EP1587007A2 (en) 2005-10-19
CN1684464B (zh) 2011-07-27
US7555531B2 (en) 2009-06-30
CN102170455B (zh) 2015-12-16
AU2005201386A1 (en) 2005-10-27
AU2005201386B2 (en) 2010-06-17
NZ538839A (en) 2007-07-27
JP2005302004A (ja) 2005-10-27
SG116576A1 (en) 2005-11-28
US20050235043A1 (en) 2005-10-20
KR20060043620A (ko) 2006-05-15
JP4796315B2 (ja) 2011-10-19
CN1684464A (zh) 2005-10-19
EP1587007A3 (en) 2007-04-18
ZA200502115B (en) 2007-08-29
BRPI0501166A (pt) 2005-12-06
EP2444909A2 (en) 2012-04-25

Similar Documents

Publication Publication Date Title
KR100922674B1 (ko) 네트워크를 통한 객체 갱신 시스템
US8117173B2 (en) Efficient chunking algorithm
KR101201031B1 (ko) 원격 차등 압축을 위해 후보 객체들을 검색하기 위한 효과적인 알고리즘
US20050262167A1 (en) Efficient algorithm and protocol for remote differential compression on a local device
US7640363B2 (en) Applications for remote differential compression
US20050256974A1 (en) Efficient algorithm and protocol for remote differential compression on a remote device
US6636872B1 (en) Data file synchronization
CN105912268B (zh) 一种基于自匹配特征的分布式重复数据删除方法及其装置
US10339124B2 (en) Data fingerprint strengthening
CN113282540A (zh) 一种云对象存储同步方法、装置、计算机设备及存储介质
Viji et al. Comparative analysis for content defined chunking algorithms in data deduplication
WO2023000915A1 (en) Method and apparatus for replicating a target file between devices
US20170048303A1 (en) On the fly statistical delta differencing engine
Riza et al. Base-Delta Dynamic Block Length and Optimization on File Compression
US20170048302A1 (en) Static statistical delta differencing engine
Saranya et al. Data Deduplication in Cloud by Chunking

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130927

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 11