KR20210022503A - 연관 유사성 검색을 통한 데이터의 중복 제거 - Google Patents

연관 유사성 검색을 통한 데이터의 중복 제거 Download PDF

Info

Publication number
KR20210022503A
KR20210022503A KR1020200104150A KR20200104150A KR20210022503A KR 20210022503 A KR20210022503 A KR 20210022503A KR 1020200104150 A KR1020200104150 A KR 1020200104150A KR 20200104150 A KR20200104150 A KR 20200104150A KR 20210022503 A KR20210022503 A KR 20210022503A
Authority
KR
South Korea
Prior art keywords
fingerprint
block
similar
database
new
Prior art date
Application number
KR1020200104150A
Other languages
English (en)
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 KR20210022503A publication Critical patent/KR20210022503A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

중복 제거 시스템은 유사성 검색기, 차이 계산기, 및 저장 장치 매니저를 포함한다. 유사성 검색기는 새로운 블록의 핑거프린트와 유사한 복수의 로컬 센시티브 핑거프린트를 저장하는 데이터 베이스에서 유사 핑거프린트를 검색한다. 차이 계산기는 입력 블록과 발견된 유사 핑거프린트와 연관된 유사 블록 사이의 차이 블록을 계산하고, 저장 장치 매니저는 새로운 핑거프린트로 데이터 베이스를 업데이트하고, 차이 블록이 비어있지 않으면, 스토어에 차이 블록을 저장한다. 중복 제거 방법은 데이터 베이스를 검색하는 단계, 새로운 블록의 새로운 핑거프린트와 유사한 복수의 로컬 센시티브 핑거프린트, 유사 핑거프린트를 저장하는 단계, 유사 핑거프린트와 연관된 유사 블록과 입력 블록 간의 차이 블록을 계산하는 단계, 발견되면 새로운 핑거프린트로 데이터 베이스를 업데이트하고 차이 블록이 비어있지 않으면 차이 블록을 저장 장치 유닛에 저장하는 단계를 포함한다.

Description

