KR20150121505A - 데이터 중복 제거 방법 및 장치 - Google Patents

데이터 중복 제거 방법 및 장치 Download PDF

Info

Publication number
KR20150121505A
KR20150121505A KR1020140047450A KR20140047450A KR20150121505A KR 20150121505 A KR20150121505 A KR 20150121505A KR 1020140047450 A KR1020140047450 A KR 1020140047450A KR 20140047450 A KR20140047450 A KR 20140047450A KR 20150121505 A KR20150121505 A KR 20150121505A
Authority
KR
South Korea
Prior art keywords
data
fingerprint
data chunks
nth
vector
Prior art date
Application number
KR1020140047450A
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 삼성전자주식회사
Priority to KR1020140047450A priority Critical patent/KR20150121505A/ko
Priority to US14/688,076 priority patent/US20150302022A1/en
Publication of KR20150121505A publication Critical patent/KR20150121505A/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
    • 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/2228Indexing structures
    • G06F16/2272Management thereof

Landscapes

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

Abstract

데이터 중복 제거 방법이 제공된다. 데이터 중복 제거 방법은 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고, 상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고, 상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고, 정렬된 상기 제1 위치 내지 상기 제N 위치의 순서를 위치 벡터에 기록하고, 상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함하되, 상기 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해진다.

Description

