KR101541146B1 - 다수의 선택 기준을 이용하는 데이터 관리 방법들 및 시스템들 - Google Patents

다수의 선택 기준을 이용하는 데이터 관리 방법들 및 시스템들 Download PDF

Info

Publication number
KR101541146B1
KR101541146B1 KR1020087021627A KR20087021627A KR101541146B1 KR 101541146 B1 KR101541146 B1 KR 101541146B1 KR 1020087021627 A KR1020087021627 A KR 1020087021627A KR 20087021627 A KR20087021627 A KR 20087021627A KR 101541146 B1 KR101541146 B1 KR 101541146B1
Authority
KR
South Korea
Prior art keywords
data
function
selection function
chunk
window
Prior art date
Application number
KR1020087021627A
Other languages
English (en)
Other versions
KR20090094055A (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 KR20090094055A publication Critical patent/KR20090094055A/ko
Application granted granted Critical
Publication of KR101541146B1 publication Critical patent/KR101541146B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Abstract

데이터 관리 및 데이터 프로세싱 시스템들과 방법들이 제공된다. 실시예들은 합리적으로 높은 품질의 결과들을 갖는 빠른 데이터 선택에 관한 시스템들 및 방법들을 포함할 수 있고, 빠른 데이터 선택 함수 및 느린 데이터 선택 함수를 포함할 수 있다. 다양한 실시예들은 데이터 스트링 또는 데이터 세트를 위한 데이터 해싱 및/또는 데이터 중복 식별 및 제거에 관한 시스템들과 방법들을 포함할 수 있다. 실시예들은 데이터 스트림 또는 데이터 세트로부터 경계 지점들 또는 데이터 블록들/윈도우들을 사전-선택하는데 사용되는 제 1 선택 함수를 포함할 수 있고, 상기 경계 지점들 또는 데이터 블록들/윈도우들을 세밀히 구별할 수 있는 제 2 선택 함수를 포함할 수 있다. 상기 제 2 선택 함수는 상기 데이터 세트 또는 데이터 스트림 내에서 경계 지점들 또는 데이터 블록들/윈도우들에 대한 최적의 위치들을 결정함에 있어서 더 좋은 성능을 보인다. 다양한 실시예들에서, 데이터는 제 1 빠른 해시 함수와 느리지만 더 식별력 있는 제 2 해시 함수에 의해 프로세스될 수 있다.

Description

다수의 선택 기준을 이용하는 데이터 관리 방법들 및 시스템들{METHODS AND SYSTEMS FOR DATA MANAGEMENT USING MULTIPLE SELECTION CRITERIA}
본 출원은 데이터 프로세싱 및 데이터 관리 분야에 관한 것으로서, 특히 데이터 해싱(hashing) 및/또는 데이터 중복도(redundancy) 제거와 같은 어플리케이션들의 빠른 데이터 프로세싱에 관한 시스템들 및 방법들에 관한 것이다.
본 특허 출원은 세자리 두브니키, 에릭 크루스, 크리스천 언구레아누에 의해 2006. 12. 01일에 출원된 미국 특허 출원 No.(미정), "METHODS AND SYSTEMS FOR QUICK AND EFFICIENT DATA MANAGEMENT AND/OR PROCESSING"에 관한 것으로서, 이 미국 출원은 본 명세서에 참조로서 통합되어 있다.
본 개시사항은 저작권 보호 대상인 정보를 포함할 수 있는데, 본 명세서에 나타난 다양한 예시적 C++ 코드 및 의사코드(pseudocode)가 그 예가 된다. 저작권 소유자는 미국 특허청 파일 또는 기록에 나타난 대로의 특허 개시사항 또는 특허 중 어느 것에 의해 복사 재생산하는 것에 어떠한 이의도 제기하지 않지만, 모든 저작권은 무엇이든 보호할 것이다.
매일 더 많은 정보가 전세계를 통해 생산되고 있고, 유지되고 송신되는 많은 정보가 놀라운 속도로 계속하여 증대되고 있으며, 데이터 프로세싱과 관리에 대한 심각한 우려도 증가하고 있다. 이러한 정보의 다수는 전자적으로 생산되고, 처리되며, 유지되고, 송신되며, 저장된다. 이 모든 데이터, 관련 데이터 스트림들 및 저장을 관리하기 위한 노력의 순전한 규모는 엄청나다. 그 결과, 많은 시스템 및 방법들이 데이터를 더욱 빠르게 프로세스하고 가능한 한 많은 중복 데이터를 제거함으로써 더 적은 데이터를 저장하고 송신하도록 개발되어 왔다. 예를 들어, 컴퓨터, 컴퓨터 네트워크(인트라넷 및 인터넷), 전화기와 PDA와 같은 모바일 장치들, 하드웨어 저장 장치들 등과 같은 다양한 전자 장치들로부터 데이터를 복사하고, 데이터를 저장하고, 데이터를 송신할 필요를 줄이는 것을 도와주게끔 다양한 시스템들 및 방법들이 개발되어 왔다. 또한, 암호기법을 사용하여 데이터를 암호화할 필요가 있다(특히 데이터 송신 도중에). 예를 들어, 강한(즉, 암호기법의) 해싱을 제공하는 시스템들 및 방법들이 개발되어 왔고, 그러한 방법들은 불안전한 통신 채널에서 데이터 중복도(data redundancy) 제거를 달성하도록 데이터 해싱을 사용하는 어플리케이션들에 아주 자연스럽게 통합될 것이다.
다양한 전자 데이터 관리 방법들 및 시스템들에서, 데이터를 해시하고/해시하거나 예컨대 데이터 저장 및 데이터 송신으로부터 중복 데이터를 제거하는 여러 방법론들이 개발되어 왔다. 이 기술들은 다양한 데이터 압축, 데이터 해싱, 그리고 암호기법 방법론들을 포함한다. 어떤 예시적 기술들이 다양한 논문에 개시되어 있는데, 이 논문들은 다음의 것들을 포함한다: Philip Koopman, 32-Bit Cyclic Redundancy Codes for Internet Applications, Proceedings of the 2002 Conference on Dependable Systems and Networks, 2002; Jonathan Stone and Michael Greenwald, Performance of Checksums and CRCs over Real Data, IEEE/ACM Transactions on Networking, 1998; Val Henson and Richard Henderson, An Analysis of Compare-by-Hash, Proceedings of the Ninth Workshop on Hot Topics in Operating Systems, Lihue, Hawaii, May 2003, pp. 13-18; Raj Jain, A Comparison of Hashing Schemes for Address Lookup in Computer Networks, IEEE Transactions on Communications, 1992. 또한 다양한 예시적 기술들을 개시하는 여러 미국 특허 및 미국 특허 공개들이 존재하는바, 이들은 U.S Patent Pub. Nos. 2005/0131939, 2006/0047855, 2006/0112148과 U.S Patent Nos. 7,103,602, 6,810,398을 포함한다.
그러나, 알려진 기술들은 유용한 특정 능력들을 결여하고 있다. 전형적으로 (예컨대 상당한 데이터 중복 제거와 같이) 더 나은 선택을 수행하는 기술들은 과도한 프로세싱 타임을 사용하고(오랜 시간이 걸리고) 매우 빠른 데이터 선택 기술들은 필요한 정도의 데이터 제거를 결여할 수 있다. 예를 들어, 여러 해싱 함수 방식들이 존재하는데, 이들은 전체 파일 해싱, 고정 사이즈 데이터 블록 해싱, 그리고 내용-정의(content-defined) 데이터 청크(chunk) 해싱을 포함한다. 그러나, 이 기술들 중 어느 것도 합리적으로 빠르면서(단지 계산시간만을 사용) 데이터 세트 내의 데이터 중복의 대다수를 식별하는 능력(예컨대 높은 데이터 중복 제거 능력)을 가지지는 못한다.
그러므로, 합리적 성능을 가지며 빠르기도 한 데이터 선택 기술이 요구된다. 예를 들어, 데이터 해싱 및/또는 데이터 세트 내의 중복 데이터의 대다수를 여전히 식별하면서 데이터 중복 식별 및 제거를 빠르게 수행할 수 있는 해싱 및/또는 데이터 중복도 식별 및 제거 시스템과 방법이 요구된다. 내용 정의 해시 함수에서 데이 터 블록들 또는 청크들을 결정하는 적절한 중지점 또는 경계를 더욱 빠르게 결정하는 시스템들 및 방법들이 또한 요구된다.
본 발명은 일반적으로 데이터 관리 및 데이터 프로세싱 방법들 및 시스템을 제공하는 것에 관한 발명이다. 예를 들어, 실시예들은 선택 결과들을 더 잘 수행하는(예컨대 뛰어난 데이터 중복도 제거) 빠른 데이터 선택에 관한 시스템들 및 방법들을 포함할 수 있고, 빠른 데이터 선택 프로세스 및 느린 데이터 선택 프로세스를 포함할 수 있다. 또한, 데이터 해싱 및/또는 데이터 스트링 또는 데이터 세트를 위한 데이터 중복 식별 및 제거에 관한 예시적인 시스템들과 방법들이 제공된다. 본 발명은 더욱 강력할 수 있고, 빠른 해시 속도의 일부를 더욱 적절한 중지 지점들 또는 경계들의 세트를 결정하는 해시의 더욱 강한 성능 특성들과 결합한 시스템들 및 방법들을 제공할 수 있다. 본 발명은 데이터 프로세싱 결과들의 품질을 뚜렷하게 감소시키지 않고 데이터 프로세싱 속도를 향상시키는 소프트웨어 및 하드웨어를 포함하는 컴퓨터로 구현된 발명일 수 있다.
본 발명의 다양한 실시예들에서, 예를 들어, 데이터 스트림 또는 데이터 세트로부터 경계 지점들 또는 데이터 블록들/윈도우들을 사전-선택하는데 사용되는 제 1 선택 함수를 포함할 수 있고, 데이터 세트 또는 데이터 스트림으로부터의 상기 경계 지점들 또는 데이터 블록들/윈도우들을 세밀히 구별할 수 있는 제 2 선택 함수를 포함할 수 있는 시스템들과 방법들이 제공된다. 상기 제 1 선택 함수는 상기 제 2 선택 함수보다 빠르게 계산할 수 있다(예컨대, 롤링-즉, 상기 데이터 세트 또는 데이터 스트림으로부터의 후속되는 데이터 블록/윈도우의 해시 값을 생성-하는 프로세싱 시간이 덜 걸린다). 상기 제 2 선택 함수는 상기 데이터 세트 또는 데이터 스트림 내에서 경계 지점들 또는 데이터 블록들/윈도우들에 대한 적절한 위치들을 결정함에 있어서 더 좋은 성능을 보인다. 상기 제 2 선택 함수는 롤링가능할 수 있는데, 반드시 그러할 필요는 없다. 일 예시적 제 1 선택 함수는 예를 들어 무빙(moving) 윈도우를 사용하는 박스카 합산(boxcar sum)에 근거한 함수일 수 있다. 이는 특히 빠른 데이터 선택 프로세스이다. 일 예시적 제 2 선택 함수는 라빈 핑거프린트(Rabin fingerprint) 함수일 수 있다. 이 제 1 선택 함수는 특히 빠르고 이 제 2 선택 함수는 특히 양호한 비트-randomizing(bit-randomizing) 특성들을 갖는다. 다양한 실시예들에서, 상기 제 1 선택 함수와 상기 제 2 선택 함수는 어느 지점에서 데이터 세트 또는 데이터 스트림이 다양한 데이터 블록들, 청크들, 또는 윈도우들로 분리되어야 하는지를 결정하기 위해 복수의 내용-정의 경계 지점들, 블록 중지 지점들 또는 청크 지점들을 생성시키는데에 사용될 수 있다. 다양한 실시예들에서, 내용-정의(content-defined) 경계들이 해시 함수가 적용될 수 있고 결과적인 해시 값이 생성될 수 있는 데이터 블록, 청크, 또는 윈도우 사이즈들을 결정하는데에 사용될 수 있다. 다양한 실시예들에서, 결과적인 해시 값은, 상기 데이터 블록, 청크, 또는 윈도우가 전체적으로 중복 데이터인지 여부 또는 상기 새로운 해시 값이 고유의 데이터 블록, 청크, 또는 윈도우로서 저장되어야 하는지 여부를 결정하도록 하나 이상의 저장된 해시 값들에 비교될 수 있다.
삭제
삭제
다양한 실시예들에서, 데이터 해싱을 위한 내용-정의 기술이 제공될 것이다. 이 내용-정의 기술은 빠른 해시 함수 모듈(예컨대, 계산들이 적기에 프로세싱 시간을 적게 걸림)과 느린 해시 함수 모듈(예컨대, 많은 계산들이 있기에 프로세싱 시간을 더 걸림)을 가지는 프로세싱 시스템을 포함할 수 있다. 상기 빠른 해시 함수 모듈은 예를 들어 데이터 스트림으로부터 데이터를 수신할 수 있고, 데이터 스트림이 개별 데이터 블록들 또는 데이터 청크들로 분할될 수 있는 하나 이상의 데이터 경계, 중지, 블록, 또는 청크 지점들을 사전-선택할 수 있다. 상기 빠른 해시 함수는 가장 나은 데이터 경계, 중지, 블록, 또는 청크 지점들을 결정하는 때에 성능이 다소 낮을 수 있다. 상기 빠른 해시 함수는, 예를 들어, 롤링(rolling) 또는 무빙(moving) 윈도우를 사용하는 박스카 합산(boxcar sum) 함수일 수 있다. 상기 느린 해시 함수 모듈은 상기 빠른 해시 함수에 의해 사전-선택된 데이터 블록들 또는 청크들에서만 해싱을 수행할 수 있다. 상기 느린 해시 함수 모듈은 특정 목적(예컨대 더 많은 중복을 식별)을 위해 가장 나은 데이터 경계, 중지, 블록, 또는 청킹 지점들을 결정함에 있어서 더 나을 수 있다. 예를 들어, 상기 느린 해시 함수는 라빈 핑거프린트(Rabin fingerprint) 함수, SHA-1 해시, CRC32c 해시 등일 수 있고, 롤링 또는 비-롤링일 수 있다.
다양한 실시예들에 포함되는 추가적인 실시형태들은 하기의 개시사항과 첨부된 도면들을 연구한 당업자들에게는 자명할 것이다.
본 발명의 유용성, 목적, 특징 및 이점들은 첨부된 도면들과 함께 본 발명의 실시예들에 대한 상세한 설명을 고려함으로써 쉽게 이해되고 평가될 수 있을 것인데, 도면에서 동일한 참조 번호들은 동일한 구성요소를 나타낸다.
도 1은 적어도 일 실시예에 따라 다중-모드 데이터 경계 지점 결정을 이용하는 데이터 관리 또는 프로세싱 시스템을 예시하고 있다.
도 2는 적어도 일 실시예에 따라 다중-모드 데이터 경계 지점 결정을 이용하는 데이터 관리 또는 프로세싱 방법을 예시하고 있다.
도 3은 적어도 일 실시예에 따라 다중-모드 데이터 경계 지점 결정을 이용하는 데이터 관리 또는 프로세싱 시스템(들) 및 방법(들)이 어떻게 동작하는지를 예시하는 도면이다.
도 4는 적어도 일 실시예에 따라 앞서 데이터 세트 또는 스트림에 인카운터된(ecountered) 데이터의 식별을 위해 다중-모드 데이터 경계 지점 결정을 이용하는 데이터 관리 또는 프로세싱 방법에 대한 상세한 예시이다.
도 5는 적어도 일 실시예에 따라 내용-정의 데이터 블록들 또는 청크들을 이용하는 해싱 기술을 예시하고 있다.
도 6은 적어도 일 실시예에 따라 박스카 합산(boxcar sum) 기술을 이용하는 제 1 선택 함수를 예시하고 있다.
도 7a 및 7b는 적어도 일 실시예에 따라 내용-정의 데이터 블록들 또는 청크 들을 이용하는 예시적 해싱 기술에 대한 데이터 윈도우, 블록들 또는 청크들에 대한 예시를 제공하고 있다.
도 8은 적어도 일 실시예에 따른 계산 장치에 대한 예시적인 기능 블록 다이어그램이다.
도 9는 적어도 일 실시예에 따라 네트워크를 예시하는 예시적인 기능 블록 다이어그램이다.
본 발명은 일반적으로 데이터 관리 및 데이터 프로세싱 방법들 및 시스템들에 관한 것이다. 다양한 실시예들이 다중-모드 데이터 선택 기술들에 관한 시스템들 및 방법들을 포함할 것이다. 더욱 상세하게는, 다양한 실시예들은 합리적으로 높은 품질의 결과들을 갖는 빠른 데이터 선택에 관한 시스템들 및 방법들을 포함할 것이며, 더욱 빠른 데이터 선택 프로세스 및 조금 느린 데이터 선택 프로세스를 포함할 것이다. 본 발명의 다양한 실시예들에서, 예를 들어, 데이터 세트 또는 데이터 스트림으로부터 데이터 블록들/윈도우들 또는 경계 지점들을 미리-선택하는데 사용되는 제 1 선택 함수를 포함할 수 있는 시스템들 및 방법들이 제공되는데, 이 시스템들 및 방법들은 데이터 세트 또는 데이터 스트림으로부터 데이터 블록들/윈도우들 또는 경계 지점들을 세밀히 구별할(refine) 수 있는 제 2 선택 함수를 포함할 수 있다. 상기 제 1 선택 함수는 상기 제 2 선택 함수보다 더욱 빠르게 계산(예컨대, 프로세싱 시간이 적게 걸림)할 수 있다. 상기 제 2 선택 함수는 데이터 세트 또는 데이터 스트림으로부터 데이터 블록들/윈도우들 또는 경계 지점들의 최적의 위치들을 결정하는데 있어서 더욱 양호할 것이다. 일 예시적 제 1 선택 함수는 예를 들어 무빙 윈도우를 이용하는 박스카 합(boxcar sum)에 기반하는 함수일 수 있다. 이는 특히 빠른 데이터 선택 프로세스이다. 일 예시적 제 2 선택 함수는 롤링(rolling) 또는 비-롤링(non-rolling)일 수 있는 라빈 핑거프린트 함수(Rabin fingerprint function)일 수 있다. 다른 선택 함수들은 동등하게 적용가능한 빠른/느린 특성들을 갖는다.
본 발명은 데이터 프로세싱 결과의 품질을 현저하게 감소시키지 않고서도 데이터 프로세싱 속도를 향상시키는 소프트웨어 및 하드웨어를 포함하는 컴퓨터-구현 발명일 수 있다. 적어도 일 실시예에서, 본 명세서에 제공되는 시스템(들) 및 방법(들)은 계산 장치를 사용하여 구현될 수 있고, 네트워크 내부의 하나 이상의 컴퓨터(들)에서 수행될 수 있다. 예시적인 계산 장치(들) 및 네트워크(들)의 세부사항은 도 8 및 도 9에 일부가 상세히 나타나 있다. 이들 예에 대한 선행 참조는 본 발명의 다양한 세부사항들에 대한 더 나은 이해를 도울 수 있을 것이다.
어느 경우에든지, 본 발명의 쉬운 이해를 위해 해싱 함수들 및/또는 데이터 중복도 식별 및/또는 데이터 중복 제거의 이용에 대한 상세한 세부사항에서 설명될 것이다. 그러나, 당업자는 본 발명이 프로세스될 또는 저장될 데이터 스트링을 갖는 컴퓨터들, 송신될 데이터를 갖는 무선 통신, 인터넷 및 인트라넷 어플리케이션, 데이터 암호화 기술 등을 포함하는 다른 데이터 관리 및 프로세싱 시스템들 및 방법들에도 적용가능함을 이해할 수 있을 것이다. 특히, 본 발명을 설명하기 위해 본 명세서에서 사용되는 예시적 실시예들은 주로 데이터 해싱 및 데이터 중복 제거에 관련된다.
데이터 해싱 및/또는 데이터 중복도 식별 및/또는 데이터 중복 제거 실시예들에서, 본 발명은 더 빠른 해싱 함수 및 더 느린 해싱 함수를 포함할 수 있다. 상기 더 빠른 해싱 함수는 청크, 블록 또는 해시 지점 미리-선택에 대한 것일 수 있다. 상기 더 느린 해싱 함수는 대부분의 데이터 중복 식별시에 미리-선택된 청크, 블록 또는 해시 지점들 중 어느 것이 더 나은지를 결정하는데에 적용될 수 있다. 데이터 세트 또는 데이터 스트링에 대한 해싱 함수들은 많은 양의 데이터에서 데이터의 동일한 섹션들을 식별하도록 사용될 수 있다. 해싱에 대한 3 가지 일반 기술들이 존재한다. 즉, 전체 파일 내용 해싱, 고정 사이즈 블록 해싱, 그리고 내용-정의 해싱이다. 전체 파일 내용 해싱은 전체 데이터 파일들(예컨대 완전한 텍스트 또는 이미지 파일)에 대한 해시 값 또는 체크 섬을 생성하도록 연산한다. 고정 사이즈 데이터 블록 해싱은 다양한 데이터 파일들의 미리 설정된 고정 사이즈 부분들(예컨대 1000비트)에 대한 해시 값들 또는 체크 섬들을 생성하도록 연산할 수 있다. 내용-정의 데이터 블록 해싱은 가변 사이즈의 데이터 블록들에 근거하여 해시 값들 또는 체크 섬들을 생성하도록 연산할 수 있는데, 상기 가변 사이즈의 데이터 블록들의 사이즈는 선택된 데이터 내용 기준(예컨대, 데이터 내에서 연속적인 1 또는 0의 X 개수들 이후에 데이터를 데이터 청크로 분할)에 의해 결정된다.
다음의 몇 문단들에서, SHA-1의 속도는 3가지 경우들 즉, 전체-파일 청킹(chunking), 고정-사이즈 청킹, 가변-사이즈 청킹에 있어서 거의 동일할 것이다. 각 경우에, 모든 입력 바이트는 고유의 청크에 있으며, 모든 그러한 청크는 평가된 SHA-1을 반드시 가져야 한다. 그러나, 전체-파일 청킹, 고정-사이즈 청킹, 가변-사이즈 청킹 사이의 주요한 차이점들 중 하나는 그러한 SHA-1 계산들의 수이다. 그럼에도 불구하고, SHA-1 평가들에 있어서, 총 프로세싱 시간(예컨대 CPU 시간)은 거의 동일할 것인데, 이는 프로세싱 시간의 대부분은 거의 SHA-1 계산 자체에 있을 것이기 때문이며, 하나 또는 여러 SHA-1 해시 값들을 저장하는 것에 관련된 오버헤드에 있지 않기 때문이다.
전체 파일 해싱의 경우에, 해싱은 해싱 함수를 전체 파일들의 모든 데이터에 적용함에 의해 수행될 수 있다. 예를 들어, SHA-1 해싱 함수는 전체 데이터 파일에 사용되고 적용될 수 있다. 이 SHA-1 해싱 함수는 계산적으로 복잡하고 다른 해싱 함수들에 비해 상대적으로 느릴 수 있다. 그럼에도 불구하고, 이러한 경우에, 중복물 식별 및 중복물 제거를 위해, 중복 데이터의 최소의 양이 발견되고 제거되는데, 이는 단일 비트의 데이터가 파일 내에서 변화하는 때에 결과적인 해시 값이 앞서 저장된 값과 다를 것이고 변경된 파일에 관련된 전체 데이터 양이 송신되거나 저장될 필요가 있기 때문이다(예컨대, 텍스트 파일 내의 하나의 문자가 변경된 경우에, 텍스트 파일의 전체 데이터 표현과 그것의 해시 값은 동일한 텍스트 파일의 앞선 버전의 중복물이 되지 않게끔 변화될 것이다). 반면에, 해싱 함수가 단지 데이터의 전체 파일에 대해 한 번만 연산하면 되기에 해싱은 빠르다.
상기에 논의한 바와 같이, 고정 사이즈 데이터 블록 해싱 함수는 전체 파일 내에서 발견되는 전체 데이터의 부분들 또는 블록들에서 해싱을 수행하고(예컨대, 단일 텍스트 파일은 10K 비트인 10개의 동일한 사이즈 데이터 블록들로 분할될 것이다), 데이터 블록들은 겹치지 않는 고정 사이즈에서 설정될 것이다. 다시 한 번, SHA-1 해싱 함수는 전체 파일(예컨대 100K 비트)을 구성하는 고정 사이즈 블록들 세트(예컨대 10K 비트) 각각에 적용될 것이다. 이 경우에, 더 많은 중복물들이 발견될 수 있는데 이는 각 시각에 해싱된 데이터 블록이 더 작기 때문이며, 전체 파일 내의 어딘가에서의 단일 비트 변화는 단지 전체 파일을 구성하는 다수의 블록들 중 하나의 변화만을 불러올 것이다(예컨대, 10개의 10K 비트 블록들 중 9개가 중복물일 것이다). 그러나, 단일 바이트 삽입은 많은 수의 블록들에 대한 중복 탐지를 방해할 수 있다(예컨대, 제 1 삽입을 포함하는 블록을 뒤따르는 블록들은 중복물이 아닌 것으로 될 수 있다). 블록이 작을수록, 중복도 탐지는 더 나아지지만, 예컨대 SHA-1과 같은 해싱 함수는 전체 데이터 파일 내에서 발견되는 동일한 양의 데이터에 대해 더 많은 횟수로 실행되어야 하기에 프로세스는 조금 느려진다.
마지막으로, 내용 정의 데이터 청크 해싱을 사용하는 경우에, 해싱은 상당히 느리고 내용에 의해 정의되는 다양한 데이터 청크들에 대한 값을 식별하고 생성시키는 좀 더 나은 성능(예컨대 더욱 정확하고 차별되는 계산)을 적용함에 의해 수행될 수 있다. 이 경우에, 로컬화된(localized) 삽입과 로컬화된 교체 수정들 모두는 단일 내용-정의 청크를 변화시킬 수 있고, 이로써 고정-사이즈 청킹과 비교할 때 발견되는 중복물의 양이 증가한다. 그러한 해싱 함수는 라빈 핑거프린팅과 SHA-1 해싱 함수의 결합을 포함할 수 있다. 라빈 핑거프린팅은 데이터 파일 내의 데이터의 데이터 윈도우들을 중첩시키기(overlapping) 위해(예컨대 슬라이딩 윈도우) 여러 번 적용될 수 있는데, 이는 데이터 파일 내의 어느 곳에서 청크 경계들이 설정될 수 있는지를 미리 설정된 경계 지점 기준(예컨대, 함수의 값은 X 개의 0 또는 1에서 끝나는 미리 설정된 비트들 또는 바이트들과 같다)에 근거하여 결정하기 위함이고, 그 다음 SHA-1 해싱 함수는 결정된 데이터 블록들(이 블록들의 사이즈는 분석되고 있는 기저(underlying) 데이터에 근거하여 달라진다) 각각에 적용될 것이다. 다시, 입력의 각 바이트는 앞서 논의한 바와 같이 일부 SHA-1 해시 계산으로 진입할 것이다. 그러나, 라빈 핑커프린팅은 고정 사이즈 청킹에 비교할 때 추가적인 계산 부담(예컨대 프로세싱 시간)을 보여준다. 이 방식은 보다 많은 데이터 중복들을 식별하는 데에는 매우 좋지만, 이들 함수들 모두는 시간 낭비적일 수 있고 이들 결합은 해싱 및/또는 데이터 중복도 식별 및 제거를 매우 시간 낭비적이게 한다. 사실, 라빈 핑거프린팅 함수는 상기 중복 데이터 식별 및/또는 데이터 제거를 최적화하려는 시도에서 다양한 데이터 블록 컷들 또는 해시 지점들이 특히 어디에 있어야만 하는지 식별하는 데 있어 특히 시간 낭비적이다.
삭제
청킹 목적들을 위해, 필요한 정도로 데이터를 제거하는 것을 달성하는 하나의 수단은 랜덤 데이터 입력이 주어진 경우에 기대되는 분포에 근접하게 매치되는 청크 사이즈 분포를 이루는 방식 내의 내용-정의된, 결정론적 방법으로 현실(real-world) 데이터로부터 청크들을 생성하는 선택 함수를 사용하는 것이다. 이를 달성하는 한 가지 방식은 알려진 발생 확률들을 갖는 선택 기준이 뒤따르는 해시 함수를 사용하는 것이다. 전형적으로, 어느 데이터 윈도우 내부에서든 비트들을 "스크램블(scramble)"하는 뛰어난 능력을 갖는 단일 해시 함수가 선택된다. 이러한 방식으로, 출력 값은 입력 윈도우 내부의 실제 데이터 비트들에 거의 연관되어 있지않음을 보여준다. 그러한 비트-랜덤화 해시 값 H로, 사용되어온 단순한 선택 기준은 예를 들어 미리 설정된 값과 동일한 특정 개수의 비트들을 강요하거나, H^(H-1) > 임계값, H > 임계값, 또는 H 및 마스크==값인 값을 필요로 하는 것을 포함한다. 비트-랜덤화 해시를 선택 과정 기준과 결합하는 것은 입력 윈도우의 "랜덤으로 보이는(random-looking)" 서브세트를 선택하는 선택 함수를 산출할 수 있다. 공통적인 바람은 그러한 선택 함수들이 현실(예컨대 무작위가 아닌) 데이터 입력들이 제시되는 때에 랜덤-유사(random-like) 청크 사이즈 분포를 생성하는 매우 좋은 기회들을 갖는 것이다.
현실 데이터를 앞두고 랜덤-유사 청크 사이즈 분포를 가질 것으로 기대되는 다양한 선택 함수들은 본 명세서에서 양호한 "비트-스크램블링(scrambling)" 능력을 갖는 것으로 참조될 수 있다. 본 발명의 하나의 성능 목적은 2 개의 양상들을 포함한다. 즉, 하나는 쉽게 이해되는 것으로서, 즉 연산 속도이고, 다른 하나는 다소 추상적이지만 앞서 언급된 비트-스크램블링 연산이다. 본 발명은, 얼마나 많이 비트-스크램블 능력이 저하될 수 있는지에 대한 제어의 측정을 여전히 유지하면서, 동작 속도를 크게 향상시키는 데이터 프로세싱 어플리케이션에 대한 메커니즘을 제공할 수 있다. 상기 추상적 비트-스크램블링 목적을 잘 충족시키는 선택 함수들은 그들의 도메인에 특별한 비-추상적 목적들을 더욱 잘 충족시킬 수 있는 어플리케이션들을 가능하게 한다. 예를 들어, 다양한 어플리케이션들에서 이러한 목적들은 중복물 탐지에 관련될 수 있는데, 더 나은 중복물 탐지, 더 나은 잠재적 중복 탐지, 더 나은 유사성(resemblance) 탐지, 더 적은 데이터 송신, 대역폭 증가, 저장 요건 감소 등을 포함한다. 그러한 어플리케이션들 내부에서 본 발명의 이용은 그 어플리케이션들이 예를 들어 더 빠른 속도로 비-추상적 목적들을 충족시키는 것을 가능하게 한다. 본 발명의 일부 특정 어플리케이션들은 예로서 데이터 저장 시스템(들)에 주목할 수 있는데, 이 시스템(들)은 예컨대 구체적인 성능 목표가 속도 및 제거되는 중복물의 양일 수 있다. 그래서, 현실 데이터에서 더 나은 성능을 보이는 해시 함수들은 인스턴트 또는 윈도우에서의 값과 다음 인스턴트 또는 윈도우에서의 값 사이의 비트 마다의(bitwise) 연관을 갖지 않는 경향이 있다. 요구되는 해시 함수들은 윈도우가 입력 데이터 스트림 내에서 일 시간으로부터 다음 시간으로 롤링되는 때에 모든 해시 값 비트들에 랜덤하게 영향을 미치려는 경향이 크다.
랜덤 데이터로 잘 수행될 수 있으나 현실에서는 그렇지 않은 선택 함수의 예는 H='30-바이트 윈도우 내부의 비-알파벳 문자들([A-Za-Z]에 있지 않은) 개수 카운트'이며, 이는 선택 룰 'H=0'에 결합되어 있다. 랜덤 데이터 입력에 대해서, H는 랜덤하게 0일 것이며, 그 확률은 (204/256)**30~=0.0011이고, 따라서 908 윈도우들 중 하나는 선택을 생성할 것이며, 908 바이트들의 평균 청크 사이즈들의 지수 분포가 기대될 것이다. 하지만, 뉴스 클리핑(clipping)의 아카이브(archive)를 저장하는 경우에는, 30-문자 단어들의 발생 개수는 이 기대보다는 훨씬 작을 수 있으며, 유용한 청크 지점들이 결과로 거의 나오지 않을 것이다.
현실 데이터에 대해 "양호한(better)" 성능을 보일 수 있는 해시 함수들은 하나의 인스턴트 또는 윈도우에서의 값과 다음 인스턴트 또는 윈도우에서의 값 사이의 비트 마다의(bitwise) 연관을 갖지 않는 경향이 있다. 바람직한 해시 함수들은 윈도우가 입력 데이터 스트림 내에서 하나의 시각에서 다음 시각으로 롤링되는 때에 해시 값의 모든 비트들에 영향을 미치려는 경향이 크다. 바람직한 해시 함수들은 또한 입력 윈도우 내부의 단일 비트가 변경되는 때에 랜덤하게 많은 비트들에 영향을 미치려는 경향이 있다. 유사한 관념들이 양호한 해시 함수 특성들의 더욱 보편적인 정의들에 대응되고, 이러한 특성들을 충족하는 함수들은 본 발명을 이용하는 다양한 어플리케이션들의 목적들을 위한 비트-스크램블링 능력을 양호하게 할 수 있다. 많은 경우에, 그러한 해시 함수들은 랜덤하지 않게, 현실 데이터로 제시되는 때조차도 잘 수행할 것임이 일반적으로 가정된다.
박스카 함수는, 예를 들어, 입력 바이트들에서 그것의 해시 값의 최하위 유효 비트들을 스크램블링함에 있어서 특히 좋지 않을 수 있는데, 이 최하위 유효 비트는 입력 데이터 윈도우들의 비트 0 패리티에만 사소하게 관련된다. 그러나, 박스카 함수가 입력 데이터의 연속적인 윈도우들에 대한 해시를 평가할 수 있는 속도는 박스카 함수를 본 발명에 이용하는 것이 특히 매력적이게 한다. 또한, 박스카 해시에 대한 선택 기준이 일부 실시예들에서 수정될 수 있어서 비트 0의 이용을 피할 수 있기에 선택 함수를 달성할 수 있다. 상기에 언급된 동반 특허, U.S Patent Application titled METHODS AND SYSTEMS FOR QUICK AND EFFICIENT DATA MANAGEMENT AND/OR PROCESSING은 본 발명에 의해 엄청나게 향상된 스피드 성능 목표 및 중복 제거의 성능 목표에 대한 많은 데이터세트의 예를 제공한다. 즉, 측정된 속도는 크게 증가하였으며, 중복 제거의 양은 예를 들어 단지 내용-정의 청킹을 달성하기 위한 라빈 핑거프린팅 또는 MLCG(multiplicative linear congruential generator) 해시들을 이용하는 여러 실시예들에서 얻어진 것과 거의 동일하다는 것이 1.1 테라바이트 현실 데이터세트에서 검증되었다.
도 1을 참조하면, 본 발명의 적어도 일 실시예에 따라, 다중-모드 데이터 경계 지점/데이터 블록 결정을 이용하는 예시적인 데이터 관리 또는 프로세싱 시스템(100)이 제공된다. 이 예시적 시스템에서, 입력 데이터(110)는 빠른 경계 지점(Faster Boundary Point)/데이터 블록 윈도우 모듈(Data Block Window Module)(120)에 제공될 수 있다. 이 입력 데이터(110)는, 예를 들어, 마이크로프로세서, 저장 디스크, 메모리, 컴퓨터 시스템 등과 같은 하나 이상의 전자 장치들에 저장되거나 송신되거나 프로세스될 필요가 있는 2진 1의 그리고 0의 값인 데이터 패킷들 또는 파일들의 시퀀스일 수 있다. 상기 모듈(120)은 상기 입력 데이터(110) 내에서 해시, 컷, 경계 또는 중지 지점의 결정을 더욱 빠르게 프로세스 할 수 있는데, 이는 이 모듈이 예컨대 양호한 해시, 컷, 경계 또는 중지 지점들을 결정하는 종래의 프로세스들보다 적은 프로세스 시간을 소요하는 박스카 합 프로세스 또는 함수를 이용할 수 있기 때문이다. 모듈(120)은 데이터 내의 해시, 컷, 경계 또는 중지 지점들의 최선의 선택을 제공하지는 못하지만, 그 속도가 해시, 컷, 경계 또는 중지 지점의 조금 낮은 품질을 보상할 것이다(더 적은 중복 데이터가 식별되는 결과를 낳을 수 있음). 다양한 실시예들에서, 상기 모듈(120)은 모든 가능한 해시, 컷, 경계, 또는 중지 지점들의 서브세트를 미리-선택할 수 있다. 일부 예시적인, 쉽게 롤링가능한(rollable) 해시함수들은 박스카 합산 함수, 상수에 의해 곱해지고(multiply-by-constant) 바이트 값을 더하는(add-byte-value)(MLCG) 함수, rolN-xor 함수 등을 포함할 수 있다. 상기 빠른 경계 지점/데이터 블록 윈도우 모듈(120)은 더 느린 빠른 경계 지점/데이터 블록 윈도우 모듈(130)에 결합될 수 있다. 모듈(130)은 모듈(120)에 비해 상대적으로 더 많은 반복 당 프로세싱 시간을 소요하지만, 가능한 해시, 컷, 경계 또는 중지 지점을 더욱 잘 결정하도록 할 수 있다(예컨대, 더 많은 중복 데이터가 식별되게 할 수 있다). 다양한 실시예들에서, 모듈(130)은 CRC32c 함수, 라빈 핑거프린트 함수, SHA-1 함수 등을 이용할 것인데, 이들은 롤링 또는 비-롤링 윈도우들을 통합할 수 있다. 다양한 컷, 중지, 해시, 블록 지점 함수들의 표가 하기의 표 I에 예시되어 있는데, 시뮬레이션 도중 달성되는 다양한 속도들을 보여준다.
표 1
Figure 112008062842521-pct00001
몇몇 단순한 해시 함수들이 상기 표 1에 제공되어 있다. 해시는 일정한 초기 값을 할당받는다. 윈도우 내의 각 바이트에 대해, 해시는 다음 바이트 값 b를 더함으로써 수정된다. 리스트에 나타난 해시 함수들은 빠른 롤링 버전을 갖는다. 여기서 A와 N은 해시-특정 상수들이고 ROL은 rotate-left 연산이다. xAdler 해시는 Adler(/Fletcher) 해시의 단순화된 버전이다. 속도 값들은 컴파일-시간 상수들의 최대 양으로 상당히 최적화된 코드의 대표값이며, 해시 함수 속도의 표시로서 보여져야 한다. 속도 테스트들은 해시를 롤링하고 수백 메가바이트의 인-메모리(in-memory) 랜덤 데이터에서 터미널 0 비트들을 검사하는 것을 측정한다. 표 1에서 관찰할 수 있는 바와 같이, 알고리즘 속도는 제로 표 룩업(table lookup)들로 가장 빠른 박스카, MLCG, rolN-xor 해시들로 필요한 외부 룩업들의 개수를 개략적으로 따른다. 롤링 버전들(하기를 참조) 또는 xor, rolN-xor과 라빈 해시들은 2 개의 A[b] 형태 룩업들을 필요로 한다.
해시 함수들의 다양한 예시적 비-롤링 버전 및 대응되는 롤링 버전들에 대한 C++-유사 코드의 특정 버전들이 하기에 예시되어 있다. 예시적인 코드에서, ws는 윈도우 사이즈이고 buf는 수 바이트의 입력 데이터 버퍼일 것이다. 함수 calc(buf)는 체크섬 csum의 비-롤링 계산이고, roll(buf)는 그 값이 적은 연산들 내의 calc(&buf[1])에서의 값에 calc(buf)한 값인 체크섬을 업데이트할 롤링 버전이다. 상수 랜덤 수들의 전체 표는 입력 바이트들을 더욱 랜덤한 32-비트 양들로 사전-변환할 것을 필요로 하는 알고리즘들을 위한 rndTable[256]으로서 이용가능할 수 있음이 가정될 것이다. 윈도우 사이즈가 컴파일러-시간 상수인 경우에는 여러 알고리즘이 더욱 빨리 롤링할 것이다. 실제 코드는 컴파일러 최적화 옵션과 같은 다양한 최적화를 사용할 수 있는데, 이는 빠른 속도를 달성하기 위함이다.
비-롤링 calc 및 롤링 roll 루틴들에 대한 예시적인 박스카 C++-유사 의사코드가 아래와 같다.
Figure 112008062842521-pct00002
승산식 선형 합동 생성기 모듈 232를 이용하는, 비-롤링 calc 및 롤링 roll 루틴들에 대한 MLCG C++-유사 의사코드의 예가 아래에 나타나 있다. 이 선택으로, 모듈로(modulo) 연산들은 이 함수를 묵시적으로(implicitly) 수행하는 32-비트 산술 연산들의 오버플로우로서 32-비트 머신들에서 요구되지는 않을 것이다.
Figure 112008062842521-pct00003
단순성을 위해 64-바이트 윈도우를 가정하고 5 비트에 의해 rotate-left 함수 rol32를 사용하여 어떠한 픽업 rol 연산들도 roll 함수들에 대해 필요하지 않게 하는, 비-롤링 calc와 롤링 roll 루틴들에 대한 예시적인 rolNxor C++-유사 의사코드가 하기에 나타나 있다.
Figure 112008062842521-pct00004
단순성을 위해 64-바이트 윈도우를 가정하고 5 비트에 의해 rotate-left 함수 rol32를 사용하여 어떠한 픽업 rol 연산들도 roll 함수들에 대해 필요하지 않게 하는, 비-롤링 calc와 롤링 roll 루틴들에 대한 예시적인 rolNxor[] C++-유사 의사코드가 하기에 나타나 있다.
Figure 112008062842521-pct00005
로테이션 연산이 없는것을 제외하면 rolNxor[]과 동일한, 비-롤링 calc와 롤링 roll 루틴들에 대한 예시적인 xor 해시 C++-유사 의사코드가 하기에 나타나 있다.
Figure 112008062842521-pct00006
예를 들어 어떠한 표 룩업도 없는 Adler(/Fletcher) 해시의 수정된 버전을 사용하는, 비-롤링 calc와 롤링 roll 루틴들에 대한 예시적인 xAdler C++-유사 의사코드가 하기에 나타나 있다. 이 루틴들은 또 다른 별개 단계에서 체크섬 값을 생성하면서, scramble 함수에 의해 제공받은 내부 상태를 롤링하는 roll 함수를 설명한다. 대안으로, rndTable[]이 더욱 표준적인 Adler 알고리즘과 함께 사용될 수도 있다.
Figure 112008062842521-pct00007
Figure 112008062842521-pct00008
CRC의 단순한 구현을 위한 비-롤링 calc와 롤링 roll 루틴들에 대한 예시적인 라빈(Rabin) C++-유사 의사코드가 하기에 나타나 있다. 상수들 T[256]과 U[256]의 표들은 예를 들어 A. Broder, Sequences II: Methods in Communications, Security, and Computer Science pp. 143_152(1993)에 나타난 것처럼 계산될 수 있다.
Figure 112008062842521-pct00009
표 I의 단순한 해시 함수들이 청킹 알고리즘들에 사용되는 때에는, 데이터가 작은 청크들에 공급되고 엑스트라 버퍼 관리가 필요하기 때문에 실제 속도는 실질적으로 덜 나온다. 또한, 청킹 어플리케이션은 또한 전형적으로 전체 청크에 대해 계산될 강한 해시 함수를 필요로 할 수 있다.
나아가, 모듈(120) 및 모듈(130)에 의해 사용되는 방법들에 대한 다양한 실시예들은 내용-정의 해싱일 수 있고 내용 정의 블록/청크 지점들(140)을 출력시킬 수 있다. 일반적으로, 롤링 윈도우 함수들은 비-롤링 윈도우 함수들보다 빠르다. 앞서 언급한 바와 같이, 일반적으로, 내용에 기반한 해싱 기술들은 더 많은 중복물들을 식별함에 있어서 파일 또는 고정 블록 사이즈 해싱 기술들보다 더 낫다. 어느 경우에든, 내용 정의 블록/청크 지점들(140)은 입력 데이터 프로세싱의 합리적인 품질 레벨을 유지하면서 프로세싱 시간을 개선시키도록 사용될 것이다. 다양한 실시예들에서, 이들 내용 정의 블록/청크 지점들(140)은 중복 데이터 식별, 암호화 개선, 데이터 송신 개선 등을 위해 사용될 수 있다. 비록 모듈(130)이 모듈(120)의 출력에 의해 공급될 수 있지만, 이들 모듈들에서 수행되는 프로세스들은 어느 정도 병렬로 또는 동시에(예를 들어, 듀얼 프로세서를 사용하여) 발생할 수 있음을 주목해야 할 것이다. 모듈(130)은 일부 실시예들에서는 추가로 입력 데이터(110)에 직접 의지할 수 있다. 예를 들어, 예외적으로 모듈(120)이 미리 설정된 기준을 만족시키지 못하였음이 결정된 경우에는, 모듈(130)은 파선(150)으로 나타내진 바와 같이 내용-정의 청킹의 교차 메커니즘을 통해 입력 데이터를 프로세싱하는 더 느리고 덜 바람직한 프로세스에 착수할 수 있다. 그러한 교차 메커니즘은 예를 들어 단계(140)의 출력으로서 사용될 청크 지점들 세트를 결정하는 알려진 함수들을 사용하는 기술에 의해 제공될 수 있다.
도 2를 참조하면, 본 발명의 적어도 일 실시예에 따라, 다중-모드 데이터 경계 지점/데이터 블록 결정을 사용하는 예시적인 데이터 관리 또는 프로세싱 방법(200)이 제공된다. 이 실시예에서는, 단계(210)에서, 데이터 스트림 또는 데이터가 프로세스에 입력으로 제공된다. 다음, 단계(220)에서, 경계 지점들/데이터 청크 윈도우들의 사전-선택이 수행된다. 다양한 실시예들에서, 이 사전-선택은 빠른 해시 함수를 이용하여 수행될 수 있다. 일부 예시적인 빠른 해시 함수들은 박스카 합산(boxcar sum) 함수, rol-5-xor 함수, 연속적인 정수 승산(multiple-by-constant) 및 바이트 값 가산(add-byte-value) 함수 등을 포함할 수 있다. 그 다음, 단계(230)에서, 경계 지점들/데이터 청크 윈도우들의 세밀히 구별된 서브세트가 느리지만 더 나은 결정을 하는 함수를 이용하여 식별될 수 있는데, 예를 들어, 입력 데이터 내의 중복 데이터의 식별과 같이 선호되는 특성을 극대화할 해시, 컷, 경계 또는 청크 지점들을 식별하는 품질(퀄리티) 해시 함수가 그 함수의 예가 된다. 느리지만 높은 품질의 해싱에 대한 일부 예시적인 프로세스들은 예를 들어 롤링 또는 비-롤링 윈도우들을 통합할 수 있는 라빈 핑거프린트 함수, SHA-1 함수 등을 포함할 수 있다. 마지막으로, 단계(240)에서, 상기 프로세스는 예를 들어 본 발명의 일부 실시예들에서 데이터 중복 및/또는 중복물 제거를 결정하기 위한 해시 값들을 결정하는데에 사용될 수 있는 내용 정의 경계 지점(들)/데이터 청크 윈도우들을 출력시킬 수 있다.
도 3을 참조하면, 본 발명의 적어도 일 실시예에 따라 다중-모드 데이터 경계 지점 결정 시스템(들) 및 방법(들)을 이용하는 데이터 관리 또는 프로세싱 동작 예시적 개념(300)이 제공된다. 이러한 예시에 있어서, 제 1 빠른 선택 함수(faster selection function)(305)와 제 2 느린 선택 함수(slower selection function)(310)는 함께, 가능한 데이터 지점들/윈도우들(320)의 큰 세트로부터 바람직한 해시, 컷, 경계 또는 청크 지점들 및/또는 윈도우들(340)을 더욱 빠르게 식별(1초당 더 많은 메가바이트들을 프로세싱)하도록 동작할 수 있다. 가능한 해시, 컷, 경계 또는 청크 지점들 및/또는 윈도우들(320)의 큰 세트는 예를 들어, 데이터 지점들 또는 청크들 A(319a), B(312a), C(317a), D(311a), E(315a), F(316a), G(321a), H(313a), I(314a), J(318a)를 포함할 수 있다. 상기 제 1 빠른 선택 함수(305)는 가능한 데이터 지점들/윈도우들(320)의 큰 세트를 프로세스하여 합리적으로 양호하게 사전-선택된 바람직한 해시, 컷, 경계 또는 청크 지점들 및/또는 윈도우들의 서브-그룹(330)을 빠르게 선택할 수 있다. 이러한 예에서, 서브 그룹(330)으로 사전-선택된 데이터 지점들 및/또는 데이터 윈도우들은 데이터 지점들 및/또는 윈도우들 B(312b), D(311b), E(315b), H(313b), I(314b)를 포함한다. 상기 제 1 빠른 선택 함수(305)의 프로세싱 속도는 상기 제 2 느린 선택 함수(310)보다 예컨대 대략 2배 정도 빠를 수 있다. 그러나, 이 데이터 해시, 컷, 경계 또는 중지 지점들 및/또는 데이터 윈도우들은, 만약 상기 제 2 느린 선택 함수(310)만이 상기 데이터 세트(320)를 분석한다면, 상기 제 2 느린 선택 함수(310)에 의해 선택되는 것들보다 덜 바람직하거나 성능이 덜할 수 있다. 반면에, 상기 제 1 빠른 선택 함수(305)는 합리적인 개수의 데이터 해시, 컷, 경계, 또는 중지 지점들 및/또는 데이터 윈도우들(320)을 제공할 능력을 가질 수 있어서 통계적으로 이들 지점들은 가장 높은 품질의 가장 바람직한 특성들을 갖는 데이터 중지 지점들 및/또는 윈도우들의 다수를 포함할 가능성이 크다. 그래서, 상기 제 2 느린 선택 함수(310)는 B(312b), D(311b), E(315b), H(313b), I(314b)를 포함하는 데이터 지점들 및/또는 윈도우들을 프로세스할 것이고, 예컨대 바람직한 데이터 해시, 컷, 경계 또는 중지 지점들 및/또는 데이터 윈도우들의 대다수를 식별하는 높은 품질 특성들을 갖는 B(312c), D(311c)를 포함하는 데이터 지점들 및/또는 윈도우들을 포함하는 그룹(340)을 선택할 것이다. 이 프로세스는 데이터 세트 또는 데이터 스트림 내의 모든 데이터가 프로세스될 때까지 반복적으로 계속될 것이다.
이제 도 4를 참조해 보면, 본 발명의 적어도 일 실시예에 따라, 앞서 데이터 세트 또는 스트림에 인카운터된(ecountered) 데이터의 식별을 위해 다중-모드 데이터 경계 지점 결정을 이용하는 데이터 관리 또는 프로세싱 방법(400)에 대한 상세한 예시가 제공된다. 우선, 단계(405)에서 입력 데이터가 프로세싱을 위해 제공된다. 이 입력 데이터(405)는, 예를 들어, 마이크로프로세서, 저장 디스크, 메모리, 컴퓨터 시스템 등과 같은 하나 이상의 전자 장치들에 저장되거나 송신되거나 프로세스될 필요가 있는 2진 1의 값 그리고 0의 값을 갖는 데이터 패킷들 또는 파일들의 시퀀스일 수 있다. 다음으로, 단계(410)에서, 제 1 선택 함수가 수행될 것이다. 이 제 1 선택 함수는 어디서 하나 이상의 논리적 중지 또는 경계 지점들이 미리 설정된 데이터 프로세싱 목적물에 근거하여 데이터 세트 또는 데이터 스트림 내에서 만들어질 수 있는지를 식별하는 빠른 선택 함수일 수 있다. 다양한 실시예들에서, 제 1 선택 프로세스(410)는 데이터 세트 또는 데이터 스트림 내에서 해시, 컷, 경계 또는 중지 지점들을 식별하는 합리적으로 빠른 해시 함수일 수 있지만, 감소한 비트 스크램블링 능력을 제공할 것이다. 제 1 선택은 제 2 선택 함수에 입력으로 들어갈 수 있는 모든 가능한 해싱, 컷, 또는 중지 지점들의 서브세트를 식별할 것이다. 빠른 선택 함수가 1 초당 프로세스되는 몇 메가바이트의 입력 데이터에 기반하여 체크섬을 빠르게 부여할 능력이 있는 함수로서 정의될 수 있다. 일부 예시적 제 1 선택 함수들(410)은 박스카 합산 함수, rol-5-xor 함수, 연속적인 정수 승산(multiple-by-constant) 및 바이트 값 가산(add-byte-value) 함수 등을 포함할 수 있는데, 이들 중 일부는 상기에 보다 상세히 기술되어 있고, 일부는 하기에 상세하게 기술될 것이다. 다음, 단계(415)에서, 제 2 선택 함수는 데이터 세트 또는 데이터 스트림 내에서 선호되는 해시, 컷, 또는 경계 중지 지점들(boundary break points)을 선택함에 있어서 보다 나은 성능으로 수행될 것이다. 다양한 실시예들에서, 이 제 2 선택 함수는 제 1 선택 함수보다 느릴 수 있지만, 데이터 세트 또는 데이터 스트림 내에서 선호되는 해시, 컷, 경계 또는 중지 지점들을 식별함에 있어서 더 나은 정확성 및/또는 차별성을 제공할 것이다(예컨대 중복 식별 및/또는 제거와 같은 필요한 특성에 근거하여). 상기에 기술되고 하기에 상세히 기술될 바와 같이, 일부 예시적 제 2 선택 함수(415)는 CRC32c 함수, 라빈 핑거프린트 함수 등을 포함할 수 있다. 일부 실시예들에서, 제 2 선택 함수는 데이터 세트 또는 데이터 스트림 내에서 제 1 선택 기준에 의해 식별되는 해시, 컷, 경계 또는 중지 지점들의 서브세트만을 고려할 것이다. 이러한 방식으로, 단일-모드 선택 기술에 비해, 프로세스는 더욱 빠르게 수행되고 프로세싱 시간은 줄어들 것이다.
다른 실시예들에서는, 제 2 선택 함수는 제 1 선택 함수의 출력이 미리 설정된 기준을 충족시키지 못하였음을 통지할 수 있고 청크 지점들을 생성하도록 교차 메커니즘을 (제 2 선택 모듈 내부에) 제공할 수 있다. 그러한 교차 메커니즘은 더욱 느리게 동작할 수 있고, 바람직하게 단지 예외적인 환경에서만 동작할 수 있다. 예를 들어, 만약 사이즈가 1인 많은 수의 청크들을 야기하면서 입력의 모든 윈도우가 제 1 선택 함수에 의해 선택되거나, 제 1 선택 함수가 통계적으로 드물게 낮은 비율(랜덤 입력들에 근거한 기대값들과 비교하여)로 청크들을 생성함을 통지받은 경우에는, 제 2 선택 함수는 제 1 선택 함수가 불충분함을 결정할 것이다. 이러한 경우에, 야기된 교차 정책은 원래의 데이터에 의지(파선 417로 도시된 바와 같이)할 수 있어서, 예컨대 제 1 (빠른) 선택 함수에 의해 제공되는 것보다 더 나은 비트-스크램블링 능력을 갖는 해시 함수를 이용하는 청킹 기술을 사용하여 최종 청크 또는 중지 지점들을 생성한다.
다음으로, 단계들(420 또는 435) 중 하나 또는 둘 모두가 수행될 수 있다. 단계(420)에서, 청크 내에 포함된 가장 최근의 기저 데이터는 앞서 인카운터된 기저 데이터와 함께 식별될 수 있어서 그들은 비교될 수 있다. 단계(420)에서, 가장 최근의 기저 데이터는 모든 앞서 인카운터된 기저 데이터와 비교될 수 있어서 어느 매치들이 존재하는지를 확인할 수 있다. 예를 들어, 다양한 실시예들에서, 새로운 기저 데이터는 앞서 저장된 또는 송신된 기저 데이터에 비교될 수 있다. 만약, 단계(420)에서, 매치가 존재한다면, 단계(425)에서 앞서 인카운터된 기저 데이터에 매치되는 가장 최근의 기저 데이터가 출력되지 않는다. 예를 들어, 다양한 실시예들에서, 중복이 탐지될 수 있다. 이 경우에는, 중복 기저 데이터는 제거될 것이다. 반면에, 단계(420)에서 가장 최근의 기저 데이터가 앞서 인카운터된 기저 데이터 중 어느 것과도 동등하지 않은 경우에는, 단계(430)에서 새로운 기저 데이터가 출력될 것이다(예컨대 저장되거나 송신됨).
단계(435)에서는, 선택된 데이터 청크(들) 또는 블록(들)의 값이 생성될 수 있고 이는 데이터 청크(들) 또는 블록(들) 내에 포함된 기저 데이터를 나타낸다. 예를 들어, 해시 값이 데이터 청크(들) 또는 블록(들) 내에 포함된 특정 데이터를 나타내도록 생성될 수 있다. 이 값을 생성시키는 일 예시적 함수는 예를 들어 SHA-1 함수일 수 있다. 다음으로, 단계(440)에서, 단계(435)로부터 가장 최근에 생성된 값은 앞서 생성된 값들과 함께 식별될 수 있어서 그들은 비교될 수 있다. 가장 최근에 생성된 값은 모든 앞서 생성된 그리고 인카운터된 값들에 비교되어 어느 매치들이 존재하는지를 확인하게 된다. 예를 들어, 다양한 실시예들에서, 새로이 생성된 해시 값이 앞서 생성된 및/또는 저장된 또는 송신된 해시 값들에 비교될 수 있다. 만약, 단계(440)에서, 매치가 존재한다면, 단계(445)에서는, 앞서 생성된 값에 매치되는 가장 최근에 생성된 값이 출력되지 않을 것이다. 예를 들어, 다양한 실시예들에서, 중복이 탐지될 것이다. 이 경우에, 이 중복 데이터와 그것의 생성된 값은 제거될 것이고, 위치 지시자는 데이터가 어느 위치에 저장되었는지를 보여주는 앞의 저장된 해시 값에 관련되는데, 이는 제거된 데이터를 재생성시키키 위함이다. 반면에, 단계(440)에서 새로이 생성된 값, 예컨대 해시 값이 앞서 인카운터된 값들 중 어느 것과도 동등하지 않은 경우에는, 단계(450)에서, 새로이 생성된 값(예컨대 해시 값)과 위치 지시자가 출력될 수 있고 그것을 나타내는 데이터가 출력될 수 있다(예컨대 저장되거나 송신됨). 해시 값의 경우에는, 그것은 차후의 참조를 위해 해시 표에 저장될 것이다.
이제 도 5를 참조해 보면, 본 발명의 적어도 일 실시예에 따라, 내용-정의 데이터 블록들 또는 청크들을 사용하는 예시적 해싱 기술이 제공된다. 내용-정의 해싱 함수들은 데이터 세트 또는 데이터 스트림 내의 어느 지점에서 해시, 컷, 경계 또는 청크 지점이 만들어지는지 결정하기 위해 미리 설정된 룰(rule)을 사용함으로써 동작한다. 이 룰은, 예를 들어 X 개의 연속적인 0의 값 또는 1의 값은, 데이터 세트 또는 데이터 스트림에 인가될 때에 해시 값을 생성하도록 해싱될 수 있는 랜덤 해시, 컷, 경계, 청크 또는 중지 지점들 및 가변 길이 데이터 청크들 또는 데이터 윈도우들(예컨대, C1 525, C2 530, C3 535, C4 540은 각각 다른 길이를 갖는다)을 야기할 것이다. 또 다른 예로서, 내용-정의 데이터 청크들은 각 슬라이딩 윈도우 프레임에 대해 핑거프린트(미리 설정된 계산에 근거한 기저 데이터의 고유의 표현)가 계산될 수 있는 라빈(Rabin) 함수에 근거할 수 있다. 이 계산의 값이 예를 들어 상수의 x 최하위 비트들에 매치된다면, 해시, 컷, 경계, 청크, 또는 중지 지점이 결정될 것이고 데이터 블록 또는 윈도우 해싱에 나중에 사용되도록 마킹될(예컨대 선택될) 것이다. 도 5의 다이어그램(500)은 해시, 컷, 경계, 청크, 또는 중지 지점들을 사용하여 부분적으로 청크들 C1(525), C2(530), C3(535), C4(540)로 분할된 데이터 스트림(502)을 도시하고 있다. 이는 슬라이딩 윈도우 기법을 사용하여 달성될 수 있고, 슬라이딩 윈도우에 새로운 바이트(510)를 부가하는 것은 2 개의 부분들에서 달성될 수 있다. 데이터 스트림의 윈도우 영역은 부분(520)일 수 있는데, 이는 예를 들어 64-바이트 윈도우일 수 있다. 슬라이딩 윈도우 프로세스의 각 단계에서, 슬라이딩 윈도우의 가장 오래된 부분(position)은 빠지게 되고 새로운 부분이 더해진다. 제 1 윈도우(515) 내의 가장 오래된 바이트 bi-64(505)의 값은 핑거프린트로부터 빠질 수 있고 데이터 핑거트린트에 새로운 바이트 bi(510)의 값이 더해질 수 있어서 제 2 윈도우(518)를 형성한다. 이 방식은 단순한 박스카 함수 내에 있는 것처럼 부가에 대해 가환적인(commutative) 핑거프린트를 가짐으로써, 또는 슬라이딩 윈도우 프레임들을 위해 선택된 핑거프린트 계산과 윈도우 사이즈에 대해 특유한 더욱 복잡한 메커니즘들에 의해 가능한 것으로 될 수 있다. 새로운 데이터(555)가 화살표(560)에 도시된 바와 같이 시간에 걸친(over time) 프로세스에 제공됨에 따라, 프로세스는 시간에 걸쳐 계속된다. 시간에 걸쳐 가장 오래된 바이트들이 빠지는 때에, 계산의 속도 및 성능은 사전-계산된 표를 사용함에 의해 향상될 수 있다. 상기에 언급된 바와 같이, 이 라빈 핑거프린팅은 그것의 더 나은 비트-스크램블링 능력에 의해 중지 지점들을 더 나은 성능으로 찾도록 제 2 선택 함수로서 사용될 수 있고, 이는 제 1 선택 함수보다 느릴 수 있다. 그러나, 훌륭한 비트-스크램블링 능력을 갖는 대안적 함수들이 존재할 수 있고 이들은 제 2 선택 함수로서 사용될 수 있다. 예를 들어, SHA-1 함수가 사용될 수 있거나, CRC32c 해시와 같은 라빈 핑거프린팅의 특정 버전들이 사용될 수 있다.
도 6을 참조해 보면, 적어도 일 실시예에 따라 박스카 합산 기술을 사용하는 예시적인 제 1 선택 함수(600)가 예시되어 있다. 이러한 예에서, 박스카 합산 함수는 데이터 세트 또는 데이터 스트림 내의 해시, 컷, 경계, 청크, 또는 중지 지점들을 결정하도록 사용된다. 이 경우에, 슬라이딩 윈도우 방식이 다시 사용될 것이다. 또한, 프로세스를 빠르게 만들기 위해, 빠지는 오래된 데이터 블록들과 부가되는 새로운 데이터 블록들은 단순히 미리 설정된 개수의 바이트들 또는 비트들의 데이터일 수 있고 계산은 'Boxcar Sum=∑(i=1 부터 n)으로부터의 N-바이트들'처럼 각 데이터 블록들 내의 모든 데이터 값들을 단순히 합한 것일 수 있다. 그와 같이, 새로운 박스카 합산을 계산하기 위해, 데이터 합의 가장 초기의 그룹이 빠질 수 있고 가장 최근의 데이터 그룹 합이 더해질 수 있다. 도시된 바와 같이, 데이터 세트 또는 데이터 스트림(605)이 해싱을 위해 제공되고 이는 데이터 그룹들 a,b,c,d,e로 구성된다. 데이터 그룹들 a,b,c,d,e는 동일한 비트 또는 바이트 길이-예컨대 64 비트-를 가질 수 있다. 제 1 윈도우(610)는 데이터 그룹들 a,b,c로 만들어질 수 있다. 데이터 그룹 "a"는 총 합산 값(에컨대 그룹 a내의 각 비트들의 각 값의 합)을 가질 수 있는데, 이는 예를 들어 15이다. 데이터 그룹 "b"는 예컨대 10의 총 합산 값을 가질 수 있다. 데이터 그룹 "c"는 5와 동일한 합을 가질 수 있다. 데이터 그룹 "d"는 예컨대 10의 총 합산 값을 가질 수 있다. 데이터 그룹 "e"는 예컨대 5의 총 합산 값을 가질 수 있다. 데이터 스트림 또는 데이터 세트 내의 다양한 데이터 그룹들에 이러한 값들이 주어진 경우에, 윈도우(610)의 박스카 합은 15+10+5=30일 것이다. 그 후, 앞서 계산된 합에서 가장 먼저인(초기의) 데이터 그룹 a(640)를 빼고, 가장 새로운 데이터 그룹 d(650)를 더한 것 즉, 30-15+10=25로 다음 박스카 합이 계산될 수 있다. 그 후, 다음 박스카 합은 앞서 계산된 합에서 가장 먼저인 데이터 그룹 b(655)를 빼고, 가장 새로운 데이터 그룹 e(660)를 더한 것 즉, 25-10+5=20으로서 계산될 수 있다. 만일 함수가 합이 25와 같은 해시, 컷, 경계, 청크, 또는 중지 지점들을 만들도록 설정되어 있다면, 이 해시, 컷, 경계, 청크, 또는 중지 지점 서브세트는 지점들(670)을 포함한다. 보이는 바와 같이, 이는 데이터 해싱을 위한 제 1 선택 함수를 수행하는 특히 단순하고 빠른 방법일 수 있지만, 정교함의 결여로 인해 해시 지점들의 품질은 다소 낮을 수 있다. 그와 같이, 박스카 합산 방식은 잠재적 해시, 컷, 경계, 청크 또는 중지 지점들의 사전-선택 서브세트를 개발할 수 있다.
도 7a 및 7b를 참조하면, 본 발명의 적어도 일 실시예에 따라, 내용-정의 데이터 블록들 또는 청크들을 이용하는 예시적 해싱 기술에 대한 데이터 윈도우, 블록들 또는 청크들에 대한 예시가 제공되어 있다. 도 7a는 다양한 윈도우들의 핑거프린트 또는 해시 값이 미리 설정된 값과 동일한 데이터 스트림 내의 다양한 지점들에서의 청킹(700)을 나타내고 있다. 다양한 함수들이 롤링, 무빙, 또는 슬라이딩 윈도우들에 적용될 수 있다. 이 예는, 박스카 합산 함수 또는 라빈 핑거프린트 함수와 같이 롤링 또는 슬라이딩 윈도우를 포함하는 빠른 선택 함수 또는 느린 선택 함수를 나타내는 것일 수 있고, 미리 설정된 값에 대한 동등함의 기준은 일부 필요한 발생 확률을 갖는 또 다른 기준으로 대체될 수 있다. 이러한 예에서, 슬라이딩 윈도우 함수 내의 다양한 윈도우들(705a-735a)이 뚜렷하게 예시되어 있고 이들은 데이터 그룹들 a,b,c,d,e,f,g,h,i,j를 갖는 데이터 스트림 또는 데이터 세트 내의 복수의 데이터 그룹들로서 조직된다. 시간 내의 다양한 지점들에서, 해시, 컷, 경계, 청크, 또는 중지 지점이 만들어져야 하는지를 결정하도록 미리 설정된 값에 대해 새로운 윈도우가 형성되고 평가된다. 이러한 예에서, 미리 설정된 값은 제 2 윈도우(710a)의 끝(740)에서 해시, 컷, 경계, 청크, 또는 중지 지점이 식별되는 결과를 가져온다. 그와 같이, 해시 값은 데이터 블록들 a,b,c,d의 합 내의 데이터로 만들어질 수 있다. 그 다음, 2개의 슬라이딩 시간 윈도우들, 제 3 윈도우(715a)와 제 4 윈도우(720a)에서 해싱을 수행한 후에, 해시, 컷, 경계, 청크, 또는 중지 지점은 제 4 윈도우(720a)의 끝(750)에서 식별된다. 그와 같이, 해시 값은 데이터 블록들 e, f의 합 내의 데이터로 만들어질 수 있다. 그 다음, 2 개의 슬라이딩 시간 윈도우들, 제 5 윈도우(725a)와 제 6 윈도우(730a) 내의 데이터의 값을 계산한 후에, 해시, 컷, 경계, 청크, 또는 중지 지점이 제 6 윈도우(730a)의 끝(760)에서 식별된다. 그와 같이, 해시 값은 데이터 블록들 g, h의 합 내의 데이터로 만들어질 수 있다. 도시된 바와 같이, 프로세스는 또 다른 값 매치를 발견하지도 그리고 해시, 컷, 경계, 청크, 또는 중지 지점을 발생시키지도 않고 제 7 윈도우(735a)로 계속된다.
도 7b는 다양한 윈도우들의 핑거프린트 또는 해시 값이 미리 설정된 값과 동일한 데이터 스트림 내의 다양한 지점들에서의 청킹(765)을 도시하고 있다. 이 예는, 데이터 그룹들 a,b,c,d,e,f,g,h,i,j을 갖는 먼저 나타낸 데이터 세트 또는 데이터 스트림 내부에 삽입된 새로운 데이터 그룹 z의 도입으로 인하여 어떻게 해시, 컷, 경계, 청크, 또는 중지 지점이 변화될 것인지를 예시하고 있다. 이 예시로부터 알 수 있는 바와 같이, 새로운 데이터 그룹의 도입은 제 4 윈도우(270b)에 이전에 발생한 하나의 해시, 컷, 경계, 청크, 또는 중지 지점의 제거가 일어나게 할 수 있고 이 경우에는 어떠한 해시, 컷, 경계, 청크, 또는 중지 지점도 (780)에서 선택되지 않는다. 이러한 예에서, 슬라이딩 윈도우 함수 내의 다양한 윈도우들(705b-735b)이 뚜렷하게 예시되고 데이터 그룹들 a,b,c,d,e,f,g,h,i,j을 가지며 새로운 데이터 그룹 z가 e와 f 사이에 삽입된 데이터 스트림 또는 데이터 세트 내의 복수의 데이터 그룹들로 조직된다. 시간 내의 다양한 지점들에서, 해시, 컷, 경계, 청크, 또는 중지 지점이 만들어져야 하는지를 결정하도록 미리 설정된 값에 대해 새로운 윈도우가 형성되고 평가된다. 이러한 예에서, 미리 설정된 값은 제 2 윈도우(710b)의 끝(770)에서 해시, 컷, 경계, 청크, 또는 중지 지점이 식별되는 결과를 가져온다. 그와 같이, 해시 값은 데이터 블록들 a,b,c,d의 합 내의 데이터로 만들어질 수 있다. 그 다음, 2개의 슬라이딩 시간 윈도우들, 제 3 윈도우(715b)와 제 4 윈도우(720b)에서 해싱을 수행한 후에, 새로운 데이터 그룹 z가 인카운터되고 해시, 컷, 경계, 청크, 또는 중지 지점은 제 4 윈도우(720b)의 끝(780)에서 식별되지 않는다. 그 다음, 3 개의 슬라이딩 시간 윈도우들(상기 슬라이딩 윈도우가 세 개의 데이터 그룹들을 커버하기 때문), 제 5 윈도우(725b)와 제 6 윈도우(730b), 제 7 윈도우(735b) 내의 데이터의 값을 계산한 후에, 해시, 컷, 경계, 청크, 또는 중지 지점이 제 7 윈도우(735b)의 끝(790)에서 식별된다. 그와 같이, 새로운 해시 값이 데이터 블록들 e, z, f, g, h의 합 내의 데이터로 만들어질 수 있다. 도시된 바와 같이, 새로운 데이터 그룹 z의 삽입은 3 개에 이르는 위치들에서 선택 함수의 출력을 변화시킬 수 있는데 이는 기저 데이터의 변화는 단지 단일 데이터 그룹으로 한정되고 슬라이딩 윈도우가 3 개의 데이터 그룹들을 포함하기 때문이다. 도 7에서, 이 효과는, 선택 기준이 "미리 설정된 값과 동일"한 것인 동안에 3개의 모든 영향받은 윈도우들이 비활성화(inactive)되게 함이 가정된다. 슬라이딩 윈도우 함수들에 대한 이러한 예에 근거하여, 상이한 데이터 세트 또는 데이터 내의 변화가 어떻게 해시, 컷, 경계, 청크, 또는 중지 지점을 변화시키는지 이해할 수 있을 것이다. 다양한 실시예들에서, 일단 해시, 컷, 경계, 청크, 또는 중지 지점이 식별되면, 빠른 선택 함수의 경우에는, 해시, 컷, 경계, 청크, 또는 중지 지점들의 서브세트는 예를 들어 상기에 기술된 바와 같이 롤링, 슬라이딩 또는 무빙 윈도우를 갖는 박스카 합산 함수를 이용하여 결정될 수 있고, 그 다음 느리지만 성능이 더 나은 제 2 선택 함수가 사용될 수 있다. 예를 들어, 라빈 핑거프린트 함수가 시작 지점으로서 사전-선택된 해시, 컷, 경계, 청크, 또는 중지 지점의 서브세트를 이용하여 수행될 수 있어서, 해시, 컷, 경계, 청크, 또는 중지 지점들 선택에 대한 합리적인 품질을 유지하면서 프로세싱 시간을 감소시킬 수 있다.
제 2 선택 함수를 위한 해싱 함수의 특히 양호한 예는 CRC32c이다. 이 CRC32c 해싱 함수는 라빈 핑거프린트의 특정 구현으로서 예를 들어 J. Stone, R. Stewart and D. Otis, "Stream Control Transmission Protocol(SCTP) Checksum Change", The Internet Society, RFC 3309, Sept. 2002, pages 1-17에서 찾아볼 수 있다. 이는 CRC32c 표준을 예시할 것이며 이 해시 함수를 기술하는 샘플 구현을 제공한다. 이 CRC32c 권고안은 실제로 다항식 나눗셈(polynomial division)에 근거한 특정 해시 구현이어서, 라빈 해시의 특정 예로서 고려될 수 있다. CRC32c는 전형적으로 32-비트 코드이고 특정 다항식 및 방법을 구체화할 수 있다. 이들 함수들은 C++ 언어를 위해 수정될 수 있으며 64-비트 다항식들을 지원하도록 수정될 수 있다. 제 2 함수를 위한 코드는 범용(예컨대 off-the-shelf)이거나 하드웨어에 내장된(hardwired) 것일 수 있다. 만일 "범용(generic)"인 경우에는 다소 느린 것으로 판명될 것이다.
상기에 언급된 바와 같이, 다양한 실시예들에서, 본 발명은 데이터 식별 및 중복 데이터 제거에 사용될 수 있다. 그와 같이, 선호되는 해시, 컷, 경계, 청크, 또는 중지 지점을 결정하는 것에 후속하여, 결정된 데이터 청크의 해시 값이 생성될 수 있고 앞서 저장된 해시 값과 비교될 수 있다. 다양한 실시예들에서, 본 발명은 특히 데이터 중복 제거에 적용될 수 있다. 또한, 상기에 언급한 바와 같이, 본 발명은 프로세스된, 저장된, 및/또는 송신된 데이터 스트링을 갖는 무선 네트워크, 인터넷, 인트라넷, 컴퓨터 시스템들 및 네트워크들을 포함하는 다양한 전자 시스템들에 동등하게 적용가능할 것이며, 해싱의 이용이 유용한 것으로 입증될 수 있다. 본 발명이 동작할 수 있는 환경인 다양한 시스템들 중 일부가 하기에 설명되어 있다.
언급된 바와 같이, 다양한 실시예들에서, 본 명세서에 제공되는 시스템(들) 및 방법(들)은 예컨대 퍼스널 컴퓨터, 서버, 미니-메인프레임 컴퓨터, 및/또는 메인프레임 컴퓨터 등의 계산 장치를 사용하여 구현될 수 있고, 이는 본 명세서에 설명된 바와 같이 컴퓨터로 하여금 연산들을 수행하게 하는 명령들의 시퀀스를 실행하도록 프로그램된다. 다양한 실시예들에서, 계산 장치는 예를 들어 Dell Computer of Austin, Texas와 같은 상업적 제조자들로부터 얼마든지 이용가능한 퍼스널 컴퓨터일 수 있고, 이 컴퓨터는 예를 들어 WindowTM XPTM 및 리눅스와 같은 운영 체제들을 실행시키며, 주변 장치들(예컨대 키보드, 마우스, 디스플레이, 프린터)의 표준 세트를 갖는다. 도 8은 본 명세서에 기술된 시스템(들)과 방법(들)을 구현하는 소프트웨어 어플리케이션 프로그램들을 호스팅하는데 유용할 수 있는 계산 장치(800)에 대한 일 실시예의 기능 블록 다이어그램이다. 도 8을 참조하면, 계산 장치(800)는 기능적 통신에 모두 제공되어 있는, 프로세싱 유닛(805), 통신 인터페이스(들)(810), 저장 장치(들)(815), 사용자 인터페이스(820), 운영 체제(들) 명령들(835), 어플리케이션 수행가능한 명령들/API(840)을 포함할 수 있으며, 예를 들어 데이터 버스(850)를 이용할 수 있다. 계산 장치(800)는 또한 시스템 메모리(855), 데이터 및 데이터 수행가능한 코드(865), 소프트웨어 모듈들(860) 그리고 인터페이스 포트(들)을 또한 포함할 수 있다. 인터페이스 포트(들)(870)은 프린터들, 스캐너(들), 올-인-원 프린터/스캐너/팩스 머신 등과 같은 하나 이상의 입력/출력 장치(들)(875)에 결합될 수 있다. 프로세싱 유닛(들)(805)은 본 명세서에 설명된 함수들을 구현하는 소프르웨어 명령들을 수행하도록 구성되어 있는 하나 이상의 마이크로프로세서(들) 또는 마이크로컨트롤러(들)일 수 있다. 어플리케이션 수행가능한 명령들/APIs(840)와 운영체제 명령들(835)은 계산 장치(800)를 사용하여 저장 장치(들)(815) 및/또는 비휘발성 메모리와 휘발성 메모리를 포함하는 시스템 메모리(855)에 저장될 수 있다. 어플리케이션 수행가능한 명령들/APIs(840)는 본 발명의 시스템(들) 및 방법(들)을 구현하는 소프트웨어 어플리케이션 프로그램들을 포함할 수 있다. 운영 체제 명령들(835)은 기본 연산 및 프로세서(805) 제어를 제어하도록 동작가능한 소프트웨어 명령들을 포함할 수 있다. 일 실시예에서, 운영 체제 명령들(835)은 예를 들어 Microsoft Corporation of Redmond, Washington으로부터 이용가능한 XPTM 운영 체제를 포함할 수 있다.
명령들은 저장 장치와 같은 또 다른 컴퓨터-판독가능한 매체로부터 메인 메모리로 판독될 수 있다. 본 명세서에서 사용되는 용어 "컴퓨터-판독가능한 매체(computer-readable medium)"은 수행을 위해 프로세싱 유닛(805)에 명령들을 제공하는데 참여하는 어느 매체로 참조될 수 있다. 그러한 매체는 많은 형태를 이용할 것인데, 이 형태는 비-휘발성 매체, 휘발성 매체, 송신 매체를 포함하지만 이에 국한되지는 않는다. 비-휘발성 매체는, 예를 들어, 광 디스크 또는 자기 디스크, 점프 드라이브 또는 썸(thumb) 드라이브, 그리고 저장 장치들을 포함할 수 있다. 휘발성 매체는 메인 메모리 또는 캐시 메모리와 같은 다이내믹 메모리를 포함할 수 있다. 송신 매체는 동축(coaxial) 케이블, 구리 전선, 그리고 광섬유를 포함할 수 있는데, 이들은 버스(850)를 포함하는 연결들을 포함한다. 송신 매체는 또한 무선 주파수(RF) 데이터 통신과 적외선(IR) 데이터 통신 중에 생성되는 것과 같은 음파 또는 광파의 형태를 사용할 수 있다. 컴퓨터-판독가능한 매체의 공통적인 형태들은 예를 들어 플로피 디스크, 플렉서블 디스크, 하드 디스크, 자기 테이프, 어느 다른 자기 매체, USB memory stickTM, CD-ROM, DVD, 어느 다른 광학 매체, RAM, ROM, PROM, EPROM, 플래시 EPROM, 어느 다른 메모리 칩 또는 카트리지, 여기에서부터 설명될 반송파, 또는 컴퓨터가 판독할 수 있는 것으로부터의 어느 다른 매체를 포함한다.
다양한 형태들의 컴퓨터-판독가능한 매체가 하나 이상의 명령들의 하나 이상의 시퀀스들을 실행을 위해 프로세싱 유닛(들)(805)에 운반하는데에 관련될 수 있다. 예를 들어, 명령들은 초기에 원격 컴퓨터(들)(885)(예컨대 서버, PC, 메인프레임 등)의 자기 디스크에서 생성된다. 이 원격 컴퓨터(들)(885)는 그것의 다이내믹 메모리에 명령들을 로드할 수 있고, 예를 들어 아날로그, 디지털, DSL, 또는 케이블 모뎀일 수 있는 모뎀에 연결된 전화선을 사용하여 하나 이상의 네트워크 인터페이스(들)(880)에 명령들을 전송할 수 있다. 이 네트워크는 예를 들어 인터넷, 인트라넷, peer-to-peer 네트워크 등일 수 있다. 계산 장치(800)는 통신 인터페이스(810)를 통해 다른 컴퓨터(들)의 네트워크를 통하여 메시지들을 전송하고 프로그램 코드(들)를 포함하는 데이터를 수신할 수 있는데, 인터페이스(810)는 네트워크 인터페이스(들)(880)를 통하여 결합될 수 있다. 서버는 다운로드된 어플리케이션을 위해 인터넷을 통해 어플리케이션 프로그램의 요청된 코드를 송신할 수 있다. 수신된 코드는 그것이 수신됨에 따라 프로세싱 유닛(들)(805)에 의해 수행되고/되거나 차후의 수행을 위해 저장 장치(815) 또는 다른 비-휘발성 저장소(855)에 저장될 수 있다. 이러한 방식으로, 계산 장치(800)는 반송파의 형태로 어플리케이션 코드를 획득할 수 있다.
본 시스템(들) 및 방법(들)은 단일 계산 장치 또는 플랫폼(800), 또는 다수의 계산 장치들(800) 상에 있을 수 있고, 또한 다른 어플리케이션들이 개별 계산 장치들(800) 상에 있을 수 있다. 어플리케이션 수행가능한 명령들/APIs(840)와 운영 체제 명령들(835)은 런타임 수행을 위해 계산 장치(800)의 휘발성 메모리의 하나 이상의 할당된 코드 세그먼트들에 로드될 수 있다. 일 실시예에서, 계산 장치(800)는 512MB의 휘발성 메모리와 80GB의 비휘발성 메모리 저장소와 같은 시스템 메모리(855)를 포함할 수 있다. 적어도 일 실시예에서, 본 발명 시스템(들)과 방법(들)의 소프트웨어 부분들은 예를 들어 C 프로그래밍 언어 소스 코드 명령들을 이용하여 구현될 수 있다. 다른 실시들도 가능할 것이다.
어플리케이션 수행가능한 명령들/APIs(840)은 하나 이상의 어플리케이션 프로그램 인터페이스들(APIs)을 포함할 수 있다. 본 발명의 시스템(들)과 방법(들)은 상호-프로세스 통신을 위해 APIs(840)를 이용할 수 있고 상호-어플리케이션 기능 콜(call)을 요청하고 리턴하기 위해 APIs(840)를 이용할 수 있다. 예를 들어, API는 데이터베이스(865)와 함께 제공될 수 있는데, 이는 예를 들어 데이터베이스가 스크립트(들)에 특정된 명령들에 따라 특정 데이터 저장 또는 검색 동작들을 수행하게 하는데에 유용한 SQL 스크립트들의 발달을 촉진하기 위함이다. 일반적으로, APIs는 본 명세서에 기술된 함수들 중 일부를 달성하도록 프로그램되는 어플리케이션 프로그램들의 발달을 촉진하는데에 사용된다.
통신 인터페이스(들)(810)은 계산 장치(800)에 인터넷 상에서 정보를 송신하고 수신하는 능력을 제공할 수 있는데, 이 능력은 전자 메일, HTML 또는 XML 페이지들, 파일 전송 능력을 포함하지만 이에 국한되지는 않는다. 이 때문에, 통신 인터페이스(810)는 Microsoft Corporation에 의해 제공되는 Microsoft Internet ExplorerTM와 같은-이에 국한되지는 않는-웹 브라우저를 더 포함할 수 있다. 사용자 인터페이스(들)(820)은 컴퓨터 터미널 디스플레이, 키보드, 마우스 장치를 포함할 수 있다. 하나 이상의 GUIs(Graphical User Interfaces)가 또한 포함되어 쌍방향(interactive) HTML 또는 XML 페이지들에 포함된 데이터의 디스플레이와 조작을 제공할 수 있다.
도 9를 참조해 보면, 본 시스템(들) 및 방법(들)이 동작할 수 있는 환경인 네트워크(900)가 예시되어 있다. 상기에 언급된 바와 같이, 본 특허 출원의 시스템(들)과 방법(들)은 하나 이상의 컴퓨터(들) 상에서 동작가능할 수 있다. 네트워크(900)는 하나 이상의 클라이언트 데이터 저장소(들)(910)에 결합된 하나 이상의 클라이언트(들)(905)을 포함할 수 있다. 하나 이상의 클라이언트(들)은 통신 네트워크(예를 들어 광섬유, 전화선, 무선 등)를 통해 통신 프레임워크(930)에 결합될 수 있다. 통신 프레임워크(930)는 예를 들어 인터넷, 인트라넷, peer-to-peer 네트워크, LAN, ad hoc 컴퓨터 간 네트워크 등일 수 있다. 네트워크(900)는 또한 통신 프레임워크(930)에 결합되고 서버 데이터 저장소(들)(920)에 결합된 하나 이상의 서버(들)(915)을 포함할 수 있다. 본 발명의 시스템(들)과 방법(들)은 또한 네트워크(900) 내의 하나 이상의 구성요소들 상에서 동작가능한 부분들을 가질 수 있어서 완전히 동작가능한 시스템(들)과 방법(들)으로서 동작할 수 있다.
본 발명의 실시예들이 상기에 기술되었지만, 많은 대안들, 수정안들 및 변형안들이 당업자에게는 자명할 것임이 명백하다. 일반적으로, 실시예들은 데이터 분석이 수행되는 이들 프로세스들 및 다른 비지니스 프로세스들의 자동화에 관한 것일 수 있다. 따라서, 본 발명의 실시예들은, 상기에 설명된 바와 같이, 예시적 설명을 위한 것으로서, 발명의 범위를 제한하는 것으로서 해석되어서는 안 될 것이다. 다양한 변형들이 본 발명의 사상 및 범위를 벗어나지 않는 한도에서 이루어질 수 있다. 따라서, 본 발명의 범위는 상기 예시된 실시예들에 의해 정해지는 것이 아니라, 첨부된 특허 청구범위 및 청구범위의 법적 균등물들에 의해서만 정해질 것이다.
본 명세서에 기재된 모든 공개물들, 특허들, 그리고 특허 출원들은 모든 목적으로 그 전체가 본 명세서에 참조로서 통합된 것이다.

Claims (29)

  1. 데이터 관리 방법으로서,
    프로세싱 유닛에 의해:
    제 1 선택 함수를 사용하여 데이터 스트림 내에서 복수의 데이터 윈도우들의 일부분을 사전-선택하는 단계와, 여기서 상기 제 1 선택 함수는 박스카 합산(boxcar sum) 함수, MLCG 함수, 또는 rolN-xor 함수를 포함하고;
    사전-선택된 상기 복수의 윈도우들의 상기 일부분의 서브세트를 제 2 선택 함수를 사용하여 선택하는 단계와, 여기서 상기 제 2 선택 함수는 라빈 핑거프린트(Rabin fingerprint) 함수, SHA-1 함수, 또는 CRC32c 함수를 포함하며;
    상기 제 2 선택 함수에 의해 선택되는 새로운 데이터 윈도우 또는 데이터 청크 내에 포함되는 기저 데이터와, 앞서 정의된 데이터 윈도우(들) 또는 데이터 청크(들)로부터 앞서 인카운터된(encountered) 기저 데이터를 비교하는 단계와;
    상기 새로운 데이터 윈도우에 포함된 상기 기저 데이터가 상기 앞서 인카운터된 기저 데이터와 같지 아니한 경우에는 상기 새로운 데이터 윈도우에 포함된 상기 기저 데이터를 출력시키는 단계와;
    상기 새로운 데이터 청크 내에 포함된 상기 기저 데이터가 상기 앞서 인카운터된 기저 데이터와 같은 경우에는 상기 새로운 데이터 청크 내에 포함된 상기 기저 데이터를 출력시키지 않는 단계를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  2. 제 1 항에 있어서,
    데이터 블록 경계를 선택하기 위한 계산에 있어서 상기 제 1 선택 함수는 상기 제 2 선택 함수보다 빠른 것을 특징으로 하는 데이터 관리 방법.
  3. 제 2 항에 있어서,
    윈도우 선택을 위한 계산에 있어서 상기 제 1 선택 함수는 상기 제 2 함수보다 빠른 것을 특징으로 하는 데이터 관리 방법.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 제 1 선택 함수는 상기 박스카 합산 함수이고, 상기 박스카 합산 함수는 상기 박스카 합산의 값에 대한 선택 기준과 결합되는 것을 특징으로 하는 데이터 관리 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 제 1 선택 함수는 롤링(rolling), 슬라이딩(sliding), 또는 무빙(moving) 윈도우 함수를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  8. 제 1 항에 있어서,
    상기 윈도우들은 해싱을 위해 데이터 그룹들을 정의하는데 이용되고, 상기 데이터 스트림 내에서 중지 지점들을 결정하는 속도가 증가하는 것을 특징으로 하는 데이터 관리 방법.
  9. 제 1 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 서브세트의 하나 이상의 청크 지점들에 의해 결정된 데이터 청크 사이즈의 값을 생성시키는 단계를 더 포함하고, 여기서 상기 생성된 값은 상기 데이터 청크 내에 포함된 기저 데이터를 나타내는 것을 특징으로 하는 데이터 관리 방법.
  10. 제 9 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 생성된 값을 하나 이상의 앞서 생성된 값들과 비교하여, 상기 생성된 값이 상기 하나 이상의 앞서 생성된 값들과 같은지를 결정하는 단계를 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  11. 제 10 항에 있어서,
    상기 프로세싱 유닛에 의해,
    데이터 중복이 존재하는지를 결정하는 단계와;
    중복 데이터를 갖는 것으로 결정된 데이터 청크 내의 상기 데이터의 추가적 프로세싱을 정지시키는(halting) 단계를 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  12. 제 10 항에 있어서,
    어떠한 데이터 중복도 없는 경우에는 상기 프로세싱 유닛이 상기 생성된 값을 메모리에 저장하는 단계를 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  13. 삭제
  14. 삭제
  15. 제 1 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 데이터 윈도우 또는 데이터 청크 내에 포함된 기저 데이터를 나타내는 데이터 윈도우 또는 데이터 청크에 대한 값을 생성시키는 단계를 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  16. 삭제
  17. 삭제
  18. 데이터 관리를 위해 데이터 스트림 내의 경계 지점들을 결정하는 방법으로서,
    프로세싱 유닛에 의해:
    제 1 선택 함수를 사용하여 데이터 스트림 내에서 복수의 경계 지점들의 일부분을 사전-선택하는 단계와, 여기서 상기 제 1 선택 함수는 박스카 합산(boxcar sum) 함수, MLCG 함수, 또는 rolN-xor 함수를 포함하고;
    상기 사전-선택된 복수의 경계 지점들의 상기 일부분의 서브세트를 제 2 선택 함수를 이용하여 선택하는 단계와, 여기서 상기 제 2 선택 함수는 라빈 핑거프린트(Rabin fingerprint) 함수, SHA-1 함수, 또는 CRC32c 함수를 포함하며;
    상기 복수의 경계 지점들의 상기 일부분의 상기 서브세트에 의해 결정되는 데이터 청크에 대한 값을 생성시키는 단계와;
    상기 제 2 선택 함수에 의해 선택되는 새로운 데이터 윈도우 또는 데이터 청크 내에 포함되는 기저 데이터와, 앞서 정의된 데이터 윈도우(들) 또는 데이터 청크(들)로부터 앞서 인카운터된(encountered) 기저 데이터를 비교하는 단계와;
    상기 새로운 데이터 윈도우에 포함된 상기 기저 데이터가 상기 앞서 인카운터된 기저 데이터와 같지 아니한 경우에는 상기 새로운 데이터 윈도우에 포함된 상기 기저 데이터를 출력시키는 단계; 및
    상기 새로운 데이터 청크 내에 포함된 상기 기저 데이터가 상기 앞서 인카운터된 기저 데이터와 같은 경우에는 상기 새로운 데이터 청크 내에 포함된 상기 기저 데이터를 출력시키지 않는 단계를 포함하는 것을 특징으로 하는 데이터 관리를 위해 데이터 스트림 내의 경계 지점들을 결정하는 방법.
  19. 제 18 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 생성된 값을 하나 이상의 저장된 값(들)과 비교하여, 중복을 탐지하거나 상기 생성된 값을 메모리에 저장하도록 하는 단계를 더 포함하는 것을 특징으로 하는 데이터 관리를 위해 데이터 스트림 내의 경계 지점들을 결정하는 방법.
  20. 제 19 항에 있어서,
    상기 값을 생성시키는 것은 해싱에 의해 수행되는 것을 특징으로 하는 데이터 관리를 위해 데이터 스트림 내의 경계 지점들을 결정하는 방법.
  21. 제 20 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 경계 지점(들)에 의해 정의된 데이터 청크 내에 포함된 데이터를 해싱함에 의해 발견되는 중복 데이터를 제거하는 단계를 더 포함하는 것을 특징으로 하는 데이터 관리를 위해 데이터 스트림 내의 경계 지점들을 결정하는 방법.
  22. 데이터 프로세싱 시스템으로서:
    프로세싱 유닛과;
    상기 프로세싱 유닛이 제 1 선택 함수 - 상기 제 1 선택 함수는 박스카 합산(boxcar sum) 함수, MLCG 함수, 또는 rolN-xor 함수를 포함한다 - 를 사용하여 데이터 스트림 내에서 복수의 데이터 윈도우들의 일부분을 사전-선택하도록 된 제 1 선택 함수 모듈과; 그리고
    상기 프로세싱 유닛이 사전-선택된 상기 복수의 윈도우들의 상기 일부분의 서브세트를 제 2 선택 함수 - 상기 제 2 선택 함수는 라빈 핑거프린트(Rabin fingerprint) 함수, SHA-1 함수, 또는 CRC32c 함수를 포함한다 - 를 사용하여 선택하도록 된 제 2 선택 함수 모듈을 포함하여 구성되며,
    상기 프로세싱 유닛은:
    상기 제 2 선택 함수에 의해 선택되는 새로운 데이터 윈도우 또는 데이터 청크 내에 포함되는 기저 데이터와, 앞서 정의된 데이터 윈도우(들) 또는 데이터 청크(들)로부터 앞서 인카운터된(encountered) 기저 데이터를 비교하고;
    상기 새로운 데이터 윈도우에 포함된 상기 기저 데이터가 상기 앞서 인카운터된 기저 데이터와 같지 아니한 경우에는 상기 새로운 데이터 윈도우에 포함된 상기 기저 데이터를 출력시키고;
    상기 새로운 데이터 청크 내에 포함된 상기 기저 데이터가 상기 앞서 인카운터된 기저 데이터와 같은 경우에는 상기 새로운 데이터 청크 내에 포함된 상기 기저 데이터를 출력시키지 않도록 된 것을 특징으로 하는 데이터 프로세싱 시스템.
  23. 삭제
  24. 제 22 항에 있어서,
    상기 제1 선택 함수 모듈은 상기 데이터 중지 지점들 또는 데이터 윈도우들을 사전 선택하도록 구성되고; 그리고
    상기 제2 선택 함수 모듈은 상기 사전 선택된 데이터 중지 지점들 또는 데이터 윈도우들의 서브세트를 선택하도록 구성되며,
    상기 제1 선택 함수 모듈은 상기 제2 선택 함수 모듈보다 빠르게 상기 데이터 중지 지점들 또는 데이터 윈도우들을 프로세싱하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 제 22 항에 있어서,
    상기 데이터 프로세싱 시스템은 해싱 시스템이며, 내용-정의 데이터 블록(들) 또는 청크 지점(들)을 출력시키는 것을 특징으로 하는 데이터 프로세싱 시스템.
KR1020087021627A 2006-12-01 2007-11-21 다수의 선택 기준을 이용하는 데이터 관리 방법들 및 시스템들 KR101541146B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/566,122 US7844581B2 (en) 2006-12-01 2006-12-01 Methods and systems for data management using multiple selection criteria
US11/566,122 2006-12-01

Publications (2)

Publication Number Publication Date
KR20090094055A KR20090094055A (ko) 2009-09-03
KR101541146B1 true KR101541146B1 (ko) 2015-07-31

Family

ID=39469410

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087021627A KR101541146B1 (ko) 2006-12-01 2007-11-21 다수의 선택 기준을 이용하는 데이터 관리 방법들 및 시스템들

Country Status (9)

Country Link
US (1) US7844581B2 (ko)
EP (1) EP2087418A4 (ko)
JP (1) JP5154566B2 (ko)
KR (1) KR101541146B1 (ko)
CN (1) CN101379465B (ko)
AU (1) AU2007325319B2 (ko)
CA (1) CA2640736C (ko)
TW (1) TWI459726B (ko)
WO (1) WO2008067226A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005391A1 (en) * 2006-06-05 2008-01-03 Bugra Gedik Method and apparatus for adaptive in-operator load shedding
US7890480B2 (en) * 2008-02-11 2011-02-15 International Business Machines Corporation Processing of deterministic user-defined functions using multiple corresponding hash tables
US20090204636A1 (en) * 2008-02-11 2009-08-13 Microsoft Corporation Multimodal object de-duplication
US8452736B2 (en) * 2008-03-05 2013-05-28 Ca, Inc. File change detection
US7539710B1 (en) * 2008-04-11 2009-05-26 International Business Machines Corporation Method of and system for deduplicating backed up data in a client-server environment
US8122069B2 (en) * 2008-07-09 2012-02-21 Hewlett-Packard Development Company, L.P. Methods for pairing text snippets to file activity
US7953752B2 (en) * 2008-07-09 2011-05-31 Hewlett-Packard Development Company, L.P. Methods for merging text snippets for context classification
US8117343B2 (en) * 2008-10-28 2012-02-14 Hewlett-Packard Development Company, L.P. Landmark chunking of landmarkless regions
US8140491B2 (en) * 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US8538188B2 (en) * 2009-08-04 2013-09-17 Mitre Corporation Method and apparatus for transferring and reconstructing an image of a computer readable medium
US8180740B1 (en) * 2009-08-12 2012-05-15 Netapp, Inc. System and method for eliminating duplicate data by generating data fingerprints using adaptive fixed-length windows
CA2772185C (en) * 2009-08-25 2014-07-15 Sumitomo Metal Industries, Ltd. Bent member and an apparatus and method for its manufacture
US8924439B2 (en) * 2009-09-01 2014-12-30 Verizon Patent And Licensing Inc. System for and method of partial file hashing
US8407193B2 (en) * 2010-01-27 2013-03-26 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
JP5372853B2 (ja) * 2010-07-08 2013-12-18 株式会社日立製作所 デジタルシーケンス特徴量算出方法及びデジタルシーケンス特徴量算出装置
US8397080B2 (en) * 2010-07-29 2013-03-12 Industrial Technology Research Institute Scalable segment-based data de-duplication system and method for incremental backups
US8495093B2 (en) 2010-08-18 2013-07-23 International Business Machines Corporation Multiway trie data structure that dynamically adjusts node sizes in a manner that reduces memory footprint and improves access speed
WO2012070094A1 (en) * 2010-11-26 2012-05-31 Hitachi, Ltd. Computer system
WO2012112121A1 (en) * 2011-02-17 2012-08-23 Jitcomm Networks Pte Ltd Parallel data partitioning
JP5708107B2 (ja) * 2011-03-23 2015-04-30 日本電気株式会社 重複ファイル検出装置
US8666955B2 (en) 2011-04-11 2014-03-04 Hitachi, Ltd. Data management method and data management system
WO2013027230A1 (en) * 2011-08-19 2013-02-28 Hitachi, Ltd. Storage apparatus and duplicate data detection method
US8880493B2 (en) * 2011-09-28 2014-11-04 Hewlett-Packard Development Company, L.P. Multi-streams analytics
KR101382273B1 (ko) * 2011-09-30 2014-04-10 인하대학교 산학협력단 Ssd 저장장치의 마모도 감소를 위한 ssd 기반 서버급 저장장치의 복합적 데이터 중복제거 방법
US8959082B2 (en) 2011-10-31 2015-02-17 Elwha Llc Context-sensitive query enrichment
EP2810171B1 (en) 2012-02-02 2019-07-03 Hewlett-Packard Enterprise Development LP Systems and methods for data chunk deduplication
WO2013158066A1 (en) 2012-04-16 2013-10-24 Hewlett-Packard Development Company, L.P. File upload based on hash value comparison
US20150088840A1 (en) * 2012-05-01 2015-03-26 Kave Eshghi Determining segment boundaries for deduplication
US9164688B2 (en) 2012-07-03 2015-10-20 International Business Machines Corporation Sub-block partitioning for hash-based deduplication
KR101956031B1 (ko) 2012-10-15 2019-03-11 삼성전자 주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US10592347B2 (en) 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US10496490B2 (en) 2013-05-16 2019-12-03 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US9514312B1 (en) * 2014-09-05 2016-12-06 Symantec Corporation Low-memory footprint fingerprinting and indexing for efficiently measuring document similarity and containment
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US9805180B2 (en) * 2015-10-27 2017-10-31 Blackberry Limited Message sender authentication
JP6113816B1 (ja) * 2015-11-18 2017-04-12 株式会社東芝 情報処理システム、情報処理装置、及びプログラム
EP3282588B1 (en) * 2016-08-09 2019-09-25 Siemens Aktiengesellschaft Method, system and program product for data transmission with a reduced data volume
US10795860B1 (en) * 2017-04-13 2020-10-06 EMC IP Holding Company LLC WAN optimized micro-service based deduplication
US10795859B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC Micro-service based deduplication
US10860212B1 (en) 2017-07-21 2020-12-08 EMC IP Holding Company LLC Method or an apparatus to move perfect de-duplicated unique data from a source to destination storage tier
US10936543B1 (en) 2017-07-21 2021-03-02 EMC IP Holding Company LLC Metadata protected sparse block set for SSD cache space management
US11461269B2 (en) 2017-07-21 2022-10-04 EMC IP Holding Company Metadata separated container format
US10459633B1 (en) 2017-07-21 2019-10-29 EMC IP Holding Company LLC Method for efficient load balancing in virtual storage systems
US10949088B1 (en) 2017-07-21 2021-03-16 EMC IP Holding Company LLC Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system
US11113153B2 (en) 2017-07-27 2021-09-07 EMC IP Holding Company LLC Method and system for sharing pre-calculated fingerprints and data chunks amongst storage systems on a cloud local area network
US10481813B1 (en) 2017-07-28 2019-11-19 EMC IP Holding Company LLC Device and method for extending cache operational lifetime
US10929382B1 (en) 2017-07-31 2021-02-23 EMC IP Holding Company LLC Method and system to verify integrity of a portion of replicated data
US11093453B1 (en) 2017-08-31 2021-08-17 EMC IP Holding Company LLC System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication
US10866928B2 (en) 2018-09-10 2020-12-15 Netapp, Inc. Methods for optimized variable-size deduplication using two stage content-defined chunking and devices thereof
US11061932B2 (en) 2018-10-06 2021-07-13 Teradata Us, Inc. Methods and system for managing storage with multiple simultaneous data temperature models
US10938961B1 (en) * 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008131594A (ja) * 2006-11-24 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> アプリケーション制御システムおよび制御方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6263336B1 (en) * 1997-02-27 2001-07-17 Seiko Epson Corporation Text structure analysis method and text structure analysis device
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置
AU2001286973A1 (en) * 2000-08-31 2002-03-13 Ontrack Data International, Inc. System and method for data management
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US6658423B1 (en) * 2001-01-24 2003-12-02 Google, Inc. Detecting duplicate and near-duplicate files
EP1244221A1 (en) * 2001-03-23 2002-09-25 Sun Microsystems, Inc. Method and system for eliminating data redundancies
EP1419457B1 (en) * 2001-08-20 2012-07-25 Symantec Corporation File backup system and method
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US20050060643A1 (en) * 2003-08-25 2005-03-17 Miavia, Inc. Document similarity detection and classification system
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US7281006B2 (en) * 2003-10-23 2007-10-09 International Business Machines Corporation System and method for dividing data into predominantly fixed-sized chunks so that duplicate data chunks may be identified
US8135683B2 (en) * 2003-12-16 2012-03-13 International Business Machines Corporation Method and apparatus for data redundancy elimination at the block level
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
US7269689B2 (en) * 2004-06-17 2007-09-11 Hewlett-Packard Development Company, L.P. System and method for sharing storage resources between multiple files
US7487138B2 (en) * 2004-08-25 2009-02-03 Symantec Operating Corporation System and method for chunk-based indexing of file system content
US7680798B2 (en) * 2004-11-20 2010-03-16 International Business Machines Corporation Method, device and system for automatic retrieval of similar objects in a network of devices
US7487169B2 (en) * 2004-11-24 2009-02-03 International Business Machines Corporation Method for finding the longest common subsequences between files with applications to differential compression
US7564458B2 (en) * 2004-12-15 2009-07-21 Microsoft Corporation System and method for interactively linking data to shapes in a diagram
WO2006094365A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for storing data with reduced redundancy using data clusters
US7984018B2 (en) * 2005-04-18 2011-07-19 Microsoft Corporation Efficient point-to-multipoint data reconciliation
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7844652B2 (en) * 2006-04-11 2010-11-30 Emc Corporation Efficient computation of sketches
US8126911B2 (en) * 2006-04-27 2012-02-28 Intel Corporation System and method for content-based partitioning and mining
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US7504969B2 (en) * 2006-07-11 2009-03-17 Data Domain, Inc. Locality-based stream segmentation for data deduplication
US7843823B2 (en) * 2006-07-28 2010-11-30 Cisco Technology, Inc. Techniques for balancing throughput and compression in a network communication system
US7797323B1 (en) * 2006-10-11 2010-09-14 Hewlett-Packard Development Company, L.P. Producing representative hashes for segments of a file

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008131594A (ja) * 2006-11-24 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> アプリケーション制御システムおよび制御方法

Also Published As

Publication number Publication date
US7844581B2 (en) 2010-11-30
AU2007325319B2 (en) 2011-11-17
KR20090094055A (ko) 2009-09-03
EP2087418A4 (en) 2012-06-13
CN101379465A (zh) 2009-03-04
EP2087418A1 (en) 2009-08-12
CN101379465B (zh) 2013-03-27
WO2008067226A1 (en) 2008-06-05
CA2640736C (en) 2014-10-14
JP5154566B2 (ja) 2013-02-27
CA2640736A1 (en) 2008-06-05
US20080133446A1 (en) 2008-06-05
TWI459726B (zh) 2014-11-01
AU2007325319A1 (en) 2008-06-05
JP2010512565A (ja) 2010-04-22
TW200835174A (en) 2008-08-16

Similar Documents

Publication Publication Date Title
KR101541146B1 (ko) 다수의 선택 기준을 이용하는 데이터 관리 방법들 및 시스템들
KR101414970B1 (ko) 고속의 효율적 데이터 관리 및/또는 처리를 위한 방법 및 시스템
Xia et al. A comprehensive study of the past, present, and future of data deduplication
Kruus et al. Bimodal content defined chunking for backup streams.
US8112477B2 (en) Content identification for peer-to-peer content retrieval
US8447740B1 (en) Stream locality delta compression
US8650162B1 (en) Method and apparatus for integrating data duplication with block level incremental data backup
JP6227007B2 (ja) データ圧縮領域へのデータの実時間分類
US20100287383A1 (en) Techniques for detecting encrypted data
US9696936B2 (en) Applying a maximum size bound on content defined segmentation of data
US10817474B2 (en) Adaptive rate compression hash processor
US11709810B1 (en) Delivery of digital information to a remote device
US11921633B2 (en) Deduplicating data based on recently reading the data
US20110083019A1 (en) Protecting de-duplication repositories against a malicious attack
US20150019833A1 (en) Hierarchical content defined segmentation of data
Zhang et al. Improving restore performance of packed datasets in deduplication systems via reducing persistent fragmented chunks
US9483483B2 (en) Applying a minimum size bound on content defined segmentation of data
CN111198857A (zh) 一种基于全闪存阵列的数据压缩方法及系统
US20240104066A1 (en) Efficient file-delivery techniques

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180712

Year of fee payment: 4