연관 유사성 검색을 통한 데이터의 중복 제거{DEDUPLICATION OF DATA VIA ASSOCIATIVE SIMILARITY SEARCH}
본 출원은 2019년 8월 19일에 출원된 미국 특허 가출원 제62/888,580호 및 2020년 2월 19일 출원된 제62/978,336호의 우선권을 주장하며, 이는 원용에 의해 그 전체로서 본원에 포함된다.
본 발명은 일반적으로 데이터 중복 제거를 위한 기술에 관한 것이며, 특히 개선된 중복 제거 기술에 관한 것이다.
컴퓨터 사용 시, 데이터 중복 제거(dedup)는 반복되는 데이터의 중복 사본을 제거하기 위한 기술이다. 이 기술은 저장 장치의 활용도를 높이는데 사용되며, 엄청난 양의 저장된 데이터가 중복되는 경우에 특히 중요하다. 예를 들어, 한 직원이 첨부 파일이 있는 이메일을 대규모 메일링 목록의 직원들에게 보내는 경우에 동일한 데이터가 중복 저장될 수 있다. 이 경우 이메일 시스템은 일반적으로 첨부 파일의 모든 사본을 저장한다.
중복 제거 프로세스에서, 데이터의 고유한 블록이 식별되고 저장된다. 새로운 블록은 저장된 블록과 비교되며, 일치가 발생할 때마다 중복 블록은 저장된 블록을 가리키는 작은 레퍼런스로 대체된다. 동일한 블록이 수십, 수백, 또는 심지어 수천 번 발생할 수 있다는 점을 감안하면, 저장되어야 하는 데이터의 양이 감소될 수 있다.
중복 제거의 목적은 대량의 데이터를 검사하고, 동일한 큰 섹션 - 전체 파일 또는 파일의 큰 섹션과 같은 - 을 식별하고 이를 공유 사본으로 대체하는 것이다. 예를 들어, 전형적인 종래 기술의 이메일 시스템은 동일한 1MB (메가 바이트) 파일 첨부의 인스턴스 100개를 포함할 수 있다. 이메일 플랫폼이 백업될 때마다, 100개의 첨부 파일 인스턴스가 모두 저장되므로, 100MB의 저장 공간이 필요하다. 데이터 중복 제거를 사용하면, 첨부 파일의 한 인스턴스만 실제로 저장되고 후속하는 인스턴스는 약 100:1의 비율로 중복 제거를 위해 저장된 사본으로 다시 참조된다.
데이터 중복 제거의 한 형태는 중복을 검출하기 위해 데이터의 전체 블록을 비교함으로써 작동한다. 블록 크기는 물리적 계층 제약 (예를 들어, 4KB 블록 크기)에 의해 정의될 수 있으며, 전체 파일만큼 클 수 있다.
다른 형태의 중복 제거는 먼저 각 블록을 모든 실제적인 목적을 위해 원래 데이터를 고유하게 식별하는 훨씬 더 짧은 비트 문자열(핑거프린트(fingerprint)라고도 함)에 매핑하고, 핑거프린트를 비교함으로써 작동한다. 핑거프린트가 블록의 아이덴티티를 캡쳐할 수 있다는 것이 이해될 수 있는데, 즉, 동일한 핑거프린트를 생성하는 2개의 동일하지 않은 블록의 확률은 무시할 수 있다는 것으로 이해될 수 있다.
핑거프린팅(fingerprinting)은 SHA-1과 같은 보안 해시 알고리즘(secured hash algorithms, SHA)을 포함하는 임의의 알려진 알고리즘을 사용하여 수행될 수 있다. SHA-1 함수는 모든 크기의 입력에서 작동하며, 20B 출력을 생성한다. 다양한 입력 블록 간의 작은 변경으로 인해 20B 출력이 무작위로 변경되도록 작동하므로, 따라서, 입력 블록의 약간의 변경은 핑거프린트에 상당한 차이를 생성한다.
인라인 데이터(inline data) 중복 제거(중복 제거는 이후 단계가 아닌 시스템에 진입할 때 수행됨)를 제공하는 종래 시스템은 데이터를 블록으로 분할하고, 각 블록에 대한 핑거프린트를 생성하며 새로운 입력 핑거프린트를 핑거프린트 테이블에 저장된 핑거프린트와 비교한다. 비교 결과가 데이터베이스에 정확히 동일한 핑거프린트가 존재한다고 지시하면, 이는 새로운 블록과 동일한 블록이 이미 저장되어 있다는 것을 암시하므로, 발견된 핑거프린트의 데이터 베이스에서의 엔트리(entry)는 새로운 블록 정보를 포함하도록 업데이트된다. 비교가 실패하면(즉, 핑거프린트 데이터 베이스에 새로운 핑거프린트와 동일한 엔트리가 없으면), 새로운 핑거프린트가 데이터 베이스에 저장되고, 그 블록이 데이터 스토어(data store)에 저장된다.
오프라인 중복 제거 프로세스를 제공하는 종래 시스템은 온라인 프로세스의 처리량에 영향을 주지 않으면서 저장된 데이터를 후처리하여 이미 저장된 중복된 블록을 찾고 해제한다. 오프라인 중복 제거 시스템은 일반적으로 동일한 비교 작업을 수행하지만, 그들의 저장 장치를 사전에 방지하는 대신에 중복된 블록을 해제한다.
인라인 중복 제거는 중복 데이터가 저장되거나 또는 전송되지 않기 때문에, 오프라인 중복 제거보다 적은 저장 장치 및 네트워크 트래픽을 필요로 한다; 그러나, 해시 계산(hash calculation)은 계산 비용이 많이 들며 프로세스 처리량에 영향을 미칠 수 있다.
본 발명의 바람직한 실시예에 따르면, 유사성 검색기, 차이 계산기, 및 저장 장치 매니저를 포함하는 중복 제거 시스템이 제공된다. 유사성 검색기는 입력 블록의 새로운 핑거프린트와 유사한 복수의 로컬 센시티브한 핑거프린트를 저장하는 핑거프린트 데이터 베이스에서 유사 핑거프린트를 검색한다. 차이 계산기는 유사 핑거프린트가 발견되면, 입력 블록 및 유사 핑거프린트와 연관된 유사 블록 사이의 차이 블록을 계산하고, 차이 블록이 비어있지 않으면, 저장 장치 매니저는 새로운 핑거프린트로 핑거프린트 데이터 베이스를 업데이트하고, 차이 블록을 저장 장치 유닛에 저장한다.
또한, 본 발명의 바람직한 실시예에 따르면, 유사 핑거프린트가 발견되지 않으면, 저장 장치 매니저는 상기 입력 블록을 저장한다.
또한, 본 발명의 바람직한 실시예에 따르면, 저장 장치 매니저는 연관 메모리 디바이스의 칼럼에 핑거프린트를 저장하고, 유사성 검색기는 연관 메모리 디바이스 내부에서 검색을 수행한다.
더욱이, 본 발명의 바람직한 실시예에 따르면, 시스템은 또한 로컬-센시티브 해싱(locallity-sensitive hashing, LSH) 알고리즘을 사용하여 새로운 핑거프린트를 생성하여 약간 상이한 입력 블록에 대해 약간 상이한 새로운 핑거프린트를 생성하는, 핑거프린트 생성기를 더 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 핑거프린트 데이터 베이스는 다중-레벨 구조로 배치되고, 상위 레벨은 하위 레벨의 클러스터에 대한 센트로이드(centroid)를 포함하며, 최하위 레벨은 블록의 핑거프린트를 포함하고, 센트로이드는 상기 핑거프린트로부터 계산된다.
또한, 본 발명의 바람직한 실시예에 따르면, 저장 장치 매니저는 연관 메모리 디바이스의 칼럼에 최상위 레벨의 핑거프린트를 저장하고, 최상위 레벨에서의 검색은 연관 메모리 디바이스의 내부에서 수행되며, 하위 레벨에서의 검색은 CPU에서 수행된다.
또한, 본 발명의 바람직한 실시예에 따르면, 시스템은 또한 입력 블록을 더 작은 서브-블록으로 분할하는 블록 스플리터; 상기 서브-블록 각각에 대해 충돌 저항 핑거프린트(collision resistance fingerprint)를 생성하는 충돌 저항 핑거프린트 생성기; 및 핑거프린트 데이터 베이스에서, 충돌 저항 핑거프린트와 일치하는 동일한 핑거프린트를 검색하는 정확 검색기를 또한 포함한다. 저장 장치 매니저는 충돌 저항 핑거프린트로 핑거프린트 데이터 베이스를 업데이트하고 동일한 핑거프린트가 발견되지 않은 서브-블록을 저장한다.
본 발명의 바람직한 실시예에 따르면, 중복 제거 방법이 제공된다. 본 방법은 입력 블록의 새로운 핑거프린트와 유사한 복수의 로컬 센시티브 핑거프린트, 유사 핑거프린트를 저장하는 단계; 입력 블록 및 유사 핑거프린트와 연관된 유사 블록 사이의 차이 블록을 계산하는 단계; 유사 핑거프린트가 발견되면 새로운 핑거프린트로 데이터 베이스를 업데이트하는 단계 및 차이 블록이 비어있지 않으면 차이 블록을 저장 장치 유닛에 저장하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 저장하는 단계는 또한 유사 핑거프린트가 발견되지 않으면 입력 블록을 저장하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 방법은 또한 핑거프린트를 연관 메모리 디바이스의 칼럼에 로딩하는 단계를 포함하고, 검색하는 단계는 연관 메모리 디바이스 내부에서 수행된다.
추가로, 본 발명의 바람직한 실시예에 따르면, 본 방법은 LSH 알고리즘을 사용하여 새로운 핑거프린트를 생성하여 약간 상이한 입력 블록에 대해 약간 상이한 새로운 핑거프린트를 생성하는 단계를 포함한다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 핑거프린트 데이터 베이스는 다중-레벨 구조로 배치된 계층적 데이터 베이스이고, 상위 레벨은 하위 레벨의 클러스터에 대한 센트로이드를 포함하며, 센트로이드는 핑거프린트로부터 계산되며, 최하위 레벨은 블록의 핑거프린트를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 로딩하는 단계는 연관 메모리의 칼럼에 최상위 레벨의 핑거프린트를 로딩하는 단계를 포함하고, 검색하는 단계는, 연관 메모리 디바이스가, 최상위 레벨에서 검색을 수행하는 단계, 및 CPU가, 하위 레벨에서 검색을 수행하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 본 방법은 입력 블록을 더 작은 서브-블록으로 분할하는 단계; 서브-블록 각각에 대해 충돌 저항 핑거프린트를 생성하는 단계; 핑거프린트 데이터 베이스에서, 충돌 저항 핑거프린트 각각에 대한 정확한 일치를 찾기 위해 정확한 검색을 수행하는 단계를 또한 포함한다. 본 방법은 또한 충돌 저항 핑거프린트로 핑거프린트 데이터 베이스를 업데이트하는 단계; 및 동일한 핑거프린트가 발견되지 않은 서브-블록을 저장하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 본 방법은 입력 블록의 핑거프린트 및 충돌 저항 알고리즘을 사용하여 생성된 핑거프린트의 데이터 베이스 사이의 정확한 검색을 수행하는 단계; 및 정확한 일치가 발견되지 않으면 검색을 수행하는 단계를 포함한다.
본 발명으로 간주되는 발명의 대상은 명세서의 결론 부분에서 특히 지적되고 명확하게 청구된다. 그러나, 본 발명은 그 목적, 특징, 및 장점과 함께 작동의 구성 및 방법 모두에 관해서는 첨부된 도면과 함께 이하의 상세한 설명을 참조하여 읽는 경우에 가장 잘 이해될 수 있다.
도 1은 본 발명의 일 실시예에 따라 구성되고 동작하는 중복 제거 시스템에 의해 구현되는 흐름의 개략도이다.
도 2a 및 도 2b는 도 1의 흐름을 구현하는 본 발명의 일 실시예에 따라 구성되고 동작하는 중복 제거 시스템의 개략도이다.
도 3은 본 발명의 일 실시예에 따라 구성되고 동작하는 계층적 구조로 조직된 핑거프린트 데이터 베이스의 대안적인 실시예의 개략도이다.
도 4a, 도 4b, 및 도 4c는 본 발명의 실시예에 따라 구성되고 구현된, 도 3의 계층적 데이터 베이스를 이용하는 중복 제거 시스템의 개략도이다.
도 5는 본 발명의 일 실시예에 따라 구성되고 동작하는 도 4a, 도 4b, 및 도 4c의 시스템에 의해 구현되는 흐름의 개략도이다.
도 6은 도 3의 계층적 데이터 베이스를 관리하는, 본 발명의 일 실시예에 따라 구성되고 동작하는 계층적 저장 장치 매니저의 개략도이다.
도 7a, 도 7b, 및 도 7c는 본 발명의 일 실시예에 따라 구성되고 동작하는, 서브-블록을 처리하는 중복 제거 시스템의 개략도이다.
예시의 단순성 및 명료함을 위해, 도면에 도시된 요소가 반드시 일정한 비율로 도시된 것은 아님을 이해할 것이다. 예를 들어, 일부 요소의 치수는 명확성을 위해 다른 요소에 비해 과장될 수 있다. 또한, 적절하다고 간주되는 경우, 도면 간에 참조 번호가 반복되어 대응되거나 유사한 요소를 나타낼 수 있다.
이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 기술된다. 그러나, 통상의 기술자는 본 발명이 이러한 특정 세부 사항 없이도 실시될 수 있다는 것을 이해할 것이다. 다른 경우에, 공지된 방법, 프로세스, 및 구성 요소는 본 발명을 모호하게 하지 않기 위해 상세히 기술되지 않았다.
출원인은 핑거프린트 생성 단계와 핑거프린트 비교 단계를 모두 개선함으로써 온라인 중복 제거 작업의 성능 및 처리량이 향상될 수 있다는 것을 깨달았다. 출원인은 또한 약간 변경된 전체 블록 (예를 들어, 문서 또는 소스 코드의 버전, 또는 변경 사항이 적은 이미지/비디오)이 아닌 유사 블록 간의 상대적인 변경 사항만 저장함으로써 저장 장치 효율성이 향상될 수 있다는 것 또한 깨달았다.
출원인은 로컬-센시티브 해싱(locality-sensitive hashing, LSH) 알고리즘과 같이 약간 상이한 블록에서 동작하는 경우에 약간 상이한 출력을 제공하는 핑거프린팅 방법을 사용하여 약간 상이한 블록에 약간 상이한 핑거프린트를 제공할 수 있으며, 따라서, (종래 기술의 중복 제거 방법에서와 같이 동일한 블록, 상이한 블록의 경우 사이만 구별하는 대신) 동일, 유사, 비유사 블록의 경우 사이를 구별하는 방식을 제공할 수 있다는 것을 깨달았다. 출원인은 또한 해밍 거리(Hamming distance) 또는 타니모토 거리(Tanimoto distance)와 같은 유사 핑거프린트를 검색하는 방법을 사용하여 핑거프린트를 비교하고, 가장 유사한 블록을 찾을 수 있다는 것을 깨달았다.
본 발명의 실시예는 LSH 알고리즘을 사용하여 유사 블록에 유사 핑거프린트를 생성하고, 연관 처리를 수행할 수 있는 메모리 디바이스에 핑거프린트를 저장하고, 유사 핑거프린트가 존재하면 새로운 핑거프린트와 저장된 핑거프린트 사이에 효율적인 유사성 검색을 실행하여 이를 찾음으로써, 중복 제거 동작의 성능과 저장 장치의 효율성을 향상시킬 수 있다. 새로운 핑거프린트는 결국은 저장될 수 있으며, 전체 비유사 블록 또는 (검출된 유사 핑거프린트에 의해 지시되는) 새로운 블록과 이미 저장된 유사 블록 간의 변경이 데이터 베이스에 저장될 수 있다. 이하에서 기술되는 바와 같이, 연관 메모리 디바이스의 칼럼에 계층적 방식으로 핑거프린트를 저장함으로써 추가적인 개선이 달성될 수 있다.
본 발명의 실시예는 본 발명의 공동 양수인에게 양수되고 본 명세서에 참조로 포함된 미국 특허 제9,558,812호에 기술된 것과 같은 메모리 디바이스를 사용할 수 있다는 것을 알 수 있다. 유사성 검색은 본 발명의 공동 양수인에게 양수되고 본원에 참조로 포함된 미국 특허 제2018/0341642호에 기술된 것과 유사할 수 있다는 것 또한 알 수 있다.
이제 참조되는 도 1은 본 발명의 실시예에 따라 구성된 시스템에 의해 구현되는 흐름(100)의 개략도이다.
단계 110에서, 시스템은 새로운 블록(101)을 수신할 수 있고, LSH 알고리즘을 사용하여 새로운 블록에 대해 새로운 핑거프린트를 생성할 수 있다. 단계 120에서, 시스템은 새로운 핑거프린트와 로컬 센시티브 핑거프린트 데이터 베이스에 저장된 핑거프린트 사이의 유사성 검색을 수행할 수 있다. 단계 130에서, 시스템은 유사 핑거프린트가 발견되었는지 검사할 수 있으며, 여기서 유사 핑거프린트는 생성된 핑거프린트로부터의 거리가 미리 정의된 임계값보다 작은 핑거프린트일 수 있다. 유사 핑거프린트가 발견되면, 단계 140에서 시스템은 새로운 블록(101)과 위치된 유사 핑거프린트와 연관된 저장된 블록 간의 차이를 계산할 수 있으며, 핑거프린트 데이터 베이스에 핑거프린트 정보를 업데이트하고 계산된 차이를 차이 데이터 스토어에 저장할 수 있다. 유사 핑거프린트가 발견되지 않은 경우, 단계 150에서 시스템은 데이터 베이스에 새로운 블록을 저장할 수 있으며, 핑거프린트 데이터 베이스에 새로운 핑거프린트를 추가할 수 있다.
이제 참조되는 도 2a는 본 발명의 실시예에 따라 구성되고 동작하는 흐름(100)을 구현하는 중복 제거 시스템(200)의 개략도이다. 중복 제거 시스템(200)은 블록의 핑거프린트를 저장하기 위한 핑거프린트 데이터 베이스(205), 연관 메모리 디바이스(210), 데이터의 전체 블록을 저장하기 위한 블록 데이터 스토어(270), 및 저장된 블록과 약간 상이한 블록 사이의 변경을 저장하기 위한 차이 데이터 스토어(275)를 포함한다.
연관 메모리 디바이스(210)는 메모리 어레이(220), 로컬 센시티브 핑거프린트 생성기(230), 유사성 검색기(240), 차이 계산기(250), 및 저장 장치 매니저(260)를 포함한다.
메모리 어레이(220)는 레코드(221)를 저장하는 복수의 칼럼을 포함하고, 각 레코드는 블록을 나타낸다. 레코드(221)는 핑거프린트(222)(특정 블록에 대한 키) 및 값(223)을 포함한다. 핑거프린트(222)는 블록의 아이덴티티를 캡쳐할 수 있으며, 값(223)은 다른 데이터 중에서도 표시된 블록과 유사하거나 동일한 블록 데이터 스토어(270)의 블록의 위치에 관한 정보 및 특정 블록이 저장된 블록과 약간 상이한 경우에는 차이 데이터 스토어(275)의 (블록 데이터스토어(270)의 기존 블록과 레코드(221)로 표시된 블록 간의 변경을 포함하는) 차이 블록의 위치에 대한 가능한 정보를 가질 수 있다.
로컬 센시티브 핑거프린트 생성기(230)는 새로운 블록(101)을 수신할 수 있으며, LSH 알고리즘을 사용하여 새로운 LSH 핑거프린트(202)를 생성할 수 있다. 전술한 바와 같이, LSH 알고리즘은 약간 상이한 다른 입력에 대해 약간 상이한 출력을 생성할 수 있으므로, 로컬 센시티브 핑거프린트 생성기(230)는 약간 상이한 블록에 대해 약간 상이한 핑거프린트를 생성할 수 있다.
유사성 검색기(240)는 새로운 LSH 핑거프린트(202)와 메모리 어레이(220)에 저장된 (레코드(221)의) 핑거프린트(222)를 비교할 수 있다. 만일 유사성 검색기(240)가 유사 핑거프린트(222x) (레코드(221x)의 핑거프린트(222))를 발견하면, 핑거프린트(222x)와 연관된 유사 블록(203)을 페치(fetch)한다. 만일 유사성 검색기(240)가 하나 이상의 유사 핑거프린트(222x)를 발견하면, 이는 새로운 블록(101)과 가장 유사한 (가장 비슷한) 것을 선택한다. 만일 유사성 검색기(240)가 어떠한 유사 핑거프린트도 찾지 못하면, 이는 발견되지 않았음을 가르킨다.
유사성 검색기(240)는 (예를 들어, 전술한 해밍 거리 또는 타니모토 거리 알고리즘과 같은) 임의의 알려진 거리 계산 알고리즘을 사용할 수 있고, 가장 유사한 최소 거리 값을 가지는 핑거프린트(222x)를 선택할 수 있다. 2개의 핑거프린트 사이의 계산된 거리가 미리 결정된 값(임계값)보다 작은 경우 핑거프린트(222x)는 유사 새로운 핑거프린트(202)와 유사한(비슷한) 것으로 간주될 수 있으며, 그렇지 않으면 유사 핑거프린트(222x)를 찾지 않을 수 있다.
만일 유사성 검색기(240)가 유사 핑거프린트(222x)를 찾으면, 유사 블록(203)은 블록 데이터 스토어(270)로부터 페치될 수 있다. 차이 계산기(250)는 새로운 블록(101)과 유사 블록(203) 사이의 차이를 계산할 수 있고, 차이에 대한 정보를 포함하는 차이 블록(204)을 생성할 수 있다. 새로운 블록(101)은 유사 블록(203) 및 차이 블록(204)으로부터 복구될 수 있다. 차이 블록(204)은 전형적으로 새로운 블록(201)보다 작으므로, 전체 블록을 저장하는 것보다 적은 공간을 사용할 수 있다는 것이 이해될 수 있다. 데이터가 문서로 구성되는 경우, 차이 계산기(250)는 새로운 블록(101)을 생성하기 위해 유사 블록(203)에서 수행되어야 하는 편집 명령을 포함하는 차이 블록(204)을 생성하기 위해 편집 검색 접근법을 사용할 수 있다.
저장 장치 매니저(260)는 새로운 블록(101), 차이 블록(204), 및 새로운 LSH 핑거프린트(202)를 처리할 수 있다. 저장 장치 매니저(260)는 블록 데이터 스토어(270)에 새로운 블록(101)을 저장할 수 있고, 차이 데이터 스토어(275)에 차이 블록(204)을 저장할 수 있으며, 새로운 LSH 핑거프린트(202)로부터 새로운 레코드(221) 및 관련된 블록(블록 데이터 스토어(270)의 유사 블록 및 차이 데이터 스토어(275)의 차이 블록(204))의 위치에 관한 새로운 블록(101)과 관련된 정보를 생성할 수 있으며, 새로운 레코드(221)를 핑거프린트 데이터 베이스(205)에 삽입할 수 있다.
도 2b는 동일한 참조 번호가 매칭 요소를 나타내는 시스템(200)의 대안적인 도면을 제공한다.
출원인은, 유사성 검색기(240) 및 저장 장치 매니저(260)는 레코드(221)가 레벨에 따라 배치되는 경우에 향상된 성능을 제공할 수 있다는 것을 추가로 깨달았다. 레코드(221)가 고른(flat) 배치로 구성되는 경우, 유사성 검색기(240)는 가장 유사한 핑거프린트를 찾기 위해 새로운 블록(101)의 LSH 핑거프린트(202)를 레코드(221)에 저장된 이전에 생성된 모든 핑거프린트(222)와 비교할 필요가 있을 수 있는데, 이는 핑거프린트의 개수가 많은 경우(페타바이트)에 비용이 많이 드는 작업이다. 그러나, 저장 장치 매니저(260)가 계층적 구조로 배치된 클러스터로 레코드(221)를 관리하는 경우, 유사성 검색기(240)는 전체 데이터 베이스가 아닌 관련 클러스터만 검색할 수 있어서, 검색 효율을 높일 수 있다. 계층적 구조의 레벨의 개수는 데이터 베이스의 예상 크기 또는 저장 장치의 크기 및/또는 검색의 효율성에 영향을 미칠 수 있는 임의의 다른 특성에 의해 결정될 수 있다. 키의 다중 레벨의 계층적 구조는 효율적인 검색을 수행할 필요가 있는 다른 어플리케이션에 의해서도 또한 사용될 수 있음이 이해될 수 있다.
이제 참조되는 도 3은 3개의 레벨의 계층적 구조로 구성된 핑거프린트 데이터 베이스(305)의 대안적인 실시예의 개략도이다. 이 예시에서, 1 페타바이트 핑거프린트 레코드(221)는, 첫번째의 최상위 레벨(310)이 256K 핑거프린트 레코드(221)를 저장할 수 있고, 각각은 두번째의 중간 레벨(320)에 저장된 1K 핑거프린트 레코드(221)의 클러스터의 센트로이드(centroid)이며, 두번째 레벨(320)의 각각의 핑거프린트 레코드(221)는 세번째의 최하위 레벨(330)의 1K 핑거프린트의 클러스터의 센트로이드일 수 있도록 분할될 수 있다.
센트로이드의 제1 레벨을 저장하는 레벨(310)은, 본원에서 가장 많은 개수의 핑거프린트를 저장하는 계층적 데이터 베이스(305)의 최상위 레벨이라고 지칭한다. 실제 핑거프린트를 저장하는 레벨(330)은 본원에서 최하위 레벨이라고 지칭한다. 최상위 레벨(310)과 최하위 레벨(330) 사이에 위치한 중간 레벨(320)은 센트로이드의 중간 레벨을 저장할 수 있다. 계층적 데이터 베이스(305)는 임의의 개수의 중간 레벨(320)을 포함할 수 있고, 단일의 중간 레벨로 한정되지 않는다는 것을 이해할 수 있다.
각 레벨의 센트로이드는 다음 레벨의 핑거프린트의 그룹을 나타내는 핑거프린트를 포함하고, 여기서 그룹의 모든 멤버들이 서로 유사하고 (비슷하고) 다른 그룹의 핑거프린트와는 상이하다는 것이 이해될 수 있다. 센트로이드는 그것이 나타내는 클러스터의 중심으로 계산될 수 있다.
이러한 계층적 구조에 저장된 핑거프린트 레코드(221)의 개수는 데이터 스토어(270 및 275)에 저장된 1PB 데이터를 나타내는 256K x 1K x 1K 라는 것을 알 수 있다. 전술한 바와 같이, 연관 메모리 디바이스(210)에 핑거프린트 레코드(221)를 로딩하는 것은 효율적인 유사성 검색을 수행할 수 있게 할 수 있다.
이제 참조되는 도 4a는 본 발명의 실시예에 따라 구성되고 구현되는 중복 제거 시스템(400)의 개략도이다. 중복 제거 시스템(400)은 계층적 핑거프린트 데이터 베이스(305)에서 유사성 검색을 수행하기 위해 계층적 핑거프린트 데이터 베이스(305) 및 연관 메모리 디바이스(410)를 포함하는 중복 제거 시스템(200)의 대안적인 실시예이다. 중복 제거 시스템(400)은 또한 블록 데이터 스토어(270) 및 차이 데이터 스토어(275)를 포함한다.
연관 메모리 디바이스(410)는 핑거프린트 데이터 베이스(305), 메모리 어레이(220), 로컬 센시티브 핑거프린트 생성기(230), 유사성 검색기(240) 및 차이 계산기(250)를 처리하기 위한 계층적 저장 장치 매니저(460)를 포함한다.
계층적 저장 장치 매니저(460)는 임의의 개수의 레벨을 가지는 계층적 핑거프린트 데이터 베이스(305)에 대해 다중 레벨 유사성 검색을 수행할 수 있다. 도 4의 예시에서는 3개의 레벨이 도시된다. 각 레벨은 핑거프린트 데이터 베이스(305)의 저장 장치 유닛에 저장될 수 있고, 유사성 검색기(240)가 그 레벨에서 검색을 수행할 필요가 있는 경우에 메모리 어레이(220)에 다운로드될 수 있다. 유사성 검색기(240)는 하위 레벨이 작고 약 1K 핑거프린트를 포함하는 경우에, 그들을 메모리 어레이(220)로 다운로드하고 연관 메모리에 대해 유사성 검색을 수행하는 대신에 계층적 핑거프린트 데이터 베이스(305)의 하위 레벨(중간 및 최하위)에 대해 유사성 검색을 수행하도록 CPU를 사용할 수 있다는 것이 이해될 수 있다.
전술한 바와 같이, 각각의 핑거프린트 레코드(221)는 키 및 값을 포함하고, 유사성 검색기(240)는 메모리 어레이(220) 상에서 유사 키를 검색하기 위해 키 부분을 사용할 수 있다. 마지막 레벨을 제외한 모든 레벨의 핑거프린트의 값은 레코드의 다음 레벨에 관한 정보를 포함하고, 여기서, 검색은 유사 블록이 이미 데이터 스토어(270)에 저장되어 있을 수 있다는 것을 가르키는 현재 레벨에서의 검색이 성공하면, 검색이 계속될 수 있다. 모든 레벨의 키는 동일한 구조를 가지고 있을 수 있다는 것이 이해될 수 있다. 상위 레벨(최상위 및 중간 레벨)에서 키는 다음 레벨에 있는 키의 센트로이드로 계산되고, 최하위 레벨에서 키는 특정 블록에 대해 계산된 실제 핑거프린트이다.
유사성 검색기(240)는 유사한 핑거프린트(222x)가 마지막 레벨에서 발견되거나, 유사 핑거프린트가 (어떤 레벨에서도) 검출되지 않은 경우에 검색을 완료할 수 있다. 유사성 검색기(240)는 만일 메모리 어레이(220)의 핑거프린트(222x)와 새로운 LSH 핑거프린트(202) 사이의 거리가 임계값보다 작으면, 메모리 어레이(220)의 핑거프린트(222x)가 새로운 LSH 핑거프린트(202)와 유사(비슷)하다고 결정할 수 있다. 각 레벨에 대해 상이한 임계값이 정의될 수 있다. 유사성 검색기(240)가 어떠한 유사 핑거프린트(222x)도 찾지 못하면, 이는 아무것도 발견되지 않았음을 지시한다. 유사성 검색기(240)가 마지막 레벨이 아닌 레벨에서 유사 핑거프린트(222x)를 발견하면, 계층적 저장 장치 매니저(460)는 다음 레벨의 핑거프린트를 메모리 어레이(220)에 다운로드할 수 있고, 유사성 검색기(240)가 새로 다운로드된 핑거프린트에서 검색을 수행하도록 할 수 있다.
유사성 검색기(240)가 마지막 레벨에서 유사 핑거프린트(222x)를 발견하면, 차이 계산기(250)는 차이 블록(204)을 계산할 수 있고, 계층적 저장 장치 매니저(460)는 차이 블록(204)을 차이 데이터 스토어(275)에 저장할 수 있으며, 새로운 LSH 핑거프린트(202)와 연관된 정보를 업데이트하여 핑거프린트(222x)와 연관된 유사 블록(203)의 위치 및 차이를 포함하는 차이 블록(204)의 위치를 포함하도록 할 수 있다.
도 4b 및 도 4c는 함께 시스템(400)의 대안적인 도면을 제공하는데, 여기서 동일한 참조 번호는 매칭 요소를 지시한다.
이제 참조하는 도 5는 본 발명의 실시예에 따라 구성되고 동작하는 시스템(400)에 의해 구현되는 흐름(500)의 개략도이다. 흐름(500)에서, 레코드(221)는 계층적 핑거프린트 데이터 베이스(305)의 3개의 레벨에 저장될 수 있으며, 여기서 계층의 마지막 하나를 제외한 각 레벨의 레코드는 다음 레벨에 대한 센트로이드를 저장할 수 있으며, 마지막 레벨은 블록 데이터 스토어(270) 및 차이 데이터 스토어(275)에 실제 관련 블록을 가리키는 핑거프린트를 저장할 수 있다.
단계 510에서, 연관 메모리 디바이스(210)는 새로운 블록(101)을 수신할 수 있고, 검색 레벨이 계층적 핑거프린트 데이터 베이스(305)의 제1 레벨이 되도록 설정할 수 있으며, 로컬 센시티브 핑거프린트 생성기(230)는 새로운 블록(101)에 대해 새로운 LSH 핑거프린트(202)를 생성할 수 있다. 단계 520에서, 계층적 저장 장치 매니저(460)는 레코드(221)를 계층적 핑거프린트 데이터 베이스(305)의 검색 레벨로부터 메모리 어레이(220)에 로드할 수 있고, 유사성 검색기(240)는 새로운 LSH 핑거프린트(202)와 메모리 어레이(220)에 저장된 레코드(221) 사이의 유사성 검색을 수행할 수 있다. 단계 520에서, 유사성 검색기(240)는 새로운 LSH 핑거프린트(202)와 유사한(비슷한) 핑거프린트(222x)가 발견되었는지 결정할 수 있다. 유사 핑거프린트가 발견되지 않았으면, 연관 메모리 디바이스(210)는 단계 570을 계속할 수 있으며; 그러나, 핑거프린트(222x)가 발견되었으면, 단계 540에서 검색 레벨이 심사된다. 유사 핑거프린트(222x)가 발견된 검색 레벨이 핑거프린트 데이터 베이스(305)의 마지막 레벨이면, 연관 메모리 디바이스(210)는 단계 550으로 계속될 수 있으며, 그렇지 않으면 단계 560이 실행될 수 있다.
유사한 핑거프린트(222x)가 마지막 레벨에서 발견되면, 단계 550에서, 차이 계산기(250)는 유사 핑거프린트(222x)와 연관된 블록인 유사 블록(203)을 페치할 수 있으며, 새로운 블록(101)과 유사 블록(203) 간의 차이를 계산하고 차이 블록(204)을 생성할 수 있다. 계층적 저장 장치 매니저(460)는 차이 데이터 스토어(275)에 차이 블록(204)을 저장할 수 있고, 계층적 핑거프린트 데이터 베이스(305)의 현재 검색 레벨에 (새로운 LSH 핑거프린트(202), 블록 데이터 스토어(270)에서의 유사 블록(204)의 블록 위치, 및 차이 데이터 스토어(275)에서의 차이 블록(204)의 위치를 포함할 수 있는) 새로운 레코드(221)를 저장할 수 있다. 계층적 저장 장치 매니저(460)는 클러스터가 언밸런싱이 되면 선택적으로 핑거프린트 데이터 베이스(305)를 리밸런싱할 수 있다.
유사 블록(203)이 중간 레벨에서 발견되면, 단계 560에서 레벨이 업데이트되고, 연관 메모리 디바이스(210)는 핑거프린트 데이터 베이스(305)의 새로운 레벨과 함께 단계 520으로 되돌아갈 수 있다. 단계 570에서, 유사 핑거프린트(222x)가 발견되었을 때 도달되면, 계층적 저장 장치 매니저(460)는 블록 데이터 스토어(270)에 새로운 블록(101)을 저장할 수 있고, LSH 핑거프린트(202)를 포함하는 새로운 레코드(221)로 핑거프린트 데이터 베이스(305)를 업데이트할 수 있다. 계층적 저장 장치 매니저(460)는 언밸런싱이 되면 핑거프린트 데이터 베이스(305)를 선택적으로 리밸런싱할 수 있다.
전술한 바와 같이, 핑거프린트 데이터 베이스(305)는 레벨에 따라 배치될 수 있고, 다른 단계에서 데이터 베이스의 다른 부분이 메모리 어레이(220)에 로드될 수 있다. 각 레코드는 메모리 어레이(220)의 칼럼에 벡터로 저장될 수 있다. 벡터는 키 - 특정 블록 및 값을 식별하는 핑거프린트를 포함한다. 마지막 레벨에서, 값은 유사하거나 동일한 블록의 위치를 포함하고, 선택적으로 차이 블록의 위치를 포함한다. 다른 모든 레벨에서, 레코드의 (마지막 하나를 제외한) 키는 유사한 핑거프린트의 그룹을 나타내는 센트로이드이며, 값은 센트로이드에 의해 표시되는 벡터들의 클러스터의 어드레스를 포함한다.
모든 레벨의 레코드는 동일한 키 포맷을 가질 수 있으며, 유사성 검색기(240)는 각 레벨에서 동일한 검색을 수행할 수 있다. 전형적으로, 제1 레벨은 레코드의 가장 큰 세트를 포함할 수 있으며, 또한 메모리 어레이(220)에 저장될 수 있고, 다른 레벨은 필요에 따라 메모리 어레이(220)에 로드될 수 있는 더 적은 개수의 레코드를 포함할 수 있거나 CPU에 의해 처리되는 것으로 상술하였다. 도 3의 예시에서, 제1 레벨의 레코드의 개수는 256K이고, 서로 다른 레벨의 레코드의 개수는 1K이다.
이제 참조되는 도 6은 본 발명의 실시예에 따라 구성되고 동작하는 계층적 저장 장치 매니저(460)의 개략도이다. 계층적 저장 장치 매니저(460)는 연관 메모리 디바이스(210) 및 그것이 사용하는 데이터 베이스의 저장 장치의 모든 양태를 책임질 수 있다. 계층적 저장 장치 매니저(460)는 센트로이드 결정기(610) 및 업데이터(620)를 포함한다.
센트로이드 결정기(610)는 유사성 검색기(240)가 마지막 레벨이 아닌 레벨에서 유사 핑거프린트를 찾지 못한 이후에 새로운 대표 핑거프린트(601)(센트로이드)를 계산할 수 있다. 새로운 대표 핑거프린트(601)는 그것이 나타내는 클러스터 내의 모든 핑거프린트의 평균으로 계산될 수 있다.
업데이터(620)는 흐름(500)에서 마지막 레벨이 아닌 레벨을 업데이트하는 경우에 새로운 대표 핑거프린트(601)를 사용할 수 있지만(도 5), 마지막 레벨을 업데이트하는 경우에는 새로운 LSH 핑거프린트(202)를 사용할 수 있다.
중복 제거 시스템(400)을 사용하여 새로운 블록(101)을 작성하는 오버헤드는 핑거프린트 데이터 베이스(305)에서의 검색을 포함할 수 있다. 검색이 성공하면, 쓰기 동작은 유사 핑거프린트(222x)와 연관된 정보의 업데이트 및 차이 데이터 스토어(275)의 차이 블록(204)의 저장 동작을 포함할 수 있다. 검색이 실패하면, 쓰기 동작은 블록 데이터 스토어(270)에 새로운 블록(101)의 쓰기 동작 및 핑거프린트 데이터 베이스(305)의 업데이트를 포함할 수 있다.
중복 제거 시스템(400)으로부터 블록 Y를 페칭하는 오버헤드는 블록(221y)을 얻기 위한 블록 데이터 스토어(270)로부터의 읽기 동작을 포함할 수 있고, 선택적으로 차이를 블록(221y)에 적용함으로써 원래 블록을 재구성하는 동작과 결합한 차이 데이터 스토어(275)로부터의 읽기 동작을 포함할 수 있다.
연관 메모리 디바이스(210)의 크기 및 성능은 시스템이 처리해야 하는 데이터의 크기에 의존할 수 있다. 메모리 어레이(220)의 크기는 처리되어야 하는 데이터의 크기 이외에도 계층적 데이터 베이스(305)의 레벨의 개수에 의존할 수 있다.
4K의 256G 블록으로 이루어진 1PB 데이터를 처리하도록 설계된 시스템의 경우, 각 블록은 256 비트 핑거프린트로 표시되며, 레벨의 크기는 메모리 어레이(220)의 크기를 결정할 수 있다. 제1 레벨의 크기가 256K이고, 서로 다른 레벨의 크기가 1K라고 가정하면, 필요한 크기는 256K + 1K + 1K, 즉, 258K이다. 제일 큰 제1 레벨(256K)은 오프라인으로 메모리 어레이(220)에 로드될 수 있으며, 연관 메모리 디바이스(210)의 동작을 통해 그 곳에 남아있을 수 있다. 다음으로, 훨씬 더 작은 레벨(클러스터의 제2 레벨 및 제3 레벨, 각 클러스터의 크기는 1K)는 런타임에 메모리 어레이(220)에 로드될 수 있으며, 대안적으로 CPU에서 처리될 수 있다. 1PB 데이터를 4K 블록으로 저장하기 위한 핑거프린트 데이터 베이스(305)의 크기는 약 8TB (256b/8 256K ×1K ×1K)일 수 있다는 것이 유의될 수 있다.
중복 제거 시스템(400)은 기존 중복 제거 시스템보다 저렴할 수 있다는 것을 이해할 수 있을 것이다. 빠른 유사성 검색은 더 저렴하며, (약간 상이한 전체 블록을 저장하는 대신) 유사 블록 간의 변경만 저장되기 때문에 동일한 개수의 블록을 저장하는데 필요한 저장 장치보다 더 적다. 저장 장치의 총 크기를 감소시키는 것은 더 적은 저장 장치 드라이버, 더 적은 저장 장치 서버 등과 같은 저장 장치를 처리하는데 필요한 요소의 개수 또한 감소시킬 수 있다. 계층적 핑거프린트 데이터 베이스(305)는 온라인으로 구축될 수 있고, 그 성능을 유지하기 위해 (전체 블록 스토어의 대표성을 유지하고 왜곡되는 것을 방지하기 위해) 오프라인으로 리밸런싱될 수 있다. 이는 쓰기 빈도를 최소화해야 하는 SSD(solid-state drive) 저장 장치에 대한 이상적인 해결책일 수 있다.
중복 제거 시스템의 추가적인 실시예는, 기존 시스템에서 수행되는 바와 같이 먼저 새로운 블록의 핑거프린트와 SHA-1과 같은 충돌 저항 알고리즘을 사용하여 생성된 핑거프린트 데이터 베이스 사이에서 정확한 검색을 수행하는 모듈을 포함할 수 있다는 것이 이해될 수 있으며, 일단 정확한 일치가 발견되지 않으면 단지 차이만을 저장하기 위해 본원에 기술된 연관 메모리 디바이스(410)를 사용할 수 있다는 것이 이해될 수 있다.
(전체 블록을 저장하는) 기존의 중복 제거 시스템에 익숙한 일부 사용자는 원래 블록이 재생성될 수 있는 차이점을 저장하는 것을 꺼릴 수 있으며, 재생성하는 처리 단계없이 원본 컨텐츠에 접근할 수 있다면 더 안전하다고 느낄 수 있다. 현재의 중복 제거 시스템에 비해 향상된 저장 효율성 (즉, 중복 최소화)을 제공하면서 원본 컨텐츠를 유지하는 시스템은 상술한 바와 같이 새 블록에 대해 유사성 검색을 수행할 수 있지만, 각각의 새 블록을 메시지-다이제스트 알고리즘 MD5(message-digest algorithm MD5) 또는 더 작은 핑거프린트를 생성하는 CRC(cyclic redundancy check)와 같은 충돌 저항 해시 함수에 의해 핑거프린트가 생성될 수 있는 서브 블록으로 분할될 수 있으며, 2개의 유사 블록 사이에서 상이한 서브-블록만 저장할 수 있다. 원래 블록은 저장된 서브-블록으로 쉽게 구성될 수 있다.
이제 참조되는 도 7a는 본 발명의 실시예에 따라 구성되고 동작하는 서브-블록들을 처리하는 중복 제거 시스템(700)의 개략도이다. 중복 제거 시스템(700)은 연관 메모리 디바이스(710), 다중-키 계층적 핑거프린트 데이터 베이스(705) 및 블록 스토어(770)를 포함한다. 블록 스토어(770)는 각각의 새로운 입력 블록(101)의 서브 블록(101-j)들을 저장할 수 있다. 연관 메모리 디바이스(710)는 로컬 센시티브 핑거프린트 생성기(230), 블록 스플리터(720), 충돌 저항 핑거프린트 생성기(725), (유사성 검색기(240) 이외에 정확 검색기(745)를 포함하는) 검색기(740), 및 다중-키 저장 장치 매니저(760)를 포함한다.
다중-키 계층적 핑거프린트 데이터 베이스(705)는 계층의 상이한 레벨에 상이한 유형의 키를 저장할 수 있다. 상위 레벨(최하위 레벨을 제외한 모든 레벨)에서 핑거프린트 데이터 베이스(705)는 새로운 LSH 핑거프린트(202)와 같이 핑거프린트(222)가 LSH 키인 레코드를 저장할 수 있고, 새로운 충돌 저항 핑거프린트(702)와 같이 핑거프린트가 충돌 저항 키(227)인 레코드를 저장할 수도 있다. 다중-키 계층적 핑거프린트 데이터 베이스(705)의 상위 레벨에 있는 레코드의 키는 센트로이드 핑거프린트일 수 있고, 최하위 레벨에 있는 레코드의 키는 블록(101)의 서브-블록(101-j)에 대한 접근을 제공하는 충돌 저항 핑거프린트(702)일 수 있다.
로컬 센시티브 핑거프린트 생성기(230)는 새로운 LSH 핑거프린트(202)를 생성할 수 있다. 블록 스플리터(720)는 블록(101)을 더 작은 서브-블록(101-j)으로 분할할 수 있다. 예를 들어, 블록(101)의 크기가 4K이면, 블록 스플리터(720)는 이를 각각 256 바이트의 16개의 서브-블록(101-j)으로 분할할 수 있다. 충돌 저항 핑거프린트 생성기(725)는 각각의 서브-블록(101-j)에 대해 새로운 충돌 저항 핑거프린트(702)를 생성할 수 있다. 유사성 검색기(240)는 센트로이드를 저장하는 다중-키 계층적 핑거프린트 데이터 베이스(705)의 상위 레벨에서 유사성 검색을 수행하여 새로운 LSH 핑거프린트(202)와 유사한 핑거프린트를 가지는 레코드를 찾을 수 있다.
정확 검색기(240)는 동일한 핑거프린트를 찾기 위해 각각의 서브-블록(101-j)의 새로운 충돌 저항 핑거프린트(702)와 핑거프린트 데이터 베이스(705)의 최하위 레벨의 레코드 사이에서 정확한 검색을 수행할 수 있다.
유사성 검색기(240)가 상위 레벨을 검색하는 경우(정확한 일치가 발견되지 않는 경우)에 (새로운 LSH 핑거프린트(202)와 유사한) 유사 핑거프린트(222x)를 찾지 못하면, 다중-키 저장 장치 매니저(760)는 새로운 블록(101)의 모든 서브-블록(101-j)을 데이터 베이스(705)에 삽입할 수 있고, LSH 핑거프린트(202)를 사용하여 생성된 관련 센트로이드로 다중-키 계층적 핑거프린트 데이터 베이스(705)의 상위 레벨을 업데이트하며, 서브-블록(101-j)의 충돌 저항 핑거프린트(702)로 다중-키 계층적 핑거프린트 데이터 베이스(705)의 최하위 레벨을 업데이트한다.
만일 유사성 검색기(240)가 상위 계층에서 유사 핑거프린트(222x)를 발견하면, 정확 검색기(745)는 각각의 새로운 충돌 저항 핑거프린트(702)를 찾기 위해 정확한 검색을 수행할 수 있다. 동일한 충돌 저항 핑거프린트가 발견되면(정확한 일치가 발견되면), 다중-키 저장 장치 매니저(760)는 동일한 서브-블록의 위치를 포함하도록 충돌 저항 핑거프린트(702)를 업데이트할 수 있다. 다중-키 계층적 핑거프린트 데이터 베이스(705)의 최하위 레벨에서 동일한 핑거프린트가 발견되지 않으면, 다중-키 저장 장치 매니저(760)는 LSH 핑거프린트(202)를 사용하여 상위 레벨의 센트로이드를 업데이트하고, 계산된 센트로이드를 다중-키 계층적 핑거프린트 데이터 베이스(705)에 삽입하며, 새로운 서브-블록(101-j)을 데이터 베이스(705)에 삽입한다.
도 7b 및 도 7c는 함께 시스템(700)의 대안적인 도면을 제공하는데, 여기서 동일한 참조 번호는 매칭 요소를 나타낸다.
본 발명의 실시예는 입력 블록과 유사한 블록을 찾고 새로운 문서를 저장하는 것 대신에, 그 이전에 유사 문서의 세트를 회수(retrieve)하도록 구성될 수 있다.
중복 제거 시스템(700)은 대부분의 데이터에서 동일한 컨텐츠를 공유하는 2개의 블록(예를 들어, 15 개의 서브-블록이 동일하고 단지 하나만 상이한 경우)이 블록의 크기의 2배보다 더 작은 크기를 소비할 수 있기 때문에, 표준 중복 제거 시스템보다 더 적은 데이터 저장 장치를 요구할 수 있으며, 이는 표준 중복 제거 시스템(예시에서, 중복 제거 시스템(700)의 저장 장치 소비는 블록 크기의 1.6배일 수 있음)에서 저장 장치 소비가 될 것이라는 것이 이해될 수 있다.
본 명세서에서 기술된 상이한 흐름에 도시된 단계는 한정하려는 의도가 아니며, 흐름이 더 많거나 더 적은 단계로 또는 상이한 순서의 단계로, 또는 그들의 임의의 조합으로 실행될 수 있다는 것을 통상의 기술자는 이해할 수 있을 것이다.
다른 도면에 도시되고 본 명세서에 기술된 시스템의 다른 부분은 한정하려는 의도가 아니며 시스템이 더 많거나 더 적은 부분, 또는 그 부분의 다른 배치, 또는 전체 시스템의 활동을 수행하는 하나 이상의 프로세서, 또는 그들의 임의의 조합에 의해 구현될 수 있다는 것이 통상의 기술자는 이해할 수 있을 것이다.
달리 구체적으로 언급되지 않는 한, 전술한 논의로부터 명백한 바와 같이, 명세서 전체에 걸쳐 "처리", "계산", "계산하는 것", "결정" 등과 같은 용어를 사용하여 한 논의는 클라이언트/서버 시스템, 모바일 컴퓨팅 디바이스, 스마트 기기, 또는 컴퓨팅 시스템의 메모리, 레지스터, 또는 기타 정보 저장 장치, 전송 또는 디스플레이 디바이스 내에서 컴퓨팅 시스템의 레지스터 및/또는 메모리를 다른 데이터로 조작 및/또는 변환하는 클라우드 컴퓨팅 유닛 또는 유사한 컴퓨팅 디바이스와 같은 임의의 유형의 범용 컴퓨터의 작업 및/또는 동작을 의미한다는 것으로 이해된다.
본 발명의 실시예는 본원에서의 동작을 수행하기 위한 장치를 포함할 수 있다. 이러한 장치는 원하는 목적을 위해 특별히 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된, 전형적으로 적어도 하나의 프로세서 및 적어도 하나의 메모리를 갖는 컴퓨팅 디바이스 또는 시스템을 포함할 수 있다. 소프트웨어에 의해 지시되는 경우 결과 장치는 본원에서 논의된 바와 같이 범용 컴퓨터를 진보성있는 요소로 바꿀 수 있다. 명령은 원하는 컴퓨터 플랫폼과 함께 동작하는 본 발명의 디바이스를 정의할 수 있다. 이러한 컴퓨터 프로그램은 광학 디스크, 자기 광학 디스크, 읽기 전용 메모리(ROM), 휘발성 및 비휘발성 메모리, RAM(Random Access Memory), EPROM(Electrical Programmable Read-Only Memory), EEPROM(Electrical Erasable and Programmable Read Only Memory), 마그네틱 또는 광학 카드, 플래시 메모리, Disk-on-key, 또는 전자 명령을 저장하는데 적합하고 컴퓨터 시스템 버스에 연결될 수 있는 임의의 다른 유형의 매체를 포함하는 임의의 유형의 디스크와 같은, 그러나 이에 한정되지는 않는, 컴퓨터 판독 가능한 저장 매체에 저장될 수 있다. 컴퓨터 판독 가능한 저장 매체는 또한 클라우드 저장 장치에서 구현될 수도 있다.
일부 범용 컴퓨터는 데이터 네트워크 및/또는 이동 통신 네트워크와의 통신을 가능하게 하는 적어도 하나의 통신 요소를 포함할 수 있다.
본 명세서에 제시된 프로세스 및 디스플레이는 본질적으로 특정 컴퓨터 또는 다른 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따라 프로그램과 함께 사용될 수 있거나, 원하는 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 이러한 다양한 시스템에 대해 원하는 구조는 이하의 설명으로부터 나타날 것이다. 또한, 본 발명의 실시예는 임의의 특정 프로그래밍 언어를 참조하여 기술되지 않는다. 본 명세서에 기술된 바와 같이 본 발명의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있다는 것이 이해될 것이다.
본 발명의 특정 특징이 본 명세서에서 예시되고 기술되었지만, 많은 수정, 대체, 변경, 및 균등물이 이제 통상의 기술자에게 발생할 것이다. 따라서, 첨부된 청구범위는 본 발명의 진정한 사상에 속하는 이러한 모든 수정 및 변경을 포함하도록 의도된 것임을 이해해야 한다.