데이터 중복 제거 방법 및 장치{METHOD AND DEVICE FOR DATA DEDUPLICATION}
본 발명은 데이터 중복 제거 방법 및 장치에 관한 것이다.
분산 스토리지 시스템을 비롯한 컴퓨터 시스템의 성능이 발전함에 따라 컴퓨터 시스템에서 처리되는 데이터의 규모 또한 증가하게 되어, 데이터의 저장 공간의 확보 문제가 발생한다. 특히 대규모 데이터를 저장하는 분산 스토리지 시스템에 있어서 저장 공간을 확보하기 위해 장비를 확충하는 것은 많은 비용을 발생시키므로, 주어진 저장 공간을 효율적으로 운용하여 낭비되는 저장 공간을 감소시키는 것이 필요하다. 이를 위해, 데이터 관리에 있어서 동일한 내용의 중복 데이터를 처리하기 위한 다양한 방안이 요구된다.
공개특허 제2010-256951호는 유사 데이터 검색 장치 및 그 프로그램을 개시하고 있다.
본 발명이 해결하려는 과제는 핑거프린트를 이용하여 중복 데이터를 제거하기 위한 데이터 중복 제거 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는 핑거프린트를 이용하여 중복 데이터를 제거하기 위한 데이터 중복 제거 장치를 제공하는 것이다.
본 발명이 해결하려는 과제는 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 데이터 중복 제거 방법의 일 실시예는, 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고, 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하고, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하고, 정렬된 제1 위치 내지 제N 위치의 순서를 위치 벡터에 기록하고, 위치 벡터에 기록된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함하되, 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해진다.
상기 변별 지수는 상기 중복되는 데이터 청크의 비율이 낮을수록 높게 설정되고, 상기 중복되는 데이터 청크의 비율이 높을수록 낮게 설정될 수 있다.
상기 복수의 데이터에서 상기 제1 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수가, 상기 제2 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수보다 적은 경우, 상기 제1 위치의 변별 지수는 상기 제2 위치의 변별 지수보다 높을 수 있다.
상기 위치 벡터는 상기 제1 위치 내지 상기 제N 위치를 지시하는 N개의 원소를 포함하고, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 핑거프린트를 생성하는 것은, 상기 위치 벡터의 원소 중 M(단, M은 N보다 작은 자연수)개의 원소만을 기초로, 상기 M개의 원소가 지시하는 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함할 수 있다.
상기 데이터 중복 제거 방법은, 상기 데이터의 크기가 미리 설정된 상한값을 초과하는 경우, 상기 M 값을 증가시키는 것을 더 포함할 수 있다.
상기 데이터 중복 제거 방법은, 상기 데이터의 크기가 미리 설정된 하한값에 미달되는 경우, 상기 M 값을 감소시키는 것을 더 포함할 수 있다.
상기 복수의 데이터는 제1 데이터 및 제2 데이터를 포함하고, 상기 데이터 중복 제거 방법은, 상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것을 더 포함할 수 있다.
상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것은, 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트를 서로 비교하여 상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것을 포함할 수 있다.
상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것은, 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트가 서로 동일한 경우, 상기 위치 벡터를 기초로 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트의 길이를 증가시키는 것을 포함할 수 있다.
상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것은, 상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 데이터 청크 단위로 상기 제1 데이터 및 상기 제2 데이터를 서로 비교하여 상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것을 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 데이터 중복 제거 방법의 다른 실시예는, 저장 요청된 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고, 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하고, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하고, 정렬된 제1 위치 내지 제N 위치의 순서를 위치 벡터에 기록하고, 위치 벡터에 기록된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함하되, 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해지고, 핑거프린트의 길이는 복수의 데이터가 저장된 스토리지의 상태에 따라 가변할 수 있다.
상기 데이터 중복 제거 방법은, 상기 스토리지의 상태에 따라, 상기 위치 벡터를 기초로 상기 핑거프린트의 길이를 증감시키는 것을 더 포함할 수 있다.
상기 핑거프린트의 길이를 증감시키는 것은 상기 스토리지에 저장된 복수의 데이터의 크기가 미리 설정된 상한 값을 초과하는 경우, 상기 위치 벡터를 기초로 상기 핑거프린트의 길이를 증가시키는 것을 포함할 수 있다.
상기 핑거프린트의 길이를 증감시키는 것은 상기 스토리지에 저장된 복수의 데이터의 크기가 미리 설정된 하한 값에 미달되는 경우, 상기 핑거프린트의 길이를 감소시키는 것을 포함할 수 있다.
상기 핑거프린트의 길이를 증감시키는 것은 상기 복수의 데이터 중 제1 데이터의 핑거프린트와, 상기 제1 데이터와 상이한 제2 데이터의 핑거프린트가 충돌하는 경우, 상기 위치 벡터를 기초로 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트의 길이를 증가시키는 것을 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 데이터 중복 제거 장치의 일 실시예는, 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하는 분할부; 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하고, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하고, 정렬된 제1 위치 내지 제N 위치의 순서를 위치 벡터에 기록하는 위치 벡터 생성부; 및 위치 벡터에 기록된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 핑거프린트 생성부를 포함하되, 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해진다.
상기 복수의 데이터에서 상기 제1 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수가, 상기 제2 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수보다 적은 경우, 상기 제1 위치의 변별 지수는 상기 제2 위치의 변별 지수보다 높다.
상기 위치 벡터는 상기 제1 위치 내지 상기 제N 위치를 지시하는 N개의 원소를 포함하고, 상기 핑거프린트 생성부는 상기 위치 벡터의 원소 중 M(단, M은 N보다 작은 자연수)개의 원소만을 기초로, 상기 M개의 원소가 지시하는 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성할 수 있다.
상기 핑거프린트 생성부는 상기 복수의 데이터의 크기가 미리 설정된 상한 값을 초과하는 경우, 상기 위치 벡터를 기초로 상기 핑거프린트의 길이를 증가시킬 수 있다.
상기 핑거프린트 생성부는 상기 복수의 데이터 중 제1 데이터의 핑거프린트와, 상기 제1 데이터와 상이한 제2 데이터의 핑거프린트가 충돌하는 경우, 상기 위치 벡터를 기초로 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트의 길이를 증가시킬 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 데이터 중복 제거 방법이 수행되는 분산 스토리지 장치를 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 중복 제거 장치를 설명하기 위한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 4는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 위치 벡터를 생성하는 것을 설명하기 위한 개략도이다.
도 5는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 도 4에서 설명한 위치 벡터를 이용하여 핑거프린트를 생성하는 것을 설명하기 위한 개략도이다.
도 6은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 7은 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 8은 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 9는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 흐름도이다.
도 11은 본 발명의 실시예에 따른 반도체 장치를 포함하는 전자 시스템을 설명하기 위한 개략적인 블록도이다.
도 12는 본 발명의 실시예에 따른 반도체 장치를 포함하는 저자 시스템의 응용예를 설명하기 위한 개략적인 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다. 제1 소자가 제2 소자에 "직접 연결" 또는 "직접 접속"된다는 것은, 제1 소자와 제2 소자 사이에 다른 소자가 개재되지 않음을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 데이터 중복 제거 방법이 수행되는 분산 스토리지 장치를 설명하기 위한 개략도이다.
도 1을 참조하면, 본 발명의 데이터 중복 제거 방법이 수행되는 분산 스토리지 장치(100)는 하나 이상의 클라이언트(250, 252)로부터 데이터 입출력 요청을 수신하여 데이터 입출력 작업을 수행한다. 예를 들어, 분산 스토리지 장치(100)는 하나 이상의 클라이언트(250, 252)로부터 쓰기 요청된 데이터를 하나 이상의 스토리지 노드(200, 202, 204, 206)에 분산하여 저장할 수 있고, 하나 이상의 클라이언트(250, 252)로부터 읽기 요청된 데이터를 하나 이상의 스토리지 노드(200, 202, 204, 206)로부터 읽어들여 클라이언트(250, 252)에 전송할 수 있다.
본 발명의 몇몇의 실시예에서, 분산 스토리지 장치(100)는 단일 서버 또는 다중 서버일 수 있으며, 분산 스토리지 장치(100)는 스토리지 노드(200, 202, 204, 206)에 저장되는 데이터에 대한 메타데이터를 관리하는 메타데이터 관리 서버를 더 포함할 수 있다. 클라이언트(250, 252)는 분산 스토리지 장치(100)에 네트워크를 통해 접속 가능한 단말로서, 예를 들어, 데스크탑, 서버와 같은 컴퓨터, 셀룰러폰, 스마트폰, 태블릿, 노트북, PDA(Personal Digital Assistants)와 같은 모바일 기기를 포함하지만, 이에 한정되지 않는다. 스토리지 노드(200, 202, 204, 206)는 HDD(Hard Disk Drive), SSD(Solid State Drive), NAS(Network Attached Storage)를 비롯한 스토리지 장치 일 수 있으나 이에 한정되는 것은 아니고, 상기 스토리지 장치는 하나 이상의 프로세싱 유닛을 포함할 수 있다. 클라이언트(250, 252), 분산 스토리지 장치(100) 및 스토리지 노드(200, 202, 204, 206)는 LAN(Local Area Network), WAN(Wide Area Network) 등을 비롯한 유선 네트워크 또는 WiFi, 블루투스, 셀룰러 네트워크 등을 비롯한 무선 네트워크를 통해 상호간에 접속될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 중복 제거 장치를 설명하기 위한 개략도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 데이터 중복 제거 장치는 분할부(110), 위치 벡터 생성부(120) 및 핑거프린트 생성부(130)을 포함할 수 있다.
분할부(110)는 데이터(105)를 복수의 데이터 청크(115)로 분할한다. 예를 들어, 본 발명의 몇몇의 실시예에서, 분할부(110)는 클라이언트(250, 252)로부터 쓰기 요청된 데이터(105)를 복수의 데이터 청크(115)로 분할할 수 있다. 분할된 복수의 데이터 청크(115)는 제1 위치 내지 제N(단, N은 자연수) 위치에 대응될 수 있다. 예를 들어, 데이터(105)로부터 분할된 복수의 데이터 청크(115) 중 첫 번째 데이터 청크는 제1 위치에 대응될 수 있고, 두 번째 데이터 청크는 제2 위치에 대응될 수 있고, N 번째 데이터 청크는 제N 위치에 대응될 수 있다. 이러한 제1 위치 내지 제N 위치는 특정 데이터에 고유한 것이 아니다. 즉, 데이터(105)와 함께 스토리지에 저장되는 임의의 데이터에 대해서도 이러한 위치 구분이 적용된다. 예를 들어, 데이터(105)와 함께 스토리지에 저장되는 다른 데이터 역시 복수의 데이터 청크로 분할될 수 있고, 분할된 데이터 청크는 제1 위치 내지 제N 위치에 걸쳐 존재할 수 있다.
위치 벡터 생성부(120)는 복수의 데이터 청크(115)의 위치에 대응되는 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하여, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하고, 정렬된 제1 위치 내지 제N 위치의 순서를 위치 벡터(125)에 기록한다.
변별 지수는 일부의 데이터 청크로 전체 데이터를 변별할 수 있는 정도를 나타낸다. 예를 들어, 스토리지에 두 개의 데이터, ('A', 'B') 및 ('A', 'C')가 있다고 가정하면(여기서 'A', 'B', 'C'는 데이터 청크 또는 심볼을 의미함), 첫 번째 위치에 있는 데이터 청크 또는 심볼은 'A'로 동일하기 때문에 상기 두 개의 데이터를 변별할 수 없다. 그러나, 두 번째 위치에 있는 데이터 청크 또는 심볼은 'B'와 'C'로 상이하기 때문에 상기 두 개의 데이터를 변별할 수 있다. 즉, 'B'와 'C'가 위치하는 두 번째 위치는 'A'가 위치하는 첫 번째 위치보다 변별력이 높으므로, 두 번째 위치에 첫 번째 위치보다 더 높은 변별 지수를 부여할 수 있다. 이와 관련하여, 변별 지수를 부여하는 방법에 관한 구체적인 내용은 도 4와 함께 후술하도록 한다.
즉, 위치 벡터 생성부(120)는 복수의 데이터 청크(115)의 위치에 대응되는 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하여, 변별력이 높은 위치에 큰 값의 변별 지수를 부여할 수 있다. 이와 다르게, 본 발명의 몇몇의 실시예에서, 변별력이 높은 위치에 작은 값의 변별 지수를 부여할 수도 있다. 제1 위치 내지 제N 위치에 대한 변별 지수가 모두 결정된 후에, 위치 벡터 생성부(120)는 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬한다. 예를 들어, 변별력이 높을 수록 변별 지수의 값이 커지도록 한 경우에는 제1 위치 내지 제N 위치의 순서를 내림차순으로 정렬할 수 있다. 이와 다르게, 변별력이 높을 수록 변별 지수의 값이 작아지도록 한 경우에는 제1 위치 내지 제N 위치의 순서를 오른차순으로 정렬할 수 있다. 요컨대, 제1 위치 내지 제N 위치의 순서를 변별력이 큰 순서로 정렬할 수 있다. 그 후, 위치 벡터 생성부(120)는 정렬된 제1 위치 내지 제N 위치의 순서를 위치 벡터(125)에 기록한다. 여기서 위치 벡터(125)는 복수의 원소를 가지며, 각각의 원소는 제1 위치 내지 제N 위치를 나타내고, 각각의 원소의 순서가 제1 위치 내지 제N 위치가 정렬된 순서를 나타낸다. 예를 들어, (4, 1, 2, 3)이라는 위치 벡터는 제4 위치, 제1 위치, 제2 위치, 제3 위치의 순서로 변별력이 높다는 것을 의미한다.
핑거프린트 생성부(130)는 위치 벡터(125)에 기록된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성한다. 예를 들어, 위치 벡터가 (4, 1, 2, 3)인 경우, 제4 위치, 제1 위치, 제2 위치, 제3 위치에 대응하는 데이터 청크를 순서대로 병합하여 핑거프린트를 생성할 수 있다. 본 발명의 몇몇의 실시예에서, 위치 벡터는 제1 위치 내지 제N 위치를 모두 포함하는 N개의 원소를 가진 벡터로 생성될 수 있다. 여기서 핑거프린트 생성부(130)는 위치 벡터의 원소 중 M(단, M은 N보다 작은 자연수)개의 원소만을 취하고, 이에 기초하여 M개의 데이터 청크를 병합하여 핑거프린트를 생성할 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따르면, 데이터(105)는 복수의 데이터 청크로 분할되고, 분할된 데이터 청크는 제1 위치 내지 제11 위치에 대응된다. 위치 벡터 생성부(120)에 의해 제1 위치 내지 제11 위치에 대한 변별 지수를 연산한 결과, 제11 위치, 제6 위치, 제3 위치, 제5 위치의 순서로 변별력이 크다고 판단되었다면, 제1 위치 내지 제11 위치의 순서를 변별 지수의 값에 따라 정렬하여 (11, 6, 3, 5, 2, 4, 10, 9, 7, 8, 1)이라는 위치 벡터(125)를 생성할 수 있다. 다음으로, 핑거프린트 생성부(130)는 상기 위치 벡터 중 처음 4 개의 원소만을 취하고, 이에 기초하여 위치 벡터(125) 중 (11, 6, 3, 5)에 대응하는 4 개의 데이터 청크를 병합하여 핑거프린트(135)를 생성할 수 있다. 즉, 핑거프린트 생성부(130)는 제11 위치에 대응하는 데이터 청크(308), 제6 위치에 대응하는 데이터 청크(306), 제3 위치에 대응하는 데이터 청크(302), 제5 위치에 대응하는 데이터 청크(304)를 병합하여 핑거프린트(135)를 생성할 수 있다.
도 4는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 위치 벡터를 생성하는 것을 설명하기 위한 개략도이다.
도 4를 참조하면, 데이터(401, 403, 405, 407, 409)는 각각 4 개의 데이터 청크로 분할될 수 있다. 여기서, 데이터 청크는 'A', 'B', 'C', 'D'와 같은 심볼을 포함할 수 있다. 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 4 개의 데이터 청크는 제1 위치 내지 제4 위치에 대응될 수 있다. 예를 들어, 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 첫 번째 데이터 청크인 'B', 'D', 'B', 'B', 'D'는 제1 위치에 대응될 수 있고, 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 두 번째 데이터 청크인 'B', 'E', 'E', 'E', 'E'는 제2 위치에 대응될 수 있다. 마찬가지로, 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 세 번째 데이터 청크인 'A', 'A', 'A', 'A', 'A'는 제3 위치에 대응될 수 있고, 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 네 번째 데이터 청크인 'D', 'C', 'A', 'E', 'B'는 제4 위치에 대응될 수 있다.
데이터(401, 403, 405, 407, 409)를 각 위치 별로 살펴보면, 제4 위치의 변별력이 가장 높다. 즉, 다른 위치(즉, 제1 내지 제3 위치)에 대응하는 데이터 청크들을 고려할 필요 없이, 제4 위치에 대응하는 각각의 데이터 청크 'D', 'C', 'A', 'E', 'B'만으로 데이터(401, 403, 405, 407, 409)를 변별할 수 있다. 한편, 제3 위치의 변별력은 가장 낮다. 즉, 제3 위치에 대응하는 데이터 청크는 모두 'A'로 동일하기 때문에, 제3 위치에 대응하는 데이터 청크들 만으로 데이터(401, 403, 405, 407, 409)를 변별하는 것은 불가능하다. 결국, 본 실시예에서는 제4 위치, 제1 위치, 제2 위치 및 제3 위치의 순서로 변별력이 낮아짐을 알 수 있다. 이에 따라, 제4 위치에는 '3', 제1 위치에는 '2', 제2 위치에는 '1', 그리고 제3 위치에는 '0'이라는 변별 지수를 부여하고, 제1 내지 제4 위치의 순서를 나타내도록 할 수 있다.
즉, 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해질 수 있다. 본 발명의 몇몇의 실시예에서, 변별 지수는 중복되는 데이터 청크의 비율이 낮을수록 높게 설정되고, 중복되는 데이터 청크의 비율이 높을수록 낮게 설정될 수 있다. 예를 들어, 복수의 데이터에서 제4 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수가, 제1 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수보다 적은 경우, 제4 위치의 변별 지수는 제1 위치의 변별 지수보다 높을 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 변별 지수는 우선 순위를 표시할 수 있는 숫자, 문자 및 기타 데이터 구조로 표현될 수 있으며, 어느 특정 표현 방식에 한정되는 것은 아니다. 또한, 본 발명의 몇몇의 실시예에서, 변별 지수는 제1 내지 제4 위치 사이의 상대적인 값으로 표현될 수도 있지만, 전역적으로(globally) 적용될 수 있는 절대적인 값으로 표현될 수도 있다. 이렇게 연산된 변별 지수의 값의 순서에 따라, 위치 벡터(425)는 제1 내지 제4 위치의 순서를 기록한다. 즉, 위치 벡터(425)는 (4, 1, 2, 3)으로 표현될 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 도 4에서 설명한 위치 벡터를 이용하여 핑거프린트를 생성하는 것을 설명하기 위한 개략도이다.
도 5를 참조하면, 핑거프린트(431, 433, 435, 437, 439)는 위치 벡터(425)를 이용하여 데이터(401, 403, 405, 407, 409)로부터 생성된 것이다. 구체적으로, 핑거프린트(431)는 위치벡터(425) (4, 1, 2, 3)를 기초로, 제4 위치에 해당하는 데이터 청크 'D', 제1 위치에 해당하는 데이터 청크 'B', 제2 위치에 해당하는 데이터 청크 'B' 및 제3 위치에 해당하는 데이터 청크 'A'를 병합하여 생성된 것이다. 마찬가지로, 핑거프린트(433)는 위치벡터(425) (4, 1, 2, 3)를 기초로, 제4 위치에 해당하는 데이터 청크 'C', 제1 위치에 해당하는 데이터 청크 'D', 제2 위치에 해당하는 데이터 청크 'E' 및 제3 위치에 해당하는 데이터 청크 'A'를 병합하여 생성된다. 이와 같이 생성된 핑거프린트(431, 433, 435, 437, 439)는 데이터(401, 403, 405, 407, 409)간 중복되는 데이터가 있는지 판단하기 위해, 데이터(401, 403, 405, 407, 409)의 동일 여부를 신속하게 판단할 수 있도록 한다.
도 6은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 6을 참조하면, 데이터(501, 503)는 위치 벡터(525)를 기초로 생성된 핑거프린트(531, 533)을 서로 비교하여 중복 데이터인지 판단될 수 있다. 본 실시예에서, 데이터(501, 503)는 제1 위치 내지 제8 위치에 대응하는 8 개의 데이터 청크로 분할 될 수 있다. 다음으로, 상술한 변별 지수 연산 방법에 따라 제1 위치 내지 제8 위치의 변별 지수를 연산하여, (4, 7, 3, 5, 2, 8, 6, 1)이라는 위치 벡터(525)를 구성할 수 있다. 여기서, 핑거프린트 생성부(130)가 핑거프린트(531, 533)를 생성하기 위해 위치 벡터(525)의 원소 중 3 개의 원소만을 취한다고 가정하자. 이에 따르면, 핑거프린트(531)는 제4 위치의 데이터 청크 'U', 제7 위치의 데이터 청크 'L' 및 제3 위치의 데이터 청크 'T'를 병합하여 형성된다. 핑거프린트(532)도 제4 위치, 제7 위치 및 제3 위치의 순서로 'U', 'L' 및 'T'를 병합하여 형성된다. 그런데 본 실시예에서 핑거프린트(531, 532)는 서로 동일하게 형성되기 때문에, 3 개의 데이터 청크를 포함하는 핑거프린트(531, 532) 만으로는 데이터(501, 503)가 구별되지 않는다. 따라서, 이 경우(즉, 핑거프린트(531, 532)의 충돌(collision)이 발생한 경우)에는 위치 벡터(525) 전부를 고려하여 데이터(501, 503)의 동일성을 판단할 수 있다. 즉, 위치 벡터(525)에 기록된 제1 위치 내지 제N 위치(즉, 제1 위치 내지 제8 위치)의 순서에 따라, 데이터 청크 단위로 데이터(501, 503)를 서로 비교하여 데이터(501, 503)이 중복 데이터인지 판단할 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 6에서와 같이, 서로 다른 데이터(501, 503)에 대해 핑거프린트(531, 532)가 동일하게 형성되는 경우(즉, 핑거프린트(531, 532)의 충돌(collision)이 발생한 경우), 위치 벡터(525)를 기초로 핑거프린트(531, 532)의 길이를 증가시킬 수 있다. 구체적으로, 도 7을 참조하면, 위치 벡터(525)의 원소 중 3 개의 원소를 취하여 핑거프린트를 생성하였던 핑거프린트 생성부(130)는, 1 개의 원소를 더 취하여 위치 벡터(525)의 원소 중 총 4 개의 원소를 기초로 핑거프린트(531, 533)를 재생성하여 그 길이를 증가시킬 수 있다. 이에 따르면, 핑거프린트(531)는 제4 위치의 데이터 청크 'U', 제7 위치의 데이터 청크 'L' 및 제3 위치의 데이터 청크 'T'에 제5 위치의 'R'을 더 병합하여 형성된다. 마찬가지로, 핑거프린트(532)도 제4 위치, 제7 위치 및 제3 위치의 순서로 'U', 'L' 및 'T'를 병합한 것에, 제 5 위치의 'A'를 더 병합하여 형성된다. 따라서, 데이터(501, 503)은 4 개의 데이터 청크로 형성된 핑거프린트(531, 533)를 서로 비교하여 구별될 수 있다.
상술한 바와 같이, 위치 벡터는 제1 위치 내지 제N 위치를 모두 포함하는 N개의 원소를 가진 벡터로 생성될 수 있다. 여기서 핑거프린트 생성부(130)는 위치 벡터의 원소 중 M(단, M은 N보다 작은 자연수)개의 원소만을 취하고, 이에 기초하여 M개의 데이터 청크를 병합하여 핑거프린트를 생성할 수 있다. 본 발명의 몇몇의 실시예에서, 핑거프린트 생성부(130)는 데이터의 크기가 미리 설정된 상한값을 초과하는 경우, M 값을 증가시킬 수 있다(즉, 핑거프린트의 길이를 증가시킬 수 있다). 한편, 핑거프린트 생성부(130)는 데이터의 크기가 미리 설정된 하한값에 미달되는 경우, 상기 M 값을 감소시킬 수 있다(즉, 핑거프린트의 길이를 감소시킬 수 있다).
도 8은 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 8을 참조하면, 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법에서, 핑거프린트의 길이는 데이터가 저장된 스토리지의 상태에 따라 가변할 수 있다. 구체적으로, 핑거프린트 생성부(130)는 스토리지(601, 603, 605, 607)의 상태에 따라, 위치 벡터(621)를 기초로 핑거프린트의 길이를 증감시킬 수 있다. 예를 들어, 핑거프린트 생성부(130)는 위치 벡터(621)에서 핑거프린트 생성 대상이 되는 핑거프린트 대상 영역(631)의 길이를 증가시킬 수 있다(핑거프린트 대상 영역(633) 참조). 본 발명의 몇몇의 실시예에서, 핑거프린트 생성부(130)는 이와 같은 방법으로 스토리지에 저장된 복수의 데이터의 크기가 미리 설정된 상한 값을 초과하는 경우에 핑거프린트의 길이를 증가시킬 수 있다. 한편, 예를 들어, 핑거프린트 생성부(130)는 위치 벡터(625)에서 핑거프린트 생성 대상이 되는 핑거프린트 대상 영역(635)의 길이를 감소시킬 수 있다(핑거프린트 대상 영역(637) 참조). 본 발명의 몇몇의 실시예에서, 핑거프린트 생성부(130)는 이와 같은 방법으로 스토리지에 저장된 복수의 데이터의 크기가 미리 설정된 하한 값에 미달되는 경우에 핑거프린트의 길이를 감소시킬 수 있다.
한편, 위치 벡터 생성부(120)는 스토리지(601, 603, 605, 607)의 상태에 따라 위치 벡터를 재구성할 수도 있다. 구체적으로, 스토리지(605)에 저장된 데이터의 일부가 삭제되거나 외부로부터 입력받은 데이터가 스토리지(605)에 추가적으로 저장되어, 스토리지(605)의 데이터 구성이 변경된 경우(스토리지(607) 참조), 위치 벡터(625)는 변경된 스토리지(607)를 기초로 재계산될 수 있다(위치 벡터(627) 참조). 구체적으로, 위치 벡터(625) (4, 7, 3, 2, 5, 8, 6, 1)은 위치 벡터(627) (4, 3, 7, 2, 5, 8, 6, 1)로 재구성될 수 있다. 즉, 스토리지(605)에 저장된 복수의 데이터에서 제7 위치의 변별력이 제3 위치의 변별력보다 높았으나, 스토리지(607)에서는 제7 위치의 변별력이 제3 위치의 변별력보다 낮아질 수 있고, 이에 따라 위치 벡터가 재구성될 수 있다.
도 9는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 흐름도이다.
도 9를 참조하면, 본 발명의 일 실시예에 따른 데이터 중복 제거 방법은, 사용자 또는 클라이언트(250)로부터 데이터 쓰기 요청을 수신하고(S701), 위치 벡터를 구성하여 쓰기 요청된 데이터에 대한 핑거프린트를 추출할 수 있다(S703). 상술한 바와 같이, 위치 벡터를 구성하는 것은, 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고, 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하는 것을 포함할 수 있다. 또한, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하여, 그 순서를를 위치 벡터에 기록하는 것을 포함할 수 있다. 한편, 핑거프린트를 추출하는 것은, 위치 벡터에 기록된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함할 수 있다.
다음으로, 본 발명의 일 실시예에 따른 데이터 중복 제거 방법은 둘 이상의 데이터의 핑거프린트를 서로 비교하여, 상기 둘 이상의 데이터가 중복 데이터인지 판단하는 것을 더 포함할 수 있다(S705). 여기서 둘 이상의 데이터는, 예를 들어, 스토리지에 기저장된(pre-stored) 제1 데이터와, 쓰기 요청을 받은 제2 데이터를 포함할 수 있다. 제1 데이터와 제2 데이터의 핑거프린트가 서로 다른 경우(S707, N), 쓰기 요청을 받은 제2 데이터는 제1 데이터와 다른 데이터이므로 스토리지에 저장될 수 있다(S715). 이와 다르게, 제1 데이터와 제2 데이터의 핑거프린트가 동일한 경우(S707, Y), 위치 벡터에 기록된 제1 위치 내지 제N 위치의 순서에 따라, 데이터 청크 단위로 데이터를 서로 비교하여 제1 데이터와 제2 데이터가 중복 데이터인지 판단할 수 있다(S709). 제1 데이터와 제2 데이터가 서로 다른 경우(S711, N), 쓰기 요청을 받은 제2 데이터는 제1 데이터와 다른 데이터이므로 스토리지에 저장될 수 있다(S715). 이와 다르게, 제1 데이터와 제2 데이터가 동일한 경우(S711, Y), 제2 데이터는 스토리지에 저장되지 않고, 제2 데이터와 동일한 제1 데이터에 대한 링크를 생성한다(S713).
도 10은 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 흐름도이다.
도 10을 참조하면, 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법은 도 9와 관련하여 설명한 바와 같은 S701 내지 S715의 스텝에, S717 및 S719의 추가적인 스텝을 포함한다. 제1 데이터와 제2 데이터의 핑거프린트가 서로 다른 경우(S707, N) 또는 제1 데이터와 제2 데이터가 서로 다른 경우(S711, N), 쓰기 요청을 받은 제2 데이터는 제1 데이터와 다른 데이터이므로 스토리지에 저장될 수 있다(S715). 제2 데이터가 스토리지에 저장되면, 스토리지에 저장된 기존 데이터를 기초로 연산된 변별 지수는 재연산될 필요가 있을 수 있다. 이 경우, 본 실시예의 데이터 중복 제거 방법은 제2 데이터가 추가 저장된 스토리지의 상태를 반영하여 위치 벡터를 갱신할 수 있다(S717). 또한, 제2 데이터가 스토리지에 저장됨에 따라, 스토리지에 저장된 기존 데이터를 기초로 연산된 핑거프린트의 길이 조정이 필요할 수 있다. 이 경우, 본 실시예의 데이터 중복 제거 방법은 제2 데이터가 추가 저장된 스토리지의 상태를 반영하여 핑거프린트의 길이를 증감시킬 수 있다.
본 발명의 다양한 실시예에 따르면, 데이터의 중복 제거를 수행하기 위해 데이터의 핑거프린트를 비교하는 경우, 데이터 상호 간의 변별력이 높은 데이터 청크를 우선 비교하게 된다. 이에 따라, 데이터 상호 간의 동일성 여부를 신속하게 판단할 수 있을 뿐 아니라, 동일성 판단을 위한 명령의 수를 저감시켜 효율적으로 상기 작업을 수행할 수 있다.
또한, 데이터의 일부(즉, 분할된 데이터 청크)를 그대로 사용하여 핑거프린트를 생성하기 때문에, 어떤 두 데이터의 핑거프린트가 유사한 경우, 해당 데이터 자체가 유사함을 기대할 수 있다. 이를 이용하여, 동일한 데이터뿐 아니라 유사한 데이터를 판단할 수 있다.
도 11을 참조하면, 본 발명의 다양한 실시예에 따른 데이터 중복 제거 장치는 제어 장치(510; CONTROLLER), 인터페이스(520; INTERFACE), 입출력 장치(530; I/O), 기억 장치(540; MEMORY), 전원 공급 장치(550; POWER SUPPLY), 버스(560; BUS)를 포함할 수 있다.
제어 장치(510), 인터페이스(520), 입출력 장치(530), 기억 장치(540), 전원 공급 장치(550)는 버스(560)를 통하여 서로 결합될 수 있다. 버스(560)는 데이터들이 이동되는 통로(path)에 해당한다. 제어 장치(510)는 마이크로프로세서, 마이크로컨트롤러, 및 이들과 유사한 기능을 수행할 수 있는 논리 소자들 중에서 적어도 하나를 포함하여 데이터를 처리할 수 있다. 인터페이스(520)는 통신 네트워크로 데이터를 전송하거나 통신 네트워크로부터 데이터를 수신하는 기능을 수행할 수 있다. 인터페이스(520)는 유선 또는 무선 형태일 수 있다. 예컨대, 인터페이스(520)는 안테나 또는 유무선 트랜시버 등을 포함할 수 있다. 입출력 장치(530)는 키패드(keypad) 및 디스플레이 장치 등을 포함하여 데이터를 입출력할 수 있다. 기억 장치(540)는 데이터 및/또는 명령어 등을 저장할 수 있다. 본 발명의 몇몇의 실시예에 따른 반도체 장치는 기억 장치(540)의 일부 구성요소로 제공될 수 있다. 전원 공급 장치(550)는 외부에서 입력된 전원을 변환하여, 각 구성요소(510~540)에 제공할 수 있다.
도 12는 본 발명의 실시예에 따른 데이터 중복 제거 방법이 구현되는 데이터 중복 제거 장치의 응용예를 설명하기 위한 개략적인 블록도이다.
도 12를 참조하면, 데이터 중복 제거 장치는 중앙 처리 장치(610; CPU), 인터페이스(620; INTERFACE), 주변 장치(630; PERIPHERAL DEVICE), 주 기억 장치(640; MAIN MEMORY), 보조 기억 장치(650, SECONDARY MEMORY), 버스(660; BUS)를 포함할 수 있다.
중앙 처리 장치(610), 인터페이스(620), 주변 장치(630), 주 기억 장치(640), 보조 기억 장치(650)은 버스(660)을 통하여 서로 결합될 수 있다. 버스(660)은 데이터들이 이동되는 통로(path)에 해당한다. 중앙 처리 장치(610)는 제어 장치, 연산 장치 등을 포함하여 프로그램을 수행하고 데이터를 처리할 수 있다. 인터페이스(620)는 통신 네트워크로 데이터를 전송하거나 통신 네트워크로부터 데이터를 수신하는 기능을 수행할 수 있다. 인터페이스(520)는 유선 또는 무선 형태일 수 있다. 예컨대, 인터페이스(520)는 안테나 또는 유무선 트랜시버 등을 포함할 수 있다. 주변 장치(630)는 마우스, 키보드, 디스플레이 장치 및 프린터 장치 등을 포함하여 데이터를 입출력할 수 있다. 주 기억 장치(640)는 중앙 처리 장치(610)와 데이터를 송수신하고, 프로그램 수행에 필요한 데이터 및/또는 명령어 등을 저장할 수 있다. 본 발명의 몇몇의 실시예에 따른 반도체 장치는 주 기억 장치(640)의 일부 구성요소로 제공될 수 있다. 보조 기억 장치(650)는 자기 테이프, 자기 디스크, 플로피 디스크, 하드 디스크, 광 디스크 등의 비휘발성 저장 장치를 포함하여 데이터 및/또는 명령어 등을 저장할 수 있다. 보조 기억 장치(650)는 전자 시스템의 전원이 차단되는 경우에도 데이터를 저장할 수 있다.
이외에도, 본 발명의 몇몇의 실시예에 따른 데이터 중복 제거 방법이 구현되는 전자 시스템은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 분산 스토리지 장치
105, 401, 403, 405, 407, 409, 501, 503: 데이터
110: 분할부 115: 데이터 청크
120: 위치 벡터 생성부
125, 425, 525, 621, 623, 625, 627: 위치 벡터
130: 핑거프린트 생성부
135, 431, 433, 435, 437, 439, 531, 533: 핑거프린트
200, 202, 204, 206: 스토리지 노드
250: 제1 클라이언트 252: 제2 클라이언트
302, 304, 306, 308: 데이터 청크 601, 603, 605, 607: 스토리지
631, 633, 635, 637: 핑거프린트 대상 영역

