KR102172321B1 - 데이터 중복 제거 방법 - Google Patents

데이터 중복 제거 방법 Download PDF

Info

Publication number
KR102172321B1
KR102172321B1 KR1020140060420A KR20140060420A KR102172321B1 KR 102172321 B1 KR102172321 B1 KR 102172321B1 KR 1020140060420 A KR1020140060420 A KR 1020140060420A KR 20140060420 A KR20140060420 A KR 20140060420A KR 102172321 B1 KR102172321 B1 KR 102172321B1
Authority
KR
South Korea
Prior art keywords
data
nth
symbol
positions
discrimination index
Prior art date
Application number
KR1020140060420A
Other languages
English (en)
Other versions
KR20150133527A (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 삼성전자주식회사
Priority to KR1020140060420A priority Critical patent/KR102172321B1/ko
Priority to US14/711,647 priority patent/US10108636B2/en
Publication of KR20150133527A publication Critical patent/KR20150133527A/ko
Application granted granted Critical
Publication of KR102172321B1 publication Critical patent/KR102172321B1/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

Abstract

데이터 중복 제거 방법이 제공된다. 데이터 중복 제거 방법은 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하되, 각각의 데이터 청크는 심볼(symbol)을 포함하고, 상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고, 상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고, 정렬된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 데이터의 핑거프린트를 생성하는 것을 포함하되, 상기 데이터를 포함하는 복수의 데이터에 포함되는 심볼의 종류의 수는 L(단, L은 자연수)개이고, 상기 변별 지수는 상기 제1 위치 내지 상기 제N 위치를 나타내는 N 개의 수평열 및 상기 제1 위치 내지 상기 제N 위치에 대한 상기 심볼의 빈도 수를 나타내는 L 개의 수직열을 포함하는 빈도 행렬을 이용하여 연산된다.

Description

데이터 중복 제거 방법{METHOD FOR DATA DEDUPLICATION}
본 발명은 데이터 중복 제거 방법에 관한 것이다.
분산 스토리지 시스템을 비롯한 컴퓨터 시스템의 성능이 발전함에 따라 컴퓨터 시스템에서 처리되는 데이터의 규모 또한 증가하게 되어, 데이터의 저장 공간의 확보 문제가 발생한다. 특히 대규모 데이터를 저장하는 분산 스토리지 시스템에 있어서 저장 공간을 확보하기 위해 장비를 확충하는 것은 많은 비용을 발생시키므로, 주어진 저장 공간을 효율적으로 운용하여 낭비되는 저장 공간을 감소시키는 것이 필요하다. 이를 위해, 데이터 관리에 있어서 동일한 내용의 중복 데이터를 처리하기 위한 다양한 방안이 요구된다.
공개특허 제2010-256951호는 유사 데이터 검색 장치 및 그 프로그램을 개시하고 있다.
본 발명이 해결하려는 과제는 핑거프린트를 이용하여 중복 데이터를 제거하기 위한 데이터 중복 제거 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는 핑거프린트를 이용하여 중복 데이터를 제거하기 위한 데이터 중복 제거 장치를 제공하는 것이다.
본 발명이 해결하려는 과제는 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 데이터 중복 제거 방법의 일 실시예는, 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하되, 각각의 데이터 청크는 심볼(symbol)을 포함하고, 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하고, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하고, 정렬된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 데이터의 핑거프린트를 생성하는 것을 포함하되, 데이터를 포함하는 복수의 데이터에 포함되는 심볼의 종류의 수는 L(단, L은 자연수)개이고, 변별 지수는 제1 위치 내지 제N 위치를 나타내는 N 개의 수평열 및 제1 위치 내지 상기 제N 위치에 대한 심볼의 빈도 수를 나타내는 L 개의 수직열을 포함하는 빈도 행렬을 이용하여 연산된다.
상기 제1 위치 내지 상기 제N 위치 중 제i 위치(단, i는 1 이상이고 N 이하인 자연수)에 대한 변별 지수는 하기 수학식 (1)에 의해 연산되는 Q 벡터를 포함할 수 있다.
Qi = ∑j Fij x log Fij (1)
상기 수학식 (1)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j(단, j는 1 이상이고 L 이하인 자연수)번째 수직열에 대응하는 값이다.
상기 Fij 값이 Gij 값으로 변경된 경우, 상기 변별 지수는 하기 수학식 (2)에 의해 연산된 새로운 Q 벡터에 기초하여 재연산될 수 있다.
Qi' = Qi - Fij x log Fij + Gij x log Gij (2)
상기 수학식 (2)에서 Qi'는 새로운 Q 벡터 원소, Qi는 기존의 Q 벡터 원소, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 기존 값, Gij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 새로운 값이다.
상기 제i 위치에 대한 변별 지수는 하기 수학식 (3)에 의해 연산될 수 있다.
Hi = log N - 1 / N x Qi (3)
상기 수학식 (3)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, N은 상기 제i 위치에 대한 총 심볼의 개수, Hi는 상기 제i 위치에 대한 변별 지수이다.
상기 제1 위치 내지 상기 제N 위치 중 제i 위치(단, i는 1 이상이고 N 이하인 자연수)에 대한 변별 지수는 하기 수학식 (4) 및 하기 수학식 (5)에 의해 연산될 수 있다.
pij = Fij / N (4)
Hi = ∑j pij x log(1 / pij) (5)
상기 수학식 (4) 및 상기 수학식 (5)에서 pij는 상기 제i 위치에서 제j(단, j는 1 이상이고 L 이하인 자연수)번째 심볼의 비율, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 값, N은 상기 제i 위치에 대한 총 심볼의 개수, Hi는 상기 제i 위치에 대한 변별 지수이다.
상기 데이터 중복 제거 방법은, 상기 복수의 데이터에 새로운 데이터가 추가되거나, 상기 복수의 데이터 중 일부 데이터가 삭제된 경우, 상기 빈도 행렬을 재연산하는 것을 더 포함할 수 있다.
상기 빈도 행렬을 재연산하는 것은, 상기 빈도 행렬을 재연산하기 전에 상기 추가된 데이터 또는 상기 삭제된 데이터에 대해 플래그(flag)를 설정하는 것을 포함할 수 있다.
상기 심볼은 서로 다른 제1 심볼 및 제2 심볼을 포함하고, 상기 빈도 행렬은 상기 제1 심볼의 빈도 수와 상기 제2 심볼의 빈도 수를 합한 값을 나타내는 수직열을 포함할 수 있다.
상기 빈도 행렬은 상기 제1 위치 내지 상기 제N 위치 중 일부 위치에 대한 K(단, K는 1 이상이고 N 미만인 자연수) 개의 수평열만을 포함할 수 있다.
상기 심볼은 공백 심볼을 더 포함하고, 상기 변별 지수는 상기 N 개의 수평열 및 상기 제1 위치 내지 상기 제N 위치에 대한 상기 심볼 및 상기 공백 심볼의 빈도 수를 나타내는 L + 1 개의 수직열을 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 데이터 중복 제거 방법의 다른 실시예는, 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하되, 각각의 데이터 청크는 심볼(symbol)을 포함하고, 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하고, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하고, 정렬된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 데이터의 핑거프린트를 생성하는 것을 포함하되, 변별 지수는 제1 위치 내지 제N 위치에 대한 심볼의 빈도 수를 이용하여 연산된다.
상기 데이터를 포함하는 복수의 데이터에 포함되는 심볼의 종류의 수는 L(단, L은 자연수)개이고, 상기 제1 위치 내지 상기 제N 위치 중 제i 위치(단, i는 1 이상이고 N 이하인 자연수)에 대한 변별 지수는 하기 수학식 (6)에 의해 연산되는 Q 벡터를 포함할 수 있다.
Qi = ∑j Fij x log Fij (6)
상기 수학식 (6)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, Fij는 상기 제i 위치에서 제j(단, j는 1 이상이고 L 이하인 자연수)번째 심볼의 빈도 수이다.
상기 Fij 값이 Gij 값으로 변경된 경우, 상기 변별 지수는 하기 수학식 (7)에 의해 연산된 새로운 Q 벡터에 기초하여 재연산될 수 있다.
Qi' = Qi - Fij x log Fij + Gij x log Gij (7)
상기 수학식 (7)에서 Qi'는 새로운 Q 벡터 원소, Qi는 기존의 Q 벡터, Fij는 상기 제i 위치에서 제j 번째 심볼의 빈도 수의 기존 값, Gij는 상기 제i 위치에서 제j 번째 심볼의 빈도 수의 새로운 값이다.
상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 데이터의 핑거프린트를 생성하는 것은, 상기 정렬된 상기 제1 위치 내지 상기 제N 위치의 순서를 위치 벡터에 기록하고, 상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 데이터의 핑거프린트를 생성하는 것을 포함할 수 있다.
상기 위치 벡터는 상기 제1 위치 내지 상기 제N 위치를 지시하는 N개의 원소를 포함하고, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 핑거프린트를 생성하는 것은, 상기 위치 벡터의 원소 중 M(단, M은 N보다 작은 자연수)개의 원소만을 기초로, 상기 M개의 원소가 지시하는 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성하는 것을 포함할 수 있다.
상기 복수의 데이터는 제1 데이터 및 제2 데이터를 포함하고, 상기 데이터 중복 제거 방법은, 상기 제1 데이터 및 상기 제2 데이터의 핑거프린트를 서로 비교하여 상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것을 더 포함할 수 있다.
상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것은, 상기 위치 벡터에 기록된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 데이터 청크 단위로 상기 제1 데이터 및 상기 제2 데이터를 서로 비교하여 상기 제1 데이터 및 상기 제2 데이터가 중복 데이터인지 판단하는 것을 포함할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 데이터 중복 제거 방법이 수행되는 분산 스토리지 장치를 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 중복 제거 장치를 설명하기 위한 개략도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 4a는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 위치 벡터를 생성하는 것을 설명하기 위한 개략도이다.
도 4b는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 정보 엔트로피(entropy of information)를 이용하여 위치 벡터를 연산하는 것을 설명하기 위한 개략도이다.
도 5는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 도 4a 및 도 4b에서 설명한 위치 벡터를 이용하여 핑거프린트를 생성하는 것을 설명하기 위한 개략도이다.
도 6a 내지 도 6c는 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 7a는 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 7b는 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 8은 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 9a 및 도 9b는 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 10 및 도 11은 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 흐름도이다.
도 12는 본 발명의 실시예에 따른 반도체 장치를 포함하는 전자 시스템을 설명하기 위한 개략적인 블록도이다.
도 13은 본 발명의 실시예에 따른 반도체 장치를 포함하는 저자 시스템의 응용예를 설명하기 위한 개략적인 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(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)로 분할할 수 있다. 여기서, 여기서, 각각의 데이터 청크는 심볼(symbol)을 포함할 수 있다. 한편, 분할된 복수의 데이터 청크(115)는 제1 위치 내지 제N(단, N은 자연수) 위치에 대응될 수 있다. 예를 들어, 데이터(105)로부터 분할된 복수의 데이터 청크(115) 중 첫 번째 데이터 청크는 제1 위치에 대응될 수 있고, 두 번째 데이터 청크는 제2 위치에 대응될 수 있고, N 번째 데이터 청크는 제N 위치에 대응될 수 있다. 이러한 제1 위치 내지 제N 위치는 특정 데이터에 고유한 것이 아니다. 즉, 데이터(105)와 함께 스토리지에 저장되는 임의의 데이터에 대해서도 이러한 위치 구분이 적용된다. 예를 들어, 데이터(105)와 함께 스토리지에 저장되는 다른 데이터 역시 복수의 데이터 청크로 분할될 수 있고, 분할된 데이터 청크는 제1 위치 내지 제N 위치에 걸쳐 존재할 수 있다.
위치 벡터 생성부(120)는 복수의 데이터 청크(115)의 위치에 대응되는 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하여, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬한다. 본 발명의 몇몇의 실시예에서, 위치 벡터 생성부(120)는 정렬된 제1 위치 내지 제N 위치의 순서를 위치 벡터(125)에 기록한다.
변별 지수는 일부의 데이터 청크로 전체 데이터를 변별할 수 있는 정도를 나타낸다. 예를 들어, 스토리지에 두 개의 심볼, ('A', 'B') 및 ('A', 'C')가 있다고 가정하면(여기서 'A', 'B', 'C'는 데이터 청크 또는 심볼을 의미함), 첫 번째 위치에 있는 데이터 청크 또는 심볼은 'A'로 동일하기 때문에 상기 두 개의 데이터를 변별할 수 없다. 그러나, 두 번째 위치에 있는 데이터 청크 또는 심볼은 'B'와 'C'로 상이하기 때문에 상기 두 개의 데이터를 변별할 수 있다. 즉, 'B'와 'C'가 위치하는 두 번째 위치는 'A'가 위치하는 첫 번째 위치보다 변별력이 높으므로, 두 번째 위치에 첫 번째 위치보다 더 높은 변별 지수를 부여할 수 있다. 이와 관련하여, 변별 지수를 부여하는 방법에 관한 구체적인 내용은 도 4a와 함께 후술하도록 한다.
즉, 위치 벡터 생성부(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)는 정렬된 제1 위치 내지 제N 위치의 순서에 따라, 제1 위치 내지 제N 위치에 대응하는 데이터 청크를 병합하여 핑거프린트를 생성한다. 본 발명의 몇몇의 실시예에서, 핑거프린트 생성부(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)를 생성할 수 있다.
도 4a는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 위치 벡터를 생성하는 것을 설명하기 위한 개략도이다.
도 4a를 참조하면, 데이터(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', 'C', 'C', 'C', 'C'는 제2 위치에 대응될 수 있다. 마찬가지로, 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 세 번째 데이터 청크인 'A', 'A', 'A', 'A', 'A'는 제3 위치에 대응될 수 있고, 데이터(401, 403, 405, 407, 409)로부터 각각 분할된 네 번째 데이터 청크인 'D', 'C', 'A', 'C', 'B'는 제4 위치에 대응될 수 있다.
데이터(401, 403, 405, 407, 409)를 각 위치 별로 살펴보면, 제4 위치의 변별력이 가장 높다. 즉, 다른 위치(즉, 제1 내지 제3 위치)에 대응하는 데이터 청크들을 고려할 필요 없이, 제4 위치에 대응하는 각각의 데이터 청크 'D', 'C', 'A', 'C', 'B'만으로 4 개의 데이터(401, 403, 405, 409)를 변별할 수 있다. 한편, 제3 위치의 변별력은 가장 낮다. 즉, 제3 위치에 대응하는 데이터 청크는 모두 'A'로 동일하기 때문에, 제3 위치에 대응하는 데이터 청크들 만으로 데이터(401, 403, 405, 407, 409)를 변별하는 것은 불가능하다. 결국, 본 실시예에서는 제4 위치, 제1 위치, 제2 위치 및 제3 위치의 순서로 변별력이 낮아짐을 알 수 있다. 이에 따라, 제4 위치에는 '3', 제1 위치에는 '2', 제2 위치에는 '1', 그리고 제3 위치에는 '0'이라는 변별 지수를 부여하고, 제1 내지 제4 위치의 순서를 나타내도록 할 수 있다.
여기서, 변별 지수는 정보 엔트로피(entropy of information)를 이용하여 연산될 수 있다. 정보 엔트로피는 하나의 심볼이 가질 수 있는 정보량을 나타낼 수 있으며, 구체적으로, 복수의 데이터에서 동일한 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 빈도 수를 이용하여 연산될 수 있다. 예를 들어, 복수의 데이터에서 제4 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 빈도 수가, 제1 위치에 대응하는 데이터 청크들 중 중복되는 데이터 청크의 빈도 수보다 적은 경우, 제4 위치의 변별 지수는 제1 위치의 변별 지수보다 높을 수 있다. 이를 연산하는 구체적인 과정에 대해서는 도 4b를 참조하여 후술하도록 한다. 이렇게 연산된 변별 지수의 값의 순서에 따라, 위치 벡터(425)는 제1 내지 제4 위치의 순서를 기록한다. 즉, 위치 벡터(425)는 (4, 1, 2, 3)으로 표현될 수 있다.
도 4b는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 정보 엔트로피(entropy of information)를 이용하여 위치 벡터를 연산하는 것을 설명하기 위한 개략도이다.
도 4b를 참조하면, 도 4a에 도시된 데이터(401, 403, 405, 407, 409)에 기초하여 생성된 빈도 행렬이 도시되어 있다. 여기서, 데이터(401, 403, 405, 407, 409)에 포함되는 심볼들의 종류는 4 가지(즉, 'A', 'B', 'C', 'D)이고, 빈도 행렬은 제1 위치 내지 제4 위치를 나타내는 4 개의 수평열 및 제1 위치 내지 제4 위치에 대한 각각의 심볼의 빈도 수를 나타내는 4 개의 수직열을 포함한다.
본 발명의 일 실시예에 따른 데이터 중복 제거 방법은 정보 엔트로피를 표현하기 위한 Q 벡터를 연산하여 제1 위치 내지 제4 위치에 대한 변별 지수를 계산한다. 즉, 제1 위치 내지 제4 위치 중 제i 위치(단, i는 1 이상이고 4 이하인 자연수)에 대한 Q 벡터(Qi)는 하기 수학식 (1)에 의해 연산될 수 있다.
Qi = ∑j Fij x log Fij (1)
상기 수학식 (1)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j(단, j는 1 이상이고 4 이하인 자연수)번째 수직열에 대응하는 값이다. 예를 들어, Q1은 Q 벡터 원소 중 제1 위치에 대응하는 원소를 나타내며 (F11, F12, F13, F14)는 ('0', '3', '0', '2')이고, Q2는 Q 벡터 원소 중 제2 위치에 대응하는 원소를 나타내며 (F21, F22, F23, F24)는 ('0', '1', '4', '0')이 될 수 있다. 이에 따라 상기 수학식 (1)에 의해 연산된 Q 벡터는 ('6.755', '8', '11.610', '2')가 될 수 있다. 이로부터 제1 위치 내지 제4 위치의 순서는 Qi 값이 작은 순서대로 정렬될 수 있다. 즉, 본 실시예에서 Q4 < Q1 < Q2 < Q3 이므로, 제1 위치 내지 제4 위치는 제4 위치, 제1 위치, 제2 위치, 제3 위치 순서로 정렬된다. 또한, 위치 벡터 L은 (4, 1, 2, 3)으로 표현될 수 있다.
한편, 본 발명의 몇몇의 실시예에서, 새로운 데이터가 추가되거나, 데이터의 일부가 삭제된 경우, 상기 빈도 행렬을 재연산할 수 있다. 구체적으로, 상기 Fij 값이 Gij 값으로 변경된 경우, 상기 Q 벡터는 하기 수학식 (2)에 의해 재연산될 수 있다.
Qi' = Qi - Fij x log Fij + Gij x log Gij (2)
상기 수학식 (2)에서 Qi'는 새로운 Q 벡터 원소, Qi는 기존의 Q 벡터 원소, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 기존 값, Gij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 새로운 값이다. 이에 대해서는 도 6a 내지 도 6c와 함께 후술하도록 한다.
한편, 본 발명의 몇몇의 실시예에서, 제1 위치 내지 제4 위치의 순서는 하기 수학식 (3)에 의해 연산되는 정보 엔트로피 H를 연산하여 정해질 수도 있다.
Hi = log N - 1 / N x Qi (3)
상기 수학식 (3)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, N은 상기 제i 위치에 대한 총 심볼의 개수, Hi는 상기 제i 위치에 대한 변별 지수이다.
이와 다르게, 본 발명의 몇몇의 실시예에서, 제1 위치 내지 제4 위치의 순서는 하기 수학식 (4) 및 (5)에 의해 연산되는 정보 엔트로피 H를 연산하여 정해질 수도 있다.
pij = Fij / N (4)
Hi = ∑j pij x log(1 / pij) (5)
상기 수학식 (3) 및 상기 수학식 (4)에서 pij는 상기 제i 위치에서 제j 번째 심볼의 비율, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 값, N은 상기 제i 위치에 대한 총 심볼의 개수, Hi는 상기 제i 위치에 대한 변별 지수이다. 이로부터 정보 엔트로피 H는 ('0.971', '0.722', '0', '1.922')로 연산된다. 정보 엔트로피 H를 이용하는 본 실시예에서는 제1 위치 내지 제4 위치가 Hi 값이 큰 순서대로 정렬될 수 있다. 즉, 본 실시예에서 H4 > H1 > H2 > H3 이므로, 제1 위치 내지 제4 위치는 제4 위치, 제1 위치, 제2 위치, 제3 위치 순서로 정렬된다. 또한, 위치 벡터 L은 (4, 1, 2, 3)으로 표현될 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 중복 제거 방법에 따라 도 4a 및 도 4b에서 설명한 위치 벡터를 이용하여 핑거프린트를 생성하는 것을 설명하기 위한 개략도이다.
도 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)의 동일 여부를 신속하게 판단할 수 있도록 한다.
도 6a 내지 도 6c는 본 발명의 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 6a 및 도 6b를 함께 참조하면, 도 6a는 데이터(401, 403, 405, 407, 409)에 데이터(411)가 추가된 경우를 나타낸다. 이 경우 새로운 데이터(411)가 추가되어 각 심볼의 빈도 수가 변경되었으므로, 빈도 행렬은 재연산될 필요가 있다. 구체적으로, 데이터(411)는 제1 위치에 'C', 제2 위치에 'A', 제3 위치에 'D', 그리고 제4 위치에 'B'라는 심볼을 포함하므로, 도 6b에서 사각형으로 표시한 위치에서의 값은 각각 1씩 증가하도록 갱신되어야 한다. 이와 같이 빈도 행렬의 값이 변경된 경우, 수학식 (1)에 의해 연산된 Q 벡터는 수학식 (2)에 의해 재연산될 수 있다. 예를 들어, 제4 위치에 대해 'B'라는 심볼이 추가된 경우, 새로운 Q4' 값은 Q4 - F42 x log F42 + G42 x log G42에 의해 연산될 수 있다. 여기서 F42는 빈도 행렬의 제4 번째 수평열에 대한 제2 번째 수직열에 대응하는 기존 값(즉, 1)이고, G42는 빈도 행렬의 제4 번째 수평열에 대한 제2 번째 수직열에 대응하는 새로운 값(즉, 2)이다. 이에 따라 Q4' 값은 4가 된다. 만일 이로인해 Q1 내지 Q4의 대소 관계가 변동이 된다면, 이에 따라 위치 벡터 L도 갱신될 수 있다.
도 6c를 참조하면, 도 6c는 데이터(407)이 삭제된 경우를 나타낸다. 이 경우 데이터(407)가 삭제되어 각 심볼의 빈도 수가 변경되었으므로, 빈도 행렬은 재연산될 필요가 있다. 구체적으로, 데이터(407)는 제1 위치에 'B', 제2 위치에 'B', 제3 위치에 'A', 그리고 제4 위치에 'C'라는 심볼을 포함하므로, 도 6c에서 사각형으로 표시한 위치에서의 값은 각각 1씩 감소하도록 갱신되어야 한다. 이와 같이 빈도 행렬의 값이 변경된 경우, 수학식 (1)에 의해 연산된 Q 벡터는 수학식 (2)에 의해 재연산될 수 있다. 예를 들어, 제1 위치에 대해 'B'라는 심볼이 삭제된 경우, 새로운 Q1' 값은 Q1 - F12 x log F12 + G12 x log G12에 의해 연산될 수 있다. 여기서 F12는 빈도 행렬의 제1 번째 수평열에 대한 제2 번째 수직열에 대응하는 기존 값(즉, 3)이고, G12는 빈도 행렬의 제1 번째 수평열에 대한 제2 번째 수직열에 대응하는 새로운 값(즉, 2)이다. 이에 따라 Q1' 값은 4가 된다. 만일 이로인해 Q1 내지 Q4의 대소 관계가 변동이 된다면, 이에 따라 위치 벡터 L도 갱신될 수 있다.
도 7a는 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 7a를 참조하면, 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법에서 심볼은 서로 다른 제1 심볼 및 제2 심볼을 포함하고, 빈도 행렬은 제1 심볼의 빈도 수와 제2 심볼의 빈도 수를 합한 값을 나타내는 수직열을 포함할 수 있다. 예를 들어, 도 7a에 도시된 빈도 행렬은 'A', 'B', 'C', 'D'의 4 개의 심볼을 나타내는 2 개의 수직열만을 포함하고 있다. 구체적으로, 첫 번째 수직열은 심볼 'B'와 'C'의 빈도 수를 합한 값들을 포함하고, 두 번째 수직열은 심볼 'A'와 'D'의 빈도 수를 합한 값들을 포함할 수 있다. 본 실시예는 서로 상관 관계를 갖거나 상호 연관성이 높은 심볼들을 하나의 심볼로 취급하여 처리한다. 예를 들어, 심볼 'B'와 'C'의 분포가 실질적으로 동일한 경우와 같이 상호 연관성이 매우 높은 경우 심볼 'B'와 'C'를 하나의 심볼로 취급함으로써, 빈도 행렬의 크기를 감소시킬 수 있다. 빈도 행렬의 크기가 줄어들면, 빈도 행렬을 저장하는 메모리 공간을 절약할 수 있다는 이점이 있다.
도 7b는 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 7b를 참조하면, 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법에서 빈도 행렬은 제1 위치 내지 제N 위치 중 일부 위치에 대한 K(단, K는 1 이상이고 N 미만인 자연수) 개의 수평열만을 포함할 수 있다. 예를 들어, 도 7b에 도시된 빈도 행렬은 제1 위치 및 제4 위치에 대한 수평열만을 포함하고 있다. 본 실시예는 제1 위치 내지 제N 위치 중 상대적으로 변별력이 높은 일부 위치만을 선별하여 데이터의 중복 여부를 판단할 수 있도록 한다. 예를 들어, 제1 위치 내지 제N 위치 중 제1 위치와 제4 위치는 데이터 변별 지수가 높아 데이터의 중복 여부의 판단에 실질적인 도움이 되지만, 제2 위치와 제3 위치는 그렇지 않은 경우, 데이터의 중복 제거 작업은 제1 위치와 제4 위치만을 고려하여 수행될 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 8을 참조하면, 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법은, 도 6a 내지 도 6c와 관련하여 상술한 바와 같이 데이터가 추가되거나 삭제된 경우, 빈도 행렬의 재연산 작업을 지연시켜 수행하는 지연 갱신(lazy update)에 관한 것이다. 구체적으로, 데이터가 추가되거나 삭제되어 빈도 행렬이 재연산될 필요가 있을 경우, 빈도 행렬을 재연산하기 전에 추가된 데이터 또는 삭제된 데이터에 대해 플래그(flag)를 설정할 수 있다. 이후 빈도 행렬을 재연산하는 작업은 작업 스케줄러에 의해 제어되는 임의의 적절한 시점에 수행될 수 있다. 예를 들어, 데이터(401, 403, 405, 407, 409)에 데이터(411)가 추가되고 데이터(407)가 삭제된 경우, 데이터(407, 411)에 플래그만 설정이 되고 빈도 행렬은 즉시 재연산되지 않을 수 있다. 도 8에서는 추가된 데이터(411)에 대해 'n'이라는 플래그가 설정되고 삭제된 데이터(407)에 대해 'o'라는 플래그가 설정되었지만, 플래그의 구체적인 형태는 이에 한정되지 않는다.
도 9a 및 도 9b는 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 개략도이다.
도 9a를 참조하면, 본 발명의 또 다른 실시예에 따른 데이터 중복 제거 방법에서 데이터(501, 503, 505, 507, 509, 511)의 길이는 서로 다를 수 있다. 예를 들어, 데이터(501, 509, 511)의 길이는 4 개의 심볼을 포함할 수 있는 반면, 데이터(505, 507)의 길이는 5 개의 심볼을 포함할 수 있다. 이러한 경우, 도 9b를 참조하면, 길이가 서로 다른 데이터(501, 503, 505, 507, 509, 511)로부터 변별 지수를 계산하기 위해 빈도 행렬에 공백 심볼(φ)을 나타내는 수직열을 추가할 수 있다. 예를 들어 데이터(501, 509, 511)는 4 개의 심볼만을 포함하므로, 제5 위치에 가상의 공백 심볼을 포함하고 있다고 볼 수 있다. 마찬가지로, 데이터(503)은 3 개의 심볼만을 포함하므로, 제4 위치 및 제5 위치에 가상의 공백 심볼을 포함하고 있다고 볼 수 있다. 이에 따르면, 제5 위치에는 데이터(505)의 심볼 'C'가 1 개, 데이터(507)의 심볼 'D'가 1개, 그리고 데이터(501, 502, 509, 511)의 공백 심볼이 4개 있는 것이므로, 제5 번째 수평열은 ('0', '0', '1', '1', '4')가 된다.
도 10 및 도 11은 본 발명의 일 실시예에 따른 데이터 중복 제거 방법을 설명하기 위한 흐름도이다.
도 10을 참조하면, 본 발명의 일 실시예에 따른 데이터 중복 제거 방법은, 사용자 또는 클라이언트(250)로부터 데이터 쓰기 요청을 수신하고(S701), 위치 벡터를 구성하여 쓰기 요청된 데이터에 대한 핑거프린트를 추출할 수 있다(S703). 도 11을 함께 참조하면, 위치 벡터를 구성하는 것은, 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하고(S803), 제1 위치 내지 제N 위치에 대한 변별 지수를 연산하는 것을 포함할 수 있다. 구체적으로, 변별 지수는 상술한 바와 같은 빈도 행렬을 이용하여 Q 벡터를 연산하거나, 상기 빈도 행렬을 이용하여 정보 엔트로피 H를 연산하여 정해질 수 있다(S805). 또한, 제1 위치 내지 제N 위치의 순서를 변별 지수의 값에 따라 정렬하여, 그 순서를 위치 벡터에 기록하는 것을 포함할 수 있다(S807). 한편, 핑거프린트를 추출하는 것은, 위치 벡터에 기록된 제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).
본 발명의 다양한 실시예에 따르면, 데이터의 중복 제거를 수행하기 위한 핑거프린트를 효율적으로 생성할 수 있다. 구체적으로 빈도 행렬 및 Q 벡터를 이용함으로써 정보 엔트로피를 효율적으로 계산할 수 있을 뿐 아니라, 데이터가 추가되거나 삭제된 경우 O(M)(단, M은 분할된 데이터 청크의 개수)의 우수한 시간 복잡도로 위치벡터를 재연산할 수 있다.
도 12를 참조하면, 본 발명의 다양한 실시예에 따른 데이터 중복 제거 방법을 수행하는 장치는 제어 장치(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)에 제공할 수 있다.
도 13은 본 발명의 실시예에 따른 데이터 중복 제거 방법이 구현되는 장치의 응용예를 설명하기 위한 개략적인 블록도이다.
도 13을 참조하면, 데이터 중복 제거 장치는 중앙 처리 장치(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, 411, 501, 503, 505, 507, 509, 511: 데이터
110: 분할부 115: 데이터 청크
120: 위치 벡터 생성부 125, 425: 위치 벡터
130: 핑거프린트 생성부 135, 431, 433, 435, 437, 439: 핑거프린트
200, 202, 204, 206: 스토리지 노드
250: 제1 클라이언트 252: 제2 클라이언트
302, 304, 306, 308: 데이터 청크

Claims (10)

  1. 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하되, 각각의 데이터 청크는 심볼(symbol)을 포함하고,
    상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고,
    상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고,
    정렬된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 데이터의 핑거프린트를 생성하는 것을 포함하되,
    상기 데이터를 포함하는 복수의 데이터에 포함되는 심볼의 종류의 수는 L(단, L은 자연수)개이고,
    상기 변별 지수는 상기 제1 위치 내지 상기 제N 위치를 나타내는 N 개의 수평열 및 상기 제1 위치 내지 상기 제N 위치에 대한 상기 심볼의 빈도 수를 나타내는 L 개의 수직열을 포함하는 빈도 행렬을 이용하여 연산되는 데이터 중복 제거 방법.
  2. 제1항에 있어서,
    상기 제1 위치 내지 상기 제N 위치 중 제i 위치(단, i는 1 이상이고 N 이하인 자연수)에 대한 변별 지수는 하기 수학식 (1)에 의해 연산되는 Q 벡터를 포함하는 데이터 중복 제거 방법:
    Qi = ∑j Fij x log Fij (1)
    상기 수학식 (1)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j(단, j는 1 이상이고 L 이하인 자연수)번째 수직열에 대응하는 값이다.
  3. 제2항에 있어서,
    상기 Fij 값이 Gij 값으로 변경된 경우, 상기 변별 지수는 하기 수학식 (2)에 의해 연산된 새로운 Q 벡터에 기초하여 재연산되는 데이터 중복 제거 방법:
    Qi' = Qi - Fij x log Fij + Gij x log Gij (2)
    상기 수학식 (2)에서 Qi'는 새로운 Q 벡터 원소, Qi는 기존의 Q 벡터 원소, Fij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 기존 값, Gij는 상기 빈도 행렬의 제i 번째 수평열에 대한 제j 번째 수직열에 대응하는 새로운 값이다.
  4. 제1항에 있어서,
    상기 복수의 데이터에 새로운 데이터가 추가되거나, 상기 복수의 데이터 중 일부 데이터가 삭제된 경우, 상기 빈도 행렬을 재연산하는 것을 더 포함하는 데이터 중복 제거 방법.
  5. 제4항에 있어서,
    상기 빈도 행렬을 재연산하는 것은,
    상기 빈도 행렬을 재연산하기 전에 상기 추가된 데이터 또는 상기 삭제된 데이터에 대해 플래그(flag)를 설정하는 것을 포함하는 데이터 중복 제거 방법.
  6. 제1항에 있어서,
    상기 심볼은 서로 다른 제1 심볼 및 제2 심볼을 포함하고,
    상기 빈도 행렬은 상기 제1 심볼의 빈도 수와 상기 제2 심볼의 빈도 수를 합한 값을 나타내는 수직열을 포함하는 데이터 중복 제거 방법.
  7. 제1항에 있어서,
    상기 빈도 행렬은 상기 제1 위치 내지 상기 제N 위치 중 일부 위치에 대한 K(단, K는 1 이상이고 N 미만인 자연수) 개의 수평열만을 포함하는 데이터 중복 제거 방법.
  8. 제1항에 있어서,
    상기 심볼은 공백 심볼을 더 포함하고,
    상기 변별 지수는 상기 N 개의 수평열 및 상기 제1 위치 내지 상기 제N 위치에 대한 상기 심볼 및 상기 공백 심볼의 빈도 수를 나타내는 L + 1 개의 수직열을 포함하는 빈도 행렬을 이용하여 연산되는 데이터 중복 제거 방법.
  9. 데이터를 제1 위치 내지 제N(단, N은 자연수) 위치에 대응되는 복수의 데이터 청크로 분할하되, 각각의 데이터 청크는 심볼(symbol)을 포함하고,
    상기 제1 위치 내지 상기 제N 위치에 대한 변별 지수를 연산하고,
    상기 제1 위치 내지 상기 제N 위치의 순서를 상기 변별 지수의 값에 따라 정렬하고,
    정렬된 상기 제1 위치 내지 상기 제N 위치의 순서에 따라, 상기 제1 위치 내지 상기 제N 위치에 대응하는 데이터 청크를 병합하여 상기 데이터의 핑거프린트를 생성하는 것을 포함하되,
    상기 변별 지수는 상기 제1 위치 내지 상기 제N 위치에 대한 상기 심볼의 빈도 수를 이용하여 연산되고,
    상기 데이터를 포함하는 복수의 데이터에 포함되는 심볼의 종류의 수는 L(단, L은 자연수)개이고,
    상기 제1 위치 내지 상기 제N 위치 중 제i 위치(단, i는 1 이상이고 N 이하인 자연수)에 대한 변별 지수는 하기 수학식 (6)에 의해 연산되는 Q 벡터를 포함하고,
    Qi = ∑j Fij x log Fij (6)
    상기 수학식 (6)에서 Qi는 상기 제i 위치에 대한 Q 벡터 원소, Fij는 상기 제i 위치에서 제j(단, j는 1 이상이고 L 이하인 자연수)번째 심볼의 빈도 수인 데이터 중복 제거 방법.
  10. 삭제
KR1020140060420A 2014-05-20 2014-05-20 데이터 중복 제거 방법 KR102172321B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140060420A KR102172321B1 (ko) 2014-05-20 2014-05-20 데이터 중복 제거 방법
US14/711,647 US10108636B2 (en) 2014-05-20 2015-05-13 Data deduplication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140060420A KR102172321B1 (ko) 2014-05-20 2014-05-20 데이터 중복 제거 방법

Publications (2)

Publication Number Publication Date
KR20150133527A KR20150133527A (ko) 2015-11-30
KR102172321B1 true KR102172321B1 (ko) 2020-10-30

Family

ID=54556203

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140060420A KR102172321B1 (ko) 2014-05-20 2014-05-20 데이터 중복 제거 방법

Country Status (2)

Country Link
US (1) US10108636B2 (ko)
KR (1) KR102172321B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111368122B (zh) * 2020-02-14 2022-09-30 深圳壹账通智能科技有限公司 一种图片去重的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120253762A1 (en) 2011-03-30 2012-10-04 Chevron U.S.A. Inc. System and method for computations utilizing optimized earth model representations
US20130018853A1 (en) * 2011-07-11 2013-01-17 Dell Products L.P. Accelerated deduplication
US20130073528A1 (en) * 2011-09-19 2013-03-21 International Business Machines Corporation Scalable deduplication system with small blocks
US20140007239A1 (en) 2010-05-03 2014-01-02 Panzura, Inc. Performing anti-virus checks for a distributed filesystem

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2840589B2 (ja) 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
JP2004110606A (ja) 2002-09-20 2004-04-08 Pfu Ltd 画像処理装置及び方法並びにプログラム
WO2007080133A2 (en) 2006-01-16 2007-07-19 Thomson Licensing Method for determining and fingerprinting a key frame of a video sequence
KR100893123B1 (ko) 2007-05-07 2009-04-10 (주)엔써즈 오디오 핑거프린트 데이터 생성 방법 및 장치 및 이를이용한 오디오 데이터 비교 방법 및 장치
JP5291523B2 (ja) 2009-04-21 2013-09-18 株式会社データ変換研究所 類似データ検索装置及びそのプログラム
US9401967B2 (en) * 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
GB2482128A (en) * 2010-07-19 2012-01-25 Quantum Corp Delta chunks and delta hashes
JP5500024B2 (ja) 2010-09-27 2014-05-21 富士通株式会社 画像認識方法及び装置並びにプログラム
CA2814401C (en) 2010-11-11 2013-12-31 Google Inc. Vector transformation for indexing, similarity search and classification
JP6123975B2 (ja) 2011-07-29 2017-05-10 パナソニックIpマネジメント株式会社 特徴量抽出装置及び特徴量抽出方法
US9703796B2 (en) * 2011-12-06 2017-07-11 Brocade Communications Systems, Inc. Shared dictionary between devices
US20150019815A1 (en) * 2013-07-15 2015-01-15 International Business Machines Corporation Utilizing global digests caching in data deduplication of workloads
US10073853B2 (en) * 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
KR20150121505A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 데이터 중복 제거 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140007239A1 (en) 2010-05-03 2014-01-02 Panzura, Inc. Performing anti-virus checks for a distributed filesystem
US20120253762A1 (en) 2011-03-30 2012-10-04 Chevron U.S.A. Inc. System and method for computations utilizing optimized earth model representations
US20130018853A1 (en) * 2011-07-11 2013-01-17 Dell Products L.P. Accelerated deduplication
US20130073528A1 (en) * 2011-09-19 2013-03-21 International Business Machines Corporation Scalable deduplication system with small blocks

Also Published As

Publication number Publication date
US20150339316A1 (en) 2015-11-26
KR20150133527A (ko) 2015-11-30
US10108636B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
KR102240557B1 (ko) 데이터 저장 방법, 장치 및 시스템
KR102127116B1 (ko) 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US10209908B2 (en) Optimization of in-memory data grid placement
CN104008064B (zh) 用于多级存储器压缩的方法和系统
ES2720482T3 (es) Equilibrio de carga en sistemas de almacenamiento en grupos
US10268716B2 (en) Enhanced hadoop framework for big-data applications
US10204133B2 (en) Optimizing update operations in in-memory database systems
CN105630847B (zh) 数据存储方法、数据查询方法、装置及系统
CN104781795A (zh) 存储层的动态选择
US9159028B2 (en) Computing regression models
CN105373342A (zh) 异构统一存储器
KR20150121505A (ko) 데이터 중복 제거 방법 및 장치
CN110914817A (zh) 用于存储环境的认知数据过滤
CN110914814A (zh) 分布式存储环境的认知文件和对象管理
US10409495B1 (en) Data optimization decision control based on file system metadata
US10417192B2 (en) File classification in a distributed file system
CN107205024A (zh) 一种云存储系统中数据去重方法及系统
Chang et al. Dynamic deduplication decision in a hadoop distributed file system
KR102225577B1 (ko) 하이브리드 스토리지를 이용한 데이터 분산 저장 방법 및 장치
AU2020382999B2 (en) Intelligent data pool
KR102172321B1 (ko) 데이터 중복 제거 방법
US20150220272A1 (en) Increasing data storage capacity
CN116842012A (zh) 一种Redis集群的分片存储方法、装置、设备及存储介质
KR102225820B1 (ko) 악성코드 분석용 머신러닝을 위한 하이브리드 피처 벡터 생성 장치 및 방법
CN112148461A (zh) 应用的调度方法、装置

Legal Events

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