Claims (15)

  1. 중복 제거 시스템으로서,
    복수의 핑거프린트가 저장된 핑거프린트 데이터 베이스에서, 입력 블록의 새로운 핑거프린트와 유사한 유사 핑거프린트를 검색하기 위한 유사성 검색기;
    유사 핑거프린트가 발견되면, 상기 입력 블록 및 상기 유사 핑거프린트와 연관된 유사 블록 사이의 차이 블록을 계산하기 위한 차이 계산기; 및
    상기 차이 블록이 비어있지 않으면, 상기 새로운 핑거프린트로 상기 핑거프린트 데이터 베이스를 업데이트하고, 또한 상기 차이 블록을 저장 장치 유닛에 저장하기 위한 저장 장치 매니저를 포함하는,
    중복 제거 시스템.
  2. 제1항에 있어서,
    유사 핑거프린트가 발견되지 않으면, 상기 저장 장치 매니저는 상기 입력 블록을 저장하는,
    중복 제거 시스템.
  3. 제1항에 있어서,
    상기 저장 장치 매니저는 연관 메모리 디바이스의 칼럼에 핑거프린트를 저장하고, 상기 유사성 검색기는 상기 연관 메모리 디바이스 내부에서 상기 검색을 수행하는,
    중복 제거 시스템.
  4. 제1항에 있어서,
    로컬-센시티브 해싱(locality-sensitive hashing, LSH) 알고리즘을 사용하여 상기 새로운 핑거프린트를 생성하여 약간 상이한 입력 블록에 대해 약간 상이한 새로운 핑거프린트를 생성하는, 핑거프린트 생성기를 더 포함하는,
    중복 제거 시스템.
  5. 제1항에 있어서,
    상기 핑거프린트 데이터 베이스는 다중-레벨 구조로 배치되고,
    상위 레벨은 하위 레벨의 클러스터에 대한 센트로이드(centroid)를 포함하며, 최하위 레벨은 블록의 핑거프린트를 포함하고, 상기 센트로이드는 상기 핑거프린트로부터 계산되는,
    중복 제거 시스템.
  6. 제5항에 있어서,
    상기 저장 장치 매니저는 연관 메모리 디바이스의 칼럼에 최상위 레벨의 핑거프린트를 저장하고,
    상기 최상위 레벨에서의 상기 검색은 상기 연관 메모리 디바이스의 내부에서 수행되며,
    하위 레벨에서의 상기 검색은 CPU에서 수행되는,
    중복 제거 시스템.
  7. 제5항에 있어서,
    상기 입력 블록을 더 작은 서브-블록으로 분할하는 블록 스플리터;
    상기 서브-블록 각각에 대해 충돌 저항 핑거프린트를 생성하는 충돌 저항 핑거프린트(collision resistance fingerprint) 생성기; 및
    상기 핑거프린트 데이터 베이스에서, 상기 충돌 저항 핑거프린트와 일치하는 동일한 핑거프린트를 검색하는 정확 검색기를 더 포함하고,
    상기 저장 장치 매니저는 상기 충돌 저항 핑거프린트로 상기 핑거프린트 데이터 베이스를 업데이트하고, 또한 동일한 핑거프린트가 발견되지 않은 서브-블록을 저장하는,
    중복 제거 시스템.
  8. 중복 제거 방법으로서,
    복수의 핑거프린트가 저장된 핑거프린트 데이터 베이스에서, 입력 블록의 새로운 핑거프린트와 유사한 유사 핑거프린트를 검색하는 단계;
    유사 핑거프린트가 발견되면, 상기 입력 블록 및 상기 유사 핑거프린트와 연관된 유사 블록 사이의 차이 블록을 계산하는 단계;
    상기 새로운 핑거프린트로 상기 핑거프린트 데이터 베이스를 업데이트하는 단계; 및
    상기 차이 블록이 비어있지 않으면, 상기 차이 블록을 저장 장치 유닛에 저장하는 단계를 포함하는,
    중복 제거 방법.
  9. 제8항에 있어서,
    상기 저장하는 단계는,
    유사 핑거프린트가 발견되지 않으면, 상기 입력 블록을 저장하는 단계를 포함하는,
    중복 제거 방법.
  10. 제8항에 있어서,
    상기 핑거프린트를 연관 메모리 디바이스의 칼럼에 로딩하는 단계를 더 포함하고,
    상기 검색하는 단계는 상기 연관 메모리 디바이스 내부에서 수행되는,
    중복 제거 방법.
  11. 제8항에 있어서,
    LSH 알고리즘을 사용하여 상기 새로운 핑거프린트를 생성하여 약간 상이한 입력 블록에 대해 약간 상이한 새로운 핑거프린트를 생성하는 단계를 더 포함하는,
    중복 제거 방법.
  12. 제10항에 있어서,
    상기 핑거프린트 데이터 베이스는 다중-레벨 구조로 배치된 계층적 데이터 베이스이고,
    상위 레벨은 하위 레벨의 클러스터에 대한 센트로이드를 포함하며, 최하위 레벨은 블록의 핑거프린트를 포함하고, 상기 센트로이드는 상기 핑거프린트로부터 계산되는,
    중복 제거 방법.
  13. 제12항에 있어서,
    상기 로딩하는 단계는 연관 메모리 디바이스의 칼럼에 최상위 레벨의 핑거프린트를 로딩하는 단계를 포함하고,
    상기 검색하는 단계는,
    상기 연관 메모리 디바이스가, 상기 최상위 레벨에서 검색을 수행하는 단계, 및
    CPU가, 하위 레벨에서 검색을 수행하는 단계를 포함하는,
    중복 제거 방법.
  14. 제13항에 있어서,
    상기 입력 블록을 더 작은 서브-블록으로 분할하는 단계;
    상기 서브-블록 각각에 대해 충돌 저항 핑거프린트를 생성하는 단계;
    상기 핑거프린트 데이터 베이스에서, 상기 충돌 저항 핑거프린트 각각에 대한 정확한 일치를 찾기 위해 정확한 검색을 수행하는 단계;
    상기 충돌 저항 핑거프린트로 상기 핑거프린트 데이터 베이스를 업데이트하는 단계; 및
    동일한 핑거프린트가 발견되지 않은 서브-블록을 저장하는 단계를 포함하는,
    중복 제거 방법.
  15. 제8항에 있어서,
    상기 입력 블록의 핑거프린트 및 충돌 저항 알고리즘을 사용하여 생성된 핑거프린트의 데이터 베이스 사이의 정확한 검색을 수행하는 단계; 및
    정확한 일치가 발견되지 않으면 상기 검색을 수행하는 단계를 더 포함하는,
    중복 제거 방법.