Claims (10)

  1. 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고,
    상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고,
    상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고,
    정렬된 상기 제1 위치 내지 상기 제N 위치의 순서를 위치 벡터에 기록하고,
    상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함하되,
    상기 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해지는 데이터 중복 제거 방법.
  2. 제1항에 있어서,
    상기 변별 지수는 상기 중복되는 데이터 청크의 비율이 낮을수록 높게 설정되고, 상기 중복되는 데이터 청크의 비율이 높을수록 낮게 설정되는 데이터 중복 제거 방법.
  3. 제1항에 있어서,
    상기 위치 벡터는 상기 제1 위치 내지 상기 제N 위치를 지시하는 N개의 원소를 포함하고,
    상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 핑거프린트를 생성하는 것은,
    상기 위치 벡터의 원소 중 M(단, M은 N보다 작은 자연수)개의 원소만을 기초로, 상기 M개의 원소가 지시하는 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함하는 데이터 중복 제거 방법.
  4. 제3항에 있어서,
    상기 데이터의 크기가 미리 설정된 상한값을 초과하는 경우, 상기 M 값을 증가시키는 것을 더 포함하는 데이터 중복 제거 방법.
  5. 제3항에 있어서,
    상기 데이터의 크기가 미리 설정된 하한값에 미달되는 경우, 상기 M 값을 감소시키는 것을 더 포함하는 데이터 중복 제거 방법.
  6. 저장 요청된 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고,
    상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고,
    상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고,
    정렬된 상기 제1 위치 내지 상기 제N 위치의 순서를 위치 벡터에 기록하고,
    상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함하되,
    상기 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해지고,
    상기 핑거프린트의 길이는 상기 복수의 데이터가 저장된 스토리지의 상태에 따라 가변하는 데이터 중복 제거 방법.
  7. 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하는 분할부;
    상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고, 상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고, 정렬된 상기 제1 위치 내지 상기 제N 위치의 순서를 위치 벡터에 기록하는 위치 벡터 생성부; 및
    상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 핑거프린트 생성부를 포함하되,
    상기 변별 지수는 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 비율에 따라 정해지는 데이터 중복 제거 장치.
  8. 제7항에 있어서,
    상기 복수의 데이터에서 상기 제1 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수가, 상기 제2 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 개수보다 적은 경우, 상기 제1 위치의 변별 지수는 상기 제2 위치의 변별 지수보다 높은 데이터 중복 제거 장치.
  9. 제7항에 있어서,
    상기 핑거프린트 생성부는 상기 복수의 데이터의 크기가 미리 설정된 상한 값을 초과하는 경우, 상기 위치 벡터를 기초로 상기 핑거프린트의 길이를 증가시키는 데이터 중복 제거 장치.
  10. 제7항에 있어서,
    상기 핑거프린트 생성부는 상기 복수의 데이터 중 제1 데이터의 핑거프린트와, 상기 제1 데이터와 상이한 제2 데이터의 핑거프린트가 충돌하는 경우, 상기 위치 벡터를 기초로 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트의 길이를 증가시키는 데이터 중복 제거 장치.
KR1020140047450A 2014-04-21 2014-04-21 데이터 중복 제거 방법 및 장치 KR20150121505A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140047450A KR20150121505A (ko) 2014-04-21 2014-04-21 데이터 중복 제거 방법 및 장치
US14/688,076 US20150302022A1 (en) 2014-04-21 2015-04-16 Data deduplication method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140047450A KR20150121505A (ko) 2014-04-21 2014-04-21 데이터 중복 제거 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20150121505A true KR20150121505A (ko) 2015-10-29

Family

ID=54322177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140047450A KR20150121505A (ko) 2014-04-21 2014-04-21 데이터 중복 제거 방법 및 장치

Country Status (2)

Country Link
US (1) US20150302022A1 (ko)
KR (1) KR20150121505A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190109151A (ko) * 2018-03-16 2019-09-25 넷마블 주식회사 로그 데이터 처리 장치 및 방법
KR20200015652A (ko) * 2018-03-16 2020-02-12 넷마블 주식회사 로그 데이터 처리 장치 및 방법
WO2020101478A1 (en) * 2018-11-14 2020-05-22 Mimos Berhad System and method for managing duplicate entities based on a relationship cardinality in production knowledge base repository

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102172321B1 (ko) * 2014-05-20 2020-10-30 삼성전자주식회사 데이터 중복 제거 방법
CN108509642A (zh) * 2018-04-12 2018-09-07 郑州云海信息技术有限公司 压缩、解压gzip格式文件的方法、装置及存储介质
US11055005B2 (en) 2018-10-12 2021-07-06 Netapp, Inc. Background deduplication using trusted fingerprints

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811662B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Performing anti-virus checks for a distributed filesystem
US8798967B2 (en) * 2011-03-30 2014-08-05 Chevron U.S.A. Inc. System and method for computations utilizing optimized earth model representations
US8484170B2 (en) * 2011-09-19 2013-07-09 International Business Machines Corporation Scalable deduplication system with small blocks
US9430164B1 (en) * 2013-02-08 2016-08-30 Emc Corporation Memory efficient sanitization of a deduplicated storage system
US20150154463A1 (en) * 2013-12-04 2015-06-04 Irida Labs S.A. System and a method for the detection of multiple number-plates of moving cars in a series of 2-d images

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190109151A (ko) * 2018-03-16 2019-09-25 넷마블 주식회사 로그 데이터 처리 장치 및 방법
KR20200015652A (ko) * 2018-03-16 2020-02-12 넷마블 주식회사 로그 데이터 처리 장치 및 방법
WO2020101478A1 (en) * 2018-11-14 2020-05-22 Mimos Berhad System and method for managing duplicate entities based on a relationship cardinality in production knowledge base repository