KR1020200104150A 2019-08-19 2020-08-19 연관 유사성 검색을 통한 데이터의 중복 제거 KR20210022503A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962888580P 2019-08-19 2019-08-19
US62/888,580 2019-08-19
US202062978336P 2020-02-19 2020-02-19
US62/978,336 2020-02-19

Publications (1)

Publication Number Publication Date
KR20210022503A true KR20210022503A (ko) 2021-03-03

Family

ID=74603040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200104150A KR20210022503A (ko) 2019-08-19 2020-08-19 연관 유사성 검색을 통한 데이터의 중복 제거

Country Status (3)

Country Link
US (1) US20210056085A1 (ko)
KR (1) KR20210022503A (ko)
CN (1) CN112395275A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956432B2 (en) * 2017-08-30 2021-03-23 Gsi Technology Inc. One by one selection of items of a set
US11748307B2 (en) 2021-10-13 2023-09-05 EMC IP Holding Company LLC Selective data compression based on data similarity

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065619B1 (en) * 2002-12-20 2006-06-20 Data Domain, Inc. Efficient data storage system
US20070071330A1 (en) * 2003-11-18 2007-03-29 Koninklijke Phillips Electronics N.V. Matching data objects by matching derived fingerprints
EP1797510A2 (en) * 2004-10-06 2007-06-20 Permabit, Inc. A storage system for randomly named blocks of data
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US20150010143A1 (en) * 2009-04-30 2015-01-08 HGST Netherlands B.V. Systems and methods for signature computation in a content locality based cache
US8392384B1 (en) * 2010-12-10 2013-03-05 Symantec Corporation Method and system of deduplication-based fingerprint index caching
US8589640B2 (en) * 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9141554B1 (en) * 2013-01-18 2015-09-22 Cisco Technology, Inc. Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques
US9766832B2 (en) * 2013-03-15 2017-09-19 Hitachi Data Systems Corporation Systems and methods of locating redundant data using patterns of matching fingerprints
US10073853B2 (en) * 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
KR101520723B1 (ko) * 2013-12-04 2015-05-15 크루셜텍 (주) 지문 검출 장치 및 이의 구동 방법
US9678976B2 (en) * 2014-07-21 2017-06-13 Red Hat, Inc. Distributed deduplication using locality sensitive hashing
CN106663052A (zh) * 2014-09-11 2017-05-10 株式会社东芝 文件系统、数据重复排除方法以及用于文件系统的程序
US10496543B2 (en) * 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US10963177B2 (en) * 2018-04-30 2021-03-30 EMC IP Holding Company LLC Deduplication using fingerprint tries
US10860232B2 (en) * 2019-03-22 2020-12-08 Hewlett Packard Enterprise Development Lp Dynamic adjustment of fingerprints added to a fingerprint index
US11238106B2 (en) * 2019-05-17 2022-02-01 Sap Se Fingerprints for compressed columnar data search
US11593328B2 (en) * 2020-10-07 2023-02-28 Hewlett Packard Enterprise Development Lp Update of deduplication fingerprint index in a cache memory
US11341108B2 (en) * 2020-10-20 2022-05-24 Dell Products L.P. System and method for data deduplication in a smart data accelerator interface device

Also Published As

Publication number Publication date
CN112395275A (zh) 2021-02-23
US20210056085A1 (en) 2021-02-25

Similar Documents

Publication Publication Date Title
US20200356901A1 (en) Target variable distribution-based acceptance of machine learning test data sets
US8914338B1 (en) Out-of-core similarity matching
Norouzi et al. Fast exact search in hamming space with multi-index hashing
US9740422B1 (en) Version-based deduplication of incremental forever type backup
US20110040763A1 (en) Data processing apparatus and method of processing data
US9983822B1 (en) Generating and optimizing summary index levels in a deduplication storage system
CN111324750B (zh) 一种大规模文本相似度计算及文本查重方法
CN111258966A (zh) 一种数据去重方法、装置、设备及存储介质
JP6320432B2 (ja) データ重複排除における、類似性探索に基づくダイジェスト検索
JP2005267600A5 (ko)
US11544150B2 (en) Method of detecting source change for file level incremental backup
JP6807395B2 (ja) プロセッサ・グリッド内の分散データ重複排除
CN108280197B (zh) 一种识别同源二进制文件的方法及系统
US10366011B1 (en) Content-based deduplicated storage having multilevel data cache
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
KR20210022503A (ko) 연관 유사성 검색을 통한 데이터의 중복 제거
US11989185B2 (en) In-memory efficient multistep search
US10515055B2 (en) Mapping logical identifiers using multiple identifier spaces
CN112988615A (zh) 键值存储设备和操作方法
CN116821053B (zh) 数据上报方法、装置、计算机设备和存储介质
US20200019539A1 (en) Efficient and light-weight indexing for massive blob/objects
Yammahi et al. An efficient technique for searching very large files with fuzzy criteria using the pigeonhole principle
Zhang et al. Improved deduplication through parallel binning
US11314705B2 (en) Opportunistic partial deduplication
US11921690B2 (en) Custom object paths for object storage management

Legal Events

Date Code Title Description
A201 Request for examination