Also Published As

Publication number Publication date
US20150302022A1 (en) 2015-10-22

Similar Documents

Publication Publication Date Title
US10594340B2 (en) Disaster recovery with consolidated erasure coding in geographically distributed setups
US10715181B2 (en) Facilitation of data deletion for distributed erasure coding
CN111133409B (zh) 确保人工智能基础设施中的再现性
US20200042178A1 (en) Scale-out storage system rebalancing
KR102127116B1 (ko) 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US11023331B2 (en) Fast recovery of data in a geographically distributed storage environment
US10719250B2 (en) System and method for combining erasure-coded protection sets
KR20150121505A (ko) 데이터 중복 제거 방법 및 장치
US9851917B2 (en) Method for de-duplicating data and apparatus therefor
US10892782B2 (en) Flexible system and method for combining erasure-coded protection sets
CN104008064B (zh) 用于多级存储器压缩的方法和系统
US10831747B2 (en) Multi stage aggregation using digest order after a first stage of aggregation
US20220269417A1 (en) Metadata Management In A Storage System
US9195666B2 (en) Location independent files
CN104281533A (zh) 一种存储数据的方法及装置
US10776218B2 (en) Availability-driven data recovery in cloud storage systems
US9424269B1 (en) Systems and methods for deduplicating archive objects
US20200218450A1 (en) Updating protection sets in a geographically distributed storage environment
KR20120016747A (ko) 분산파일 시스템에서의 중복 제거 장치 및 방법
US10942827B2 (en) Replication of data in a geographically distributed storage environment
JP2022516502A (ja) コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置
KR102172321B1 (ko) 데이터 중복 제거 방법
KR102225820B1 (ko) 악성코드 분석용 머신러닝을 위한 하이브리드 피처 벡터 생성 장치 및 방법
US11435916B2 (en) Mapping of data storage system for a redundant array of independent nodes
JP6110354B2 (ja) 異種記憶サーバおよびそのファイル記憶方法

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination