KR20170031456A - 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법 - Google Patents

중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법 Download PDF

Info

Publication number
KR20170031456A
KR20170031456A KR1020150129015A KR20150129015A KR20170031456A KR 20170031456 A KR20170031456 A KR 20170031456A KR 1020150129015 A KR1020150129015 A KR 1020150129015A KR 20150129015 A KR20150129015 A KR 20150129015A KR 20170031456 A KR20170031456 A KR 20170031456A
Authority
KR
South Korea
Prior art keywords
chunk
unique identifier
dictionary
file
chunks
Prior art date
Application number
KR1020150129015A
Other languages
English (en)
Other versions
KR102350765B1 (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 KR1020150129015A priority Critical patent/KR102350765B1/ko
Publication of KR20170031456A publication Critical patent/KR20170031456A/ko
Application granted granted Critical
Publication of KR102350765B1 publication Critical patent/KR102350765B1/ko

Links

Images

Classifications

    • G06F17/30159
    • G06F17/30174

Landscapes

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

Abstract

본 발명의 일 태양에 따른 데이터 전송 방법은, 제1 컴퓨팅 장치가, 제2 컴퓨팅 장치로부터 파일의 전송 요청을 수신하여, 상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 단계 및 상기 제2 컴퓨팅 장치가, 상기 고유 식별자 목록을 수신하여, 상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 단계를 포함할 수 있다.

Description

중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법 {System and method for managing data de-duplication dictionary}
본 발명은 파일 전송을 위해 중복된 데이터를 제거한 딕셔너리(dictionary)를 관리하는 시스템 및 그 방법에 관한 것이다. 보다 자세하게는, 전송하려는 파일을 구성하는 청크(chunk)와 청크의 고유 식별자(unique ID)를 딕셔너리에 매칭 테이블로 저장하고, 각 청크의 고유 식별자를 이용하여 파일을 전송하는 시스템 및 그 방법에 관한 것이다.
컴퓨터 네트워크 기술의 발전에 따라, 각 단말의 독립적인 하드웨어 성능에 의존하던 기존의 컴퓨팅 환경은 네트워크 상의 컴퓨팅 자원을 이용하는 클라우드 컴퓨팅 형태로 진화하고 있다. 이처럼 솔루션(solution)의 개발 및 운영환경이 점차 클라우드(cloud)와 다중 가상 머신(multi virtual machine)에 기반한 환경으로 변경함에 따라, 데이터를 효율적으로 관리하기 위한 기술이 중요해지고 있다.
데이터의 관리는 안정성과 접근성, 이 두 가지 특성을 큰 축으로 하여 살펴보아야 한다. 안전성을 강화하기 위한 방법으로는 암호화나 백업을 고려할 수 있다. 그러나 데이터의 안전성에만 초점을 맞추다 보면 데이터의 크기 증가로 인한 저장 공간의 비용 증가가 문제될 수 있다. 이를 해결하기 위한 기술로 압축을 고려할 수도 있으나, 대용량의 데이터일수록 압축과 해제에 소모되는 시간 역시 증가하는 문제가 있다.
데이터의 접근성을 강화하기 위한 기술로 중복된 데이터를 제거(data de-duplication)하는 기술이 있다. 그러나, 기존의 중복된 데이터를 제거하는 기술은 중복된 데이터를 제거하고 최적화된 데이터를 저장하는데에만 초점을 두었기 때문에, 데이터를 전송하는 과정에서는 여전히 데이터의 크기 증가로 인한 네트워크의 비용 증가가 문제될 수 있다.
대한민국 공개특허 공보 제2013-0087850호
본 발명이 해결하고자 하는 기술적 과제는, 데이터 전송을 위해 중복된 데이터를 제거한 딕셔너리(4D; data de-duplication dictionary)를 관리하는 시스템 및 그 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 고유 식별자를 대신할 임시 고유 식별자를 생성하여 파일을 전송함으로써, 파일 전송시 발생하는 네트워크 비용을 감소시키는 시스템 및 그 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 태양에 따른 데이터 전송 방법은, 제1 컴퓨팅 장치가, 제2 컴퓨팅 장치로부터 파일의 전송 요청을 수신하여, 상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 단계 및 상기 제2 컴퓨팅 장치가, 상기 고유 식별자 목록을 수신하여, 상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 단계를 포함할 수 있다.
일 실시예에서, 상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 단계는, 상기 제1 컴퓨팅 장치가, 상기 파일을 구성하는 청크로 제1 딕셔너리를 조회하여, 상기 청크에 매칭된 고유 식별자를 구하는 단계를 포함하고, 상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 단계는, 상기 제2 컴퓨팅 장치가, 상기 고유 식별자 목록에 포함된 고유 식별자로 제2 딕셔너리를 조회하여, 상기 고유 식별자에 매칭된 청크를 구하는 단계를 포함할 수 있다. 여기서, 상기 제1 딕셔너리는 상기 제1 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것이고, 상기 제2 딕셔너리는 상기 제2 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 태양에 따른 데이터 전송 시스템은, 제2 컴퓨팅 장치로부터 파일의 전송 요청을 수신하여, 상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 제1 컴퓨팅 장치 및 상기 고유 식별자 목록을 수신하여, 상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 제2 컴퓨팅 장치를 포함할 수 있다.
*일 실시예에서, 상기 데이터 전송 시스템은, 상기 제1 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 제1 딕셔너리 및 상기 제2 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 제2 딕셔너리를 더 포함할 수 있다. 여기서, 상기 제1 컴퓨팅 장치는, 상기 파일을 구성하는 청크로 상기 제1 딕셔너리를 조회하여, 상기 청크에 매칭된 고유 식별자를 구하고, 상기 제2 컴퓨팅 장치는, 상기 고유 식별자 목록에 포함된 고유 식별자로 상기 제2 딕셔너리를 조회하여, 상기 고유 식별자에 매칭된 청크를 구하는 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 태양에 따른 데이터 전송 시스템은, 복수의 컴퓨팅 장치를 포함할 수 있다. 여기서, 상기 컴퓨팅 장치는, 다른 컴퓨팅 장치와 청크의 고유 식별자를 송수신하기 위한 고유 식별자 송수신부와 파일을 청크로 분할하거나, 청크를 병합하여 파일을 구성하기 위한 파일-청크 변환부 및 청크를 이용하여 고유 식별자를 조회하거나, 고유 식별자를 이용하여 청크를 조회하기 위한 청크-고유 식별자 조회부를 포함할 수 있다.
일 실시예에서, 상기 데이터 전송 시스템은 복수의 딕셔너리를 더 포함할 수 있다. 여기서, 상기 딕셔너리는 상기 컴퓨팅 장치에 대응하여, 상기 컴퓨팅 장치로부터 수신한 청크에 매칭된 고유 식별자를 조회하거나, 상기 컴퓨팅 장치로부터 수신한 고유 식별자에 매칭된 청크를 조회하기 위한 청크-고유 식별자 조회부와 상기 딕셔너리에 저장되어 있지 않은 청크와 청크의 고유 식별자를 매칭하여 저장하는 청크-고유 식별자 저장부 및 상기 딕셔너리의 청크 및 청크의 고유 식별자를 다른 딕셔너리와 동기화하는 청크 동기화부를 포함할 수 있다.
상기와 같은 본 발명에 따르면, 파일을 여러 개의 청크로 나누고 각 청크의 고유 식별자를 이용하여 파일을 전송함으로써, 직접 파일을 전송하는 것에 비해 파일 전송시 발생하는 네트워크 비용을 감소시킬 수 있다.
또한, 필요에 따라 청크의 임시 고유 식별자를 생성하여 파일을 전송함으로써, 파일 전송시에 발생할 수 있는 네트워크 비용을 유휴시간에 발생하도록 조정할 수 있다. 이를 통해서 파일 전송시에 발생하는 네트워크 비용을 감소시킬 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
도 1은 종래 기술에 의한 데이터 전송 방법을 개념적으로 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른, 파일을 송신하는 단말 및 수신하는 단말에 대응되는 각각의 딕셔너리에 청크가 모두 존재하는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른, 파일을 수신하는 단말에 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른, 파일을 송신하는 단말에 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른, 파일을 송신하는 단말 및 수신하는 단말에 대응되는 각각의 딕셔너리에 하나의 청크가 존재하지 않는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른, 파일을 송신하는 단말에 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우에 네트워크 비용을 감소시키기 위한 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른, 파일을 송신하는 단말 및 수신하는 단말 각각 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우에 네트워크 비용을 감소시키기 위한 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른, 임시 고유 식별자가 라이브러리에 이미 등록되어 있는 경우에 정식 고유 식별자를 조회하고 갱신하는 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른, 임시 고유 식별자가 라이브러리에 등록되어 있지 않는 경우에 정식 고유 식별자를 생성하고 갱신하는 방법을 설명하기 위한 도면이다.
도 10 내지 도 13은 본 발명의 일 실시예에 따른, 데이터 전송 방법을 설명하기 위한 순서도이다.
도 14 내지 도 15는 본 발명의 일 실시예에 따른, 데이터 전송 시스템의 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1은 종래 기술에 의한 데이터 전송 방법을 개념적으로 나타내는 도면이다.
파일의 데이터는 0 또는 1이 나열된 특정 블록으로 이루어져 있다. 이점에 착안하면 중복되는 데이터를 제거하기 위해 각 파일을 최적의 데이터 블록(data block)으로 나눌 수 있다. 이 때 각 파일을 구성하고 있는 데이터 블록을 청크(chunk)라고 한다. 단말 A(101a)가 가지고 있는 File1(111)의 경우 청크 a, 청크 b 및 청크 c로 구성되어 있고, File2(112)의 경우 청크 a, 청크 b 및 청크 d로 구성되어 있다. 단말 B(101b)가 가지고 있는 File6(116)의 경우 청크 b, 청크 a 및 청크 c로 구성되어 있고, File7(117)의 경우 청크 b, 청크 a 및 청크 e로 구성되어 있다. 청크로 구성된 파일을 표시할 때는 대괄호([])표시와 콤마(,) 표시를 이용해서 기재하기로 한다. File1(111)은 [a,b,c], File2(112)는 [a,b,d], File6(116)은 [b,a,c], File7(117)은 [b,a,e]로 표시할 수 있다. 각 파일은 해당 청크로 나눌 수 있으며, 반대로 해당 청크를 순서대로 병합(merge)하면 원래의 파일을 얻을 수 있다.
이하, 본 발명에서는 이해의 편의를 위해 파일은 3개의 동일한 크기의 청크로 구성된 것으로 가정한다. 그러나, 이는 단지 이해의 편의를 위한 것이며 이러한 구성으로 한정을 하기 위함이 아니다. 실제 중복된 데이터를 제거하기 위한 선행문헌으로 한국 공개특허 제2013-0087850호를 참고하면, 청크는 파일의 크기 및 종류에 따라 얼마든지 다양한 크기와 개수로 만들어질 수 있다. 파일을 청킹하고 관리하는 방법 등에 대한 자세한 설명은 상기 한국 공개특허 제2013-0087850호 등의 선행 문헌을 참조할 수 있다.
도 1을 참고하면, 단말 B(101b)로부터의 File1(111) 전송 요청에 대한 응답으로 단말 A(101a)가 File1(111)을 직접 전송하는 것을 볼 수 있다. 이 경우, 단말 A(101a)와 단말 B(101b) 사이에 발생되는 네트워크 비용은 File1(111)을 구성하고 있는 청크의 크기만큼이다. 구체적으로 File1(111)은 청크 a, 청크 b 및 청크 c로 구성된 파일이므로 총 3 단위 청크의 네트워크 비용이 발생한다. 즉, ① 단말 B(101b)의 File1(111) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 청크 [a,b,c]로 구성된 File1(111)을 직접 전송하고, 이 때에는 3 단위 청크 만큼의 네트워크 비용이 발생하게 될 것이다.
종래 기술처럼, 다른 단말로부터의 파일 전송 요청에 대한 응답으로 해당 파일을 직접 전송하는 경우에는 예외 없이 해당 파일을 구성하고 있는 청크의 크기만큼 네트워크 비용이 발생하게 된다. 단말 B(101b)가 File1(111)을 요청하던, File2(112)를 요청하던 해당 파일을 그대로 전송해야 하므로 총 3 단위 청크의 네트워크 비용이 발생하는 것은 동일하다. 이 경우, 전송을 요청한 파일의 개수 및 전송 횟수에 따라 발생되는 네트워크 비용이 선형적으로 비례해서 증가하게 된다. 즉, 총 10개의 파일을 10회 전송 요청을 하게 되면 3*10*10=300 단위 청크 만큼의 네트워크 비용이 발생하게 될 것이다. 작은 크기의 파일을 전송하거나 파일을 전송하는 횟수가 적은 경우라면 별 문제될 것이 없겠으나, 대용량 파일을 전송한다거나 전송해야 하는 횟수가 많은 경우라면 선형적으로 비례해서 증가하는 네트워크 비용으로 인해 데이터 전송에 소모되는 시간 역시 선형적으로 비례해서 증가하게 되는 문제점이 발생한다.
파일을 그대로 전송하기 때문에 발생하는 문제점을 보완하기 위해 전송하려는 파일을 압축해서 보내는 방법을 생각해볼 수 있다. 그러나 파일을 압축해서 보내는 방법도 파일을 송신하는 측에서 파일을 압축하는데 소모되는 비용과, 파일을 수신하는 측에서 수신한 압축 파일의 압축을 해제하는데 소모되는 비용을 무시할 수 없다. 또한, 파일을 압축하여 그 크기를 감소시킴으로써 파일을 전송하는데 필요한 네트워크 비용을 감소시킬 수 있지만, 몇몇 파일은 파일 포맷에 따라 이미 상당한 압축 알고리즘이 적용된 포맷으로 파일 압축으로 인한 효과가 미미한 경우가 생기기도 한다.
예를 들면 jpeg(Joint Photographic Experts Group)나 mp3(MPEG Audio Layer-3)와 같은 파일 포맷은 이미 파일을 생성할 때부터 손실 압축 알고리즘이 적용된 파일이기 때문에, 파일 전송을 위해 해당 파일을 별도로 압축하더라도 압축으로 인해 감소되는 파일의 크기가 미미할 수 있다. 또한, 파일을 압축해서 전송하려는 파일의 크기를 감소시키더라도 이는 전송하려는 파일의 크기가 작아진 것일 뿐, 전송을 요청한 파일의 개수나 전송 횟수에 따라 발생하는 네트워크 비용이 선형적으로 비례해서 증가하는 것은 마찬가지이다. 정리하면, 파일을 압축해서 보내는 방법도 ⅰ) 파일을 압축하고 해제하는 과정에서 발생하는 비용, ⅱ) 파일의 포맷에 따른 압축률의 차이, ⅲ) 전송하려는 파일의 개수와 전송 횟수에 따라 네트워크 비용이 선형적으로 비례해서 증가하는 문제 때문에 앞서 언급한 네트워크 비용을 감소시키는 데는 어느 정도 한계가 있다. 종래 기술의 이러한 문제점을 해결하기 위한 본 발명의 데이터 전송 시스템을 도 2 내지 도 3을 통해서 살펴보도록 한다.
도 2는 본 발명의 일 실시예에 따른, 파일을 송신하는 단말 및 수신하는 단말에 대응되는 각각의 딕셔너리에 청크가 모두 존재하는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
파일을 구성하고 있는 각 청크는 고유 식별자(UID; Unique ID)를 가진다. 고유 식별자는 청크에 대해 해시 함수(hash function)를 적용하여 각 청크별 해시 값(hash value)를 기반으로 생성될 수 있다. 특정 청크의 고유 식별자는 다른 모든 청크의 고유 식별자와 동일하지 않는 고유한 값을 가지는 것을 원칙으로 한다. 즉 청크와 청크의 고유 식별자는 일대일 대응 관계를 가진다. 청크의 고유 식별자를 생성하고 관리하는 방법 등에 대한 자세한 설명은 상기 한국 공개특허 제2013-0087850호 등의 선행 문헌을 참조할 수 있다.
각 청크와 청크의 고유 식별자에 관한 정보를 매칭하여 저장하고 있는 공간을 딕셔너리(dictionary)라고 한다. 딕셔너리는 각 단말과 같은 네트워크 내에서 별도의 인스턴스(instance)로 존재할 수 있다. 그렇기 때문에 각 단말과 각 단말에 대응되는 딕셔너리 사이에는 청크를 서로 주고 받더라도 발생하는 네트워크 비용이 없다고 가정한다. 도 2의 예에서는 단말 A(101a)와 단말 A에 대응되는 딕셔너리 A(103a) 사이에는 네트워크 비용이 발생하지 않는다. 그리고, 단말 B(101b)와 단말 B에 대응되는 딕셔너리 B(103b) 사이에도 네트워크 비용이 발생하지 않는다. 대신, 단말 A(101a)와 단말 B(101b) 사이에는 네트워크 비용이 발생할 수 있다. 그리고, 딕셔너리 A(103a)와 딕셔너리 B(103b) 사이에도 네트워크 비용이 발생할 수 있다.
이하, 본 발명에서는 딕셔너리의 청크와 청크의 고유 식별자를 표시할 때는 대괄호([])표시와 대시(-) 표시를 이용해서 기재하기로 한다. 도 2를 참고하면, 딕셔너리 A(103a)가 가진 청크 a(121), 청크 b(122), 청크 c(123), 청크 d(124)는 각각 [a-1], [b-2], [c-3], [d-4]로 표시할 수 있다. 딕셔너리 B(103b)가 가진 청크 a(121), 청크 b(122), 청크 c(123)는 딕셔너리 A(103a)와 공통되고, 그 외에 청크 e(125)는 [e-5]로 표시할 수 있다. 딕셔너리 A(103a)와 딕셔너리 B(103b)가 File1(111)을 구성하고 있는 청크 a(121), 청크 b(122), 청크 c(123)를 모두 공통으로 가지고 있기 때문에, File1(111)을 직접 전송하지 않더라도 청크의 고유 식별자를 이용하여 File1(111)을 전송할 수 있다.
도 2를 참고하면, 도 1과는 달리 단말 B(101b)로부터의 File1(111) 전송 요청에 대한 응답으로 단말 A(101a)가 File1(111)을 구성하고 있는 청크의 고유 식별자를 전송하는 것을 볼 수 있다. 이 경우, 단말 A(101a)와 단말 B(101b) 사이에 발생하는 네트워크 비용은 거의 무시할 수 있다. 도 1의 예시처럼 File1(111)을 구성하고 있는 청크를 직접 전송하는 경우에는 해당 청크의 크기만큼 네트워크 비용이 발생한다. 그러나, 도 2의 예시처럼 File1(111)을 구성하고 있는 청크의 고유 식별자를 전송하는 경우에는 청크의 크기에 비해 청크의 고유 식별자의 크기는 매우 작기 때문에, 발생하는 네트워크 비용을 1000배 이상으로 줄일 수 있다. 그러므로 이때 발생하는 네트워크 비용은 0이라고 봐도 무방하다. 즉, ① 단말 B(101b)의 File1(111) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 File1(111)을 구성하고 있는 청크 [a,b,c]의 고유 식별자를 딕셔너리 A(103a)에서 조회하고, ③ 그 결과인 고유 식별자 [1,2,3]을 단말 B(101b)에 전송한다. ④ 단말 A(101a)로부터 고유 식별자 [1,2,3]을 수신한 단말 B(101b)는 딕셔너리 B(103b)에 고유 식별자 [1,2,3]에 대응되는 청크를 조회한다. 그 결과 조회된 청크 [a,b,c]를 병합(merge)하여 File1(111)을 재구성 할 수 있다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ② 단말 A(101a)가 딕셔너리 A(103a)에 청크 [a,b,c]에 대응되는 고유 식별자를 조회하는 단계나, ④ 단말 B(101b)가 딕셔너리 B(103b)에 고유 식별자 [1,2,3]에 대응되는 청크를 조회하는 단계는 앞서 가정한 것처럼 동일 네트워크 내의 단말과 딕셔너리 사이의 데이터 전송이므로 발생하는 네트워크 비용이 0이 된다. 그리고, ③ 단말 A(101a)가 단말 B(101b)에 고유 식별자 [1,2,3]을 전송하는 단계 역시 청크를 직접 전송하는 것이 아닌 청크의 고유 식별자를 전송하는 것이므로 발생하는 네트워크 비용이 0이 된다. 도 2의 경우, 결과적으로 File1(111)의 전송에 발생하는 네트워크 비용이 0으로 도 1의 예시처럼 파일을 직접 전송하는 것에 비해 네트워크 비용을 3 단위 청크에서 0 단위 청크로 줄일 수 있다. 이는 전송 대상인 File1(111)을 구성하고 있는 청크 a(121), 청크 b(122), 청크 c(123)가 딕셔너리 A(103a)와 딕셔너리 B(103b)에 모두 존재하기 때문이다.
청크의 고유 식별자를 이용한 파일 전송에서는 각 단말에 대응되는 딕셔너리가 전송 대상인 파일을 구성하는 청크를, 공통으로 어느 정도 가지고 있는지에 따라 발생하는 네트워크 비용이 달라질 수 있다. 즉 파일을 수신하는 단말에서 가지고 있지 않는 청크만 데이터를 주고 받으면 되기 때문에, 파일 전체를 주고 받는 도 1의 경우에 비해 발생하는 네트워크 비용을 줄일 수 있다. 도 2의 경우에는 파일을 수신하는 단말 B(101b)가 File1(111)을 구성하고 있는 청크 [a,b,c]를 모두 가지고 있는 경우였다. 만약 이 중에서 하나의 청크를 가지고 있지 않은 경우라면 발생하는 네트워크 비용이 어떻게 되는지 도 3을 통해서 살펴보도록 한다.
도 3은 본 발명의 일 실시예에 따른, 파일을 수신하는 단말에 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
도 3을 참고하면, 도 2와는 달리 단말 B(101b)로부터의 File2(112) 전송 요청에 대한 응답으로 단말 A(101a)가 File2(112)을 구성하고 있는 청크의 고유 식별자를 전송하는 것을 볼 수 있다. 이 경우, 단말 A(101a)와 단말 B(101b) 사이에 발생하는 네트워크 비용은 청크의 고유 식별자를 전송하는 것이기 때문에 앞서 가정한 것처럼 0이 된다. 대신 딕셔너리 A(103a)와 딕셔너리 B(103b) 사이에는 네트워크 비용이 발생하게 된다. 즉, ① 단말 B(101b)의 File2(112) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 File2(112)을 구성하고 있는 청크 [a,b,d]의 고유 식별자를 딕셔너리 A(103a)에서 조회하고, ③ 그 결과인 고유 식별자 [1,2,4]을 단말 B(101b)에 전송한다. ④ 단말 A(101a)로부터 고유 식별자 [1,2,4]을 수신한 단말 B(101b)는 딕셔너리 B(103b)에 고유 식별자 [1,2,4]에 대응되는 청크를 조회한다. 그 중에서 딕셔너리 B(103b)에 존재하지 않는 고유 식별자 [4]에 대응되는 청크를 딕셔너리 A(103a)에게 동기화 요청을 한다. ⑤ 딕셔너리 A(103a)는 딕셔너리 B(103b)의 동기화 요청에 대한 응답으로 고유 식별자 [4]에 대응되는 청크 d(124)를 전송한다. ⑥ 딕셔너리 B(103b)는 청크 [a,b,d]를 병합(merge)하여 File2(112)을 재구성 할 수 있다. 이 때에, 딕셔너리 B(103b)는 수신한 고유 식별자 [4]와 청크 d(124)를 매칭하여 자신의 저장공간에 [d-4]를 저장할 수 있다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ⑤ 딕셔너리 A(103a)가 딕셔너리 B(103b)의 동기화 요청에 대한 응답으로 청크 d(124)를 전송하는 단계에서 발생하는 1 단위 청크가 총 네트워크 비용이 된다. 도 3의 경우, 전송 대상인 File2(112)을 구성하고 있는 청크 a(121), 청크 b(122), 청크 d(124) 중에서 청크 d(124)가 딕셔너리 B(103b)에 존재하지 않기 때문에 이를 동기화하는 과정에서만 네트워크 비용이 발생하게 된다. 도 2의 경우에 비해서는 네트워크 비용이 증가하였으나, 여전히 도 1의 경우에 비해서는 네트워크 비용이 감소하였음을 알 수 있다. 이는 딕셔너리 B(103b)에 존재하는 두 개의 청크 a(121), 청크 b(122)를 File2(112)의 전송 과정에서 재활용할 수 있기 때문이다. 즉, 파일을 직접 전송하는 대신 파일을 여러 개의 청크로 나누고 각 청크의 고유 식별자를 이용하여 파일을 전송하는 경우에는 수신 단말에 대응되는 딕셔너리의 청크를 재활용 할 수 있어서 발생하는 네트워크 비용을 감소시킬 수 있는 것이다. 이를 통해서 파일 전송에 소모되는 시간을 줄일 수 있다. 이는 대용량의 파일을 전송하는 경우라면 더욱 효과적일 것이다.
이상으로 도 2 내지 도 3을 통해서 파일을 송신하는 단말에 대응되는 딕셔너리에는 송신하려는 파일을 구성하는 청크가 모두 존재하고, 파일을 수신하는 단말에 대응되는 딕셔너리에는 해당 파일을 구성하는 청크가 모두 있거나, 하나가 없는 경우를 살펴보았다. 그러나, 경우에 따라서는 파일을 송신하는 단말에 대응되는 딕셔너리에도 송신하려는 파일을 구성하는 청크가 일부 또는 전부 없을 수도 있다. 단말에 파일을 생성하거나 수정하는 경우에 실시간으로 딕셔너리에 해당 파일을 구성하는 청크를 등록하게 되면 하나의 파일을 변경하더라도 단말과 딕셔너리 두 곳의 저장 장치에 파일을 저장하기 위한 비용이 발생하기 때문에 비효율적이다. 보통 딕셔너리에 청크를 등록하는 작업은 단말의 파일 생성이나 수정과는 비동기적으로 진행된다. 특히 단말과 딕셔너리의 유휴시간에 진행되는 경우가 많다. 그러므로, 다른 단말로부터 특정 파일의 전송 요청을 받는 때에, 파일을 전송하려는 단말에 대응되는 딕셔너리에 해당 파일을 구성하는 청크가 등록되어 있지 않는 경우가 얼마든지 발생할 수 있다. 또한, 딕셔너리는 파일의 전송을 위해 구성된 것으로서 단말의 저장공간에 비해서는 적은 용량의 저장공간을 갖는 것이 일반적이다. 이런 경우, 딕셔너리에서 액세스(access)가 오래된 청크부터 선입선출(FIFO; First In First Out)로 삭제하게 될 것이다. 이로 인해 특정 파일을 구성하는 청크를 딕셔너리에 등록하였더라도 시간이 지남에 따라 삭제될 수도 있는 것이다. 이런 경우에 발생하는 네트워크 비용을 도 4 내지 도 5를 통해서 살펴보도록 한다.
도 4는 본 발명의 일 실시예에 따른, 파일을 송신하는 단말에 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
이하, 본 발명에서는 각 단말이 가진 파일의 청크와 청크의 고유 식별자를 모두 매칭하여 저장하고 있는 공간을 라이브러리(library)라고 한다. 라이브러리는 모든 청크에 대한 정보를 저장하고, 새로운 청크가 발생하면 해당 청크의 고유 식별자를 생성하고 관리하는 역할을 한다. 이를 통해서 청크의 고유 식별자가 전역적으로 고유할 수 있도록 관리한다. 즉 단말에는 그에 대응되는 딕셔너리가 있다면, 서버(10)에는 그에 대응되는 라이브러리(11)가 있는 것이다. 라이브러리(11)는 딕셔너리와 유사하지만 딕셔너리보다는 더 큰 개념이라고 보면 충분하다.
도 4를 참고하면, 딕셔너리 A(103a)와 라이브러리(11) 사이에 네트워크 비용이 발생하게 된다. 즉, ① 단말 B(101b)의 File3(113) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 File3(113)을 구성하고 있는 청크 [a,b,e]의 고유 식별자를 딕셔너리 A(103a)에서 조회한다. ③ 이 때 딕셔너리 A(103a)에는 등록되어 있지 않은 청크 e(125)의 고유 식별자를 확인하기 위해 딕셔너리 A(103a)는 라이브러리(11)에 청크 e(125)의 고유 식별자를 요청한다. ④ 그에 대한 응답으로 라이브러리(11)는 청크 e(125)의 고유 식별자 [5]를 전송한다. 이 때에, 딕셔너리 A(103a)는 수신한 고유 식별자 [5]와 청크 e(125)를 매칭하여 자신의 저장공간에 저장할 수 있다. ⑤ 단말 A(101a)는 고유 식별자 [1,2,5]을 단말 B(101b)에 전송한다. ⑥ 단말 A(101a)로부터 고유 식별자 [1,2,5]을 수신한 단말 B(101b)는 딕셔너리 B(103b)에 고유 식별자 [1,2,5]에 대응되는 청크를 조회한다. 이를 통해, 딕셔너리 B(103b)는 청크 [a,b,e]를 병합(merge)하여 File3(113)을 재구성 할 수 있다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ③ 딕셔너리 A(103a)가 라이브러리(11)에 청크 e(125)의 고유 식별자를 조회하기 위해 청크 e(125)를 라이브러리(11)에 송신하는 단계에서 발생하는 1 단위 청크가 총 네트워크 비용이 된다. 도 4의 경우, 전송 대상인 File3(113)을 구성하고 있는 청크 a(121), 청크 b(122), 청크 e(125)를 딕셔너리 B(103b)가 모두 가지고 있기 때문에 그 외의 추가적인 네트워크 비용이 발생하지는 않는다. 도 2의 경우에 비해서는 네트워크 비용이 증가하였으나, 여전히 도 1의 경우에 비해서는 네트워크 비용이 감소하였음을 알 수 있다. 이는 딕셔너리 B(103b)에 존재하는 세 개의 청크 a(121), 청크 b(122), 청크 e(125)를 File3(113)의 전송 과정에서 재활용할 수 있기 때문이다. 대신 딕셔너리 A(103a)에 새로운 청크 e(125)를 등록하는 과정에서 고유 식별자를 조회하기 위한 네트워크 비용이 발생하게 된다. 만약 파일을 송신하는 단말뿐만 아니라, 파일을 수신하는 단말에 대응되는 딕셔너리도 전송 대상이 되는 파일을 구성하는 청크 중에서 하나의 청크를 가지고 있지 않은 경우라면 발생하는 네트워크 비용이 어떻게 되는지 도 5을 통해서 살펴보도록 한다.
도 5는 본 발명의 일 실시예에 따른, 파일을 송신하는 단말 및 수신하는 단말에 대응되는 각각의 딕셔너리에 하나의 청크가 존재하지 않는 경우의 데이터 전송 방법을 설명하기 위한 도면이다.
도 5를 참고하면, 딕셔너리 A(103a)와 라이브러리(11) 사이에, 딕셔너리 A(103a)와 딕셔너리 B(103b) 사이에 네트워크 비용이 발생하게 된다. 즉, ① 단말 B(101b)의 File4(114) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 File4(114)을 구성하고 있는 청크 [a,b,f]의 고유 식별자를 딕셔너리 A(103a)에서 조회한다. ③ 이 때 딕셔너리 A(103a)에는 등록되어 있지 않은 청크 [f]의 고유 식별자를 확인하기 위해 딕셔너리 A(103a)는 라이브러리(11)에 청크 [f]의 고유 식별자를 요청한다. ④ 그에 대한 응답으로 라이브러리(11)는 청크 [f]의 고유 식별자 [6]를 전송한다. 이 때에, 딕셔너리 A(103a)는 수신한 고유 식별자 [6]과 청크 [f]를 매칭하여 자신의 저장공간에 [f-6]을 저장할 수 있다. ⑤ 단말 A(101a)는 고유 식별자 [1,2,6]을 단말 B(101b)에 전송한다. ⑥ 단말 A(101a)로부터 고유 식별자 [1,2,6]을 수신한 단말 B(101b)는 딕셔너리 B(103b)에 고유 식별자 [1,2,6]에 대응되는 청크를 조회한다. 그 중에서 딕셔너리 B(103b)에 존재하지 않는 고유 식별자 [6]에 대응되는 청크를 딕셔너리 A(103a)에게 동기화 요청을 한다. ⑦ 딕셔너리 A(103a)는 딕셔너리 B(103b)의 동기화 요청에 대한 응답으로 고유 식별자 [6]에 대응되는 청크 [f]를 전송한다. ⑥ 딕셔너리 B(103b)는 청크 [a,b,f]를 병합(merge)하여 File4(114)을 재구성 할 수 있다. 이 때에, 딕셔너리 B(103b)는 수신한 고유 식별자 [6]과 청크 [f]를 매칭하여 자신의 저장공간에 [f-6]을 저장할 수 있다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ③ 딕셔너리 A(103a)가 라이브러리(11)에 청크 [f]의 고유 식별자를 조회하기 위해 청크 [f]를 라이브러리(11)에 송신하는 단계에서 발생하는 1 단위 청크 및 ⑦ 딕셔너리 A(103a)가 딕셔너리 B(103b)의 동기화 요청에 대한 응답으로 청크 [f]를 전송하는 단계에서 1 단위 청크가 네트워크 비용으로 발생한다. 즉, 총 2 단위 청크만큼의 네트워크 비용이 발생한다. 도 5의 경우, 전송 대상인 File4(114)를 구성하고 있는 청크 a(121), 청크 b(122), 청크 [f] 중에서 청크 [f]을 딕셔너리 A(103a)와 딕셔너리 B(103b)가 모두 가지고 있지 않기 때문에 총 2 단위 청크만큼의 네트워크 비용이 발생했다. 결과적으로 살펴보면 단말 B(101b)에 대응되는 딕셔너리 B(103b)에 존재하지 않는 청크 [f] 하나를 전송 받기 위해, 그 2배 되는 네트워크 비용을 발생시킨 것이다.
만약, 특정 파일을 구성하는 3개의 청크가 송신 단말 및 수신 단말에 대응되는 각각의 딕셔너리에 모두 등록되지 않은 경우라면, 이들 청크를 라이브러리(11)에서 조회하는 과정에서 발생하는 3 단위 청크의 네트워크 비용부터, 전송 파일을 구성하는 청크의 고유 식별자를 수신한 단말에 대응되는 딕셔너리에서 해당 청크의 동기화 과정에서 발생되는 3 단위 청크의 네트워크 비용까지 총 6 단위 청크의 네트워크 비용이 발생하게 된다. 물론 이렇게 파일의 청크를 딕셔너리에 한번 등록하는 과정에서 발생한 네트워크 비용은 해당 청크가 삭제되지 않는 한 추후 동일한 파일을 다시 전송하는 때에는 발생하지 않을 네트워크 비용이지만, 단 1회의 전송만을 놓고 본다면, 파일을 직접 전송하는 도 1의 경우의 네트워크 비용 3 단위 청크에 비해 2배의 네트워크 비용이 발생하게 되어 오히려 비효율적이다. 본 발명의 목적이 파일의 전송과정에서 발생하는 네트워크 비용을 최소화하는데 있는 만큼 이를 해결하기 위한 방법을 도 6 내지 도 7을 통해서 살펴보기로 한다.
도 6은 본 발명의 일 실시예에 따른, 파일을 송신하는 단말에 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우에 네트워크 비용을 감소시키기 위한 방법을 설명하기 위한 도면이다.
도 6을 참고하면, 딕셔너리 A(103a)와 딕셔너리 B(103b) 사이에 동기화 과정에서 네트워크 비용이 발생하게 된다. 즉, ① 단말 B(101b)의 File3(113) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 File3(113)을 구성하고 있는 청크 [a,b,e]의 고유 식별자를 딕셔너리 A(103a)에서 조회한다. ③ 이 때 딕셔너리 A(103a)에는 등록되어 있지 않은 청크 e(125)의 고유 식별자를 확인하기 위해 라이브러리(11)에 청크 e(125)의 고유 식별자를 요청하는 대신, 딕셔너리 A(103a)가 청크 e(125)의 임시 고유 식별자 [A5]를 생성한다. 이 때에, 딕셔너리 A(103a)는 임시로 생성한 고유 식별자 [A5]와 청크 e(125)를 매칭하여 자신의 저장공간에 [e-A5]를 저장할 수 있다. ④ 단말 A(101a)는 고유 식별자 [1,2,A5]을 단말 B(101b)에 전송한다. ⑤ 단말 A(101a)로부터 고유 식별자 [1,2,A5]을 수신한 단말 B(101b)는 딕셔너리 B(103b)에 고유 식별자 [1,2,A5]에 대응되는 청크를 조회한다. 그 중에서 딕셔너리 B(103b)에 존재하지 않는 임시 고유 식별자 [A5]에 대응되는 청크를 딕셔너리 A(103a)에게 동기화 요청을 한다. ⑥ 딕셔너리 A(103a)는 딕셔너리 B(103b)의 동기화 요청에 대한 응답으로 임시 고유 식별자 [A5]에 대응되는 청크 e(125a)를 전송한다. ⑥ 딕셔너리 B(103b)는 청크 [a,b,e]를 병합(merge)하여 File3(113)을 재구성 할 수 있다. 다만, 딕셔너리 B(103b)는 수신한 임시 고유 식별자 [A5]에 대응되는 청크 e(125a)가 청크e(125)로 이미 저장되어 있으므로 이를 매칭하여 자신의 저장공간에 저장할 필요는 없다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ③ 딕셔너리 A(103a)가 청크 e(125)의 임시 고유 식별자를 생성하는 단계는 발생하는 네트워크 비용이 0 이다. 반면에, ⑥ 딕셔너리 A(103a)가 딕셔너리 B(103b)의 동기화 요청에 응답하여 청크 e(125a)를 전송하는 단계에서 발생하는 1 단위 청크가 총 네트워크 비용이 된다. 도 4의 경우와 비교해면, 딕셔너리 A(103a)와 라이브러리(11) 사이에 발생하던 네트워크 비용은 감소하였다. 그러나, 임시 고유 식별자 생성으로 인해 딕셔너리 B(103b)가 이미 가지고 있는 청크임에도 고유 식별자가 [5]와 [A5]로 그 값이 달라 이를 딕셔너리 A(103a)에 동기화 요청을 하는 과정에서 불필요하게 1 단위 청크의 네트워크 비용이 발생하게 되었다. 결과적으로 도 4의 경우와 도 6의 경우 모두 총 네트워크 비용은 1 단위 청크로 동일하다. 이처럼, 임시 고유 식별자를 사용하게 되면 딕셔너리와 라이브러리 사이에 발생하는 네트워크 비용이 감소하는 대신에, 딕셔너리와 딕셔너리 사이에 동기화 과정에서 네트워크 비용이 발생할 수 있다. 그러나 파일을 수신하는 단말에 대응되는 딕셔너리에 이미 해당 청크가 있는 경우에만 불필요한 네트워크 비용이 발생하는 것일 뿐, 어차피 해당 청크를 가지고 있지 않은 경우에는 동기화 과정이 필요할 수 밖에 없으므로, 결과적으로는 네트워크 비용을 감소시킬 수 있는 효과가 있다. 이에 대해서는 도 5와 도 7을 비교하면서 살펴보도록 한다.
도 7은 본 발명의 일 실시예에 따른, 파일을 송신하는 단말 및 수신하는 단말 각각 대응되는 딕셔너리에 하나의 청크가 존재하지 않는 경우에 네트워크 비용을 감소시키기 위한 방법을 설명하기 위한 도면이다.
도 7을 참고하면, 딕셔너리 A(103a)와 딕셔너리 B(103b) 사이에 동기화 과정에서 네트워크 비용이 발생하게 된다. 즉, ① 단말 B(101b)의 File4(114) 전송 요청에 대한 응답으로, ② 단말 A(101a)가 File4(114)를 구성하고 있는 청크 [a,b,f]의 고유 식별자를 딕셔너리 A(103a)에서 조회한다. ③ 이 때 딕셔너리 A(103a)에는 등록되어 있지 않은 청크 [f]의 고유 식별자를 확인하기 위해 라이브러리(11)에 청크 [f]의 고유 식별자를 요청하는 대신, 딕셔너리 A(103a)가 청크 [f]의 임시 고유 식별자 [A6]를 생성한다. 이 때에, 딕셔너리 A(103a)는 임시로 생성한 고유 식별자 [A6]와 청크 [f]를 매칭하여 자신의 저장공간에 [f-A6]를 저장할 수 있다. ④ 단말 A(101a)는 고유 식별자 [1,2,A6]을 단말 B(101b)에 전송한다. ⑤ 단말 A(101a)로부터 File4(114)의 고유 식별자 [1,2,A6]을 수신한 단말 B(101b)는 딕셔너리 B(103b)에 고유 식별자 [1,2,A6]에 대응되는 청크를 조회한다. 그 중에서 딕셔너리 B(103b)에 존재하지 않는 임시 고유 식별자 [A6]에 대응되는 청크를 딕셔너리 A(103a)에게 동기화 요청을 한다. ⑥ 딕셔너리 A(103a)는 딕셔너리 B(103b)의 동기화 요청에 대한 응답으로 임시 고유 식별자 [A6]에 대응되는 청크 f(126a)를 전송한다. ⑥ 딕셔너리 B(103b)는 청크 [a,b,f]를 병합(merge)하여 File4(114)을 재구성 할 수 있다. 이 때에, 딕셔너리 B(103b)는 수신한 임시 고유 식별자 [A6]과 청크 f(126a)를 매칭하여 자신의 저장공간에 [f-A6]을 저장할 수 있다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ③ 딕셔너리 A(103a)가 청크 [f]의 임시 고유 식별자를 생성하는 단계는 발생하는 네트워크 비용이 0 이다. 반면에, ⑥ 딕셔너리 A(103a)가 딕셔너리 B(103b)의 동기화 요청에 응답하여 청크 f(126a)를 전송하는 단계에서 발생하는 1 단위 청크가 총 네트워크 비용이 된다. 도 5의 경우와 비교해면, 딕셔너리 A(103a)와 라이브러리(11) 사이에 발생하던 네트워크 비용은 감소하였다. 그리고, 딕셔너리 A(103a)와 딕셔너리 B(103b) 사이에 청크 f(126a)를 동기화 하는 과정에서 발생하는 네트워크 비용은 1로 동일하다. 결과적으로 도 5의 경우와 도 7의 경우 총 네트워크 비용은 2 단위 청크에서 1 단위 청크로 감소하였다. 이 경우에는 도 4와 도 6의 경우와는 달리, 발생하는 네트워크 비용을 감소시키는 효과가 있다. 그러므로, 도 4 내지 도 7의 경우를 종합하면 딕셔너리에서 임시 고유 식별자를 생성하여 파일을 전송하는 것이 라이브러리를 이용하여 파일을 전송하는 것보다 발생하는 네트워크 비용이 같거나 작은 것을 알 수 있다.
앞서 가정한 것처럼 청크의 고유 식별자는 다른 모든 청크의 고유 식별자와 비교하여 고유한 값을 가져야 한다. 이처럼 전역적으로 고유한 값을 관리하기 위해서는 청크의 고유 식별자는 원칙적으로 라이브러리(11)에서 관리하여야 한다. 물론, 청크의 고유 식별자를 청크의 해시 값을 이용하여 생성하면 어느 정도 청크에 종속적인 고유 식별자를 생성할 수 있다. 그러나, 해시 충돌(hash collision)의 문제가 있기 때문에 청크의 해시 값만으로는 유일한 고유 식별자를 생성할 수 없고 별도로 라이브러리(11)의 관리가 필요하다. 즉 고유 식별자는 ⅰ) 동일한 청크라면 전역적으로 동일한 값의 고유 식별자를 가져야 하고, ⅱ) 서로 다른 청크라면 전역적으로 서로 다른 값의 고유 식별자를 가져야 한다. 청크의 해시 값만으로 고유 식별자를 생성하게 되면 ⅱ) 에서 언급한 조건을 만족하지 못하는 경우가 발생하여, 서로 다른 청크라도 같은 값의 고유 식별자를 가질 가능성이 생긴다. 이러한 해시 충돌을 해결하기 위해 모든 청크와 청크의 고유 식별자를 관리하는 라이브러리(11)에서 고유 식별자의 충돌 여부, 즉 중복 여부를 확인해야 한다. 다만, 딕셔너리에서 임시적으로 고유 식별자를 생성하게 되면 ⅱ) 에서 언급한 문제를 해결할 수 있다. 예를 들면, 청크의 해시 값에 딕셔너리의 식별자를 결합하여 임시 고유 식별자를 생성하게 되면 최소한 ⅱ) 에서 언급한 문제는 발생하지 않는다.
도 6 이나 도 7에서는 딕셔너리 A(103a)가 청크 e(125), 청크 f의 임시 고유 식별자로 딕셔너리 A(103a)의 식별자 A와 결합한 고유 식별자 [A5], [A6]를 생성했다. 이렇게 임시 고유 식별자를 생성하게 되면, 최소한 다른 청크의 고유 식별자와 중복될 염려는 없다. 대신, ⅰ) 에서 언급한 문제가 발생할 우려가 있다. 실제로 도 6의 예를 보면 동일한 청크 e(125)에 대한 고유 식별자가 딕셔너리 A(103a)에서는 [A5]이나, 딕셔너리 B(103b)에서는 [5]로 서로 다른 값을 가지게 된다. 이로 인해 딕셔너리 B(103b)가 이미 가지고 있는 청크임에도, 고유 식별자가 달라, 가지고 있지 않은 청크로 보고 딕셔너리 A(103a)에 동기화를 요청하는 불필요한 ⑤ 단계를 수행하여 네트워크 비용을 증가시키기도 하였다. 다만 이렇게 증가한 네트워크 비용은, 딕셔너리 A(103a)가 라이브러리(11)에 청크 e(125)의 고유 식별자를 조회하기 위한 요청을 생략함으로써 서로 상쇄된다. 그러므로 도 6의 경우라 하더라도, 파일을 전송하는 과정에서 발생하는 전체적인 네트워크 비용은 동일하므로 임시 고유 식별자를 사용하는 방법은 여전히 유효하다고 볼 수 있다.
동일한 청크 e(125)에 대한 고유 식별자가 딕셔너리 A(103a)에는 [A5]로, 딕셔너리 B(103b)와 라이브러리(11)에는 [5]로 서로 다른 값을 가지게 되었으므로 이를 보정하기 위한 추가적인 작업이 필요하다. 이는 결국 임시 고유 식별자 [A5]를 [5]로 갱신하는 작업이 될 것이며 이 과정에서 라이브러리(11)에 [A5]를 대신할 정식 고유 식별자를 조회하여야 한다. 이 때에는 딕셔너리 A(103a)와 라이브러리(11) 사이에 네트워크 비용이 추가적으로 발생할 수 있다. 다만 이러한 추가적인 작업은 파일의 전송이 모두 완료된 후 유휴시간에 진행하면 되므로 문제될 것이 없다. 이하 본 발명에서는 라이브러리(11)에서 생성한 고유 식별자를 정식 고유 식별자 또는 글로벌 고유 식별자(GUID; Global Unique ID)라고 한다. 반면에 딕셔너리에서 생성한 임시적인 고유 식별자를 임시 고유 식별자 또는 로컬 고유 식별자(LUID; Local Unique ID)라고 한다. 다른 특별한 언급이 없다면 그냥 "고유 식별자"는 정식 고유 식별자 또는 글로벌 고유 식별자를 지칭하는 것으로 본다. 앞서 언급한 것처럼 도 6 이나 도 7의 임시 고유 식별자 [A5], [A6]를 정식 고유 식별자로 갱신하기 위한 작업은 파일의 전송과는 별도의 작업으로 유휴시간에 진행될 수 있다. 이에 대해서 도 8 내지 도 9를 통해서 살펴보도록 한다.
도 8은 본 발명의 일 실시예에 따른, 임시 고유 식별자가 라이브러리에 이미 등록되어 있는 경우에 정식 고유 식별자를 조회하고 갱신하는 방법을 설명하기 위한 도면이다.
도 8을 참고하면, 도 6 내지 도 7에서의 파일 전송으로 딕셔너리 A(103a)에는 임시 고유 식별자 [A5]와 청크 e(125a)가 [e-A5]로 저장되어 있고, 임시 고유 식별자 [A6]와 청크 f(126a)가 [f-A6]로 저장되어 있다. ① 딕셔너리 A(103a)는 임시 고유 식별자 [A5]의 정식 고유 식별자를 조회 하기 위해, 라이브러리(11)에 청크 e(125a)의 고유 식별자를 요청하고, ② 그에 대한 응답으로 라이브러리(11)는 청크 e(125)의 고유 식별자 [5]를 딕셔너리 A(103a)에 전송한다. ③ 딕셔너리 A(103a)는 임시 고유 식별자 [A5]를 수신한 정식 고유 식별자 [5]로 갱신한다. 이를 통해서, 청크 e(125)는 전역적으로 고유 식별자 [5]를 가지게 된다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ① 딕셔너리 A(103a)가 청크 e(125a)의 고유 식별자를 라이브러리(11)에 조회하는 과정에서 1 단위 청크만큼의 네트워크 비용이 발생한다. 이는 원칙적으로 도 4의 단계 ③에서 발생해야할 네트워크 비용인데, 이를 임시 고유 식별자를 이용하여 유휴시간에 발생하도록 조정한 것이다. 이를 통해서 파일의 전송과정에서 발생하는 네트워크 비용을 최소화하여 대용량의 파일을 보내더라도 소모되는 시간을 줄일 수 있다.
도 9는 본 발명의 일 실시예에 따른, 임시 고유 식별자가 라이브러리에 등록되어 있지 않는 경우에 정식 고유 식별자를 생성하고 갱신하는 방법을 설명하기 위한 도면이다.
도 9을 참고하면, 도 6 내지 도 7에서의 파일 전송으로 딕셔너리 A(103a)에는 임시 고유 식별자 [A5]와 청크 e(125a)가 [e-A5]로 저장되어 있고, 임시 고유 식별자 [A6]와 청크 f(126a)가 [f-A6]로 저장되어 있다. ① 딕셔너리 A(103a)는 임시 고유 식별자 [A6]의 정식 고유 식별자를 조회 하기 위해, 라이브러리(11)에 청크 f(126a)의 고유 식별자를 요청한다. ② 라이브러리(11)는 청크 [f]가 등록되어 있지 않으므로 청크 [f]의 고유 식별자 [6]을 생성하고 충돌 여부를 확인한 뒤 [f-6]을 라이브러리(11)에 저장한다. ③ 라이브러리(11)는 딕셔너리 A(103a)의 요청에 대한 응답으로 청크 [f]의 고유 식별자 [6]을 전송한다. ④ 딕셔너리 A(103a)는 임시 고유 식별자 [A6]를 수신한 정식 고유 식별자 [6]로 갱신한다. 이를 통해서, 청크 [f]는 전역적으로 고유 식별자 [6]을 가지게 된다.
이 과정에서 발생하는 네트워크 비용을 계산해보면, ① 딕셔너리 A(103a)가 청크 f(126a)의 고유 식별자를 라이브러리(11)에 조회하는 과정에서 1 단위 청크만큼의 네트워크 비용이 발생한다. 이는 원칙적으로 도 5의 단계 ③에서 발생해야할 네트워크 비용인데, 이를 임시 고유 식별자를 이용하여 유휴시간에 발생하도록 조정한 것이다. 도 6 내지 도 9를 통해서 임시 고유 식별자를 이용하여, 파일 전송시에 발생할 네트워크 비용을 유휴시간에 발생하도록 조정하는 과정을 살펴보았다. 또한 도 1 내지 도 5를 통해서 고유 식별자를 이용하여 파일을 전송하는 과정을 살펴보았다. 이를 표를 통해서 정리해보면 다음과 같다.
구분 전송시 네트워크 비용 유휴시 네트워크 비용
도 1 [a, b, c] 3 없음 0
도 2 없음 0 없음 0
도 3 [d] 1 없음 0
도 4 [e] 1 없음 0
도 5 [f] / [f] 2 없음 0
도 6, 도 8 [e] 1 [e] 1
도 7, 도 9 [f] 1 [f] 1
도 1의 파일을 직접 전송하는 경우보다, 도 2 내지 도 9의 청크의 고유 식별자를 이용하여 파일을 전송하는 경우가 파일 전송시 발생하는 네트워크 비용을 감소시킬 수 있다. 또한, 도 4 내지 도 5의 청크의 고유 식별자를 라이브러리에서 조회해서 전송하는 경우보다, 도 6 내지 도 9의 임시 고유 식별자를 생성하여 파일을 전송하고 추후 유휴시에 임시 고유 식별자를 정식 고유 식별자로 갱신하는 경우가 파일 전송시에 발생하는 네트워크 비용을 감소시킬 수 있다. 즉, 파일을 직접 전송하는 것보다 파일을 여러 개의 최적화된 청크로 나누고 각 청크의 고유 식별자를 전송하여, 딕셔너리 간의 동기화를 통해서 필요한 청크만을 전송하는 것이 네트워크 비용을 최소화할 수 있다. 이는 대용량의 파일을 전송하거나 동일한 파일을 여러 번 전송해야하는 경우에 더욱 효과적일 수 있다. 또한, 원칙적으로 라이브러리에서 파일의 고유 식별자를 관리하되, 파일 전송시에는 필요에 따라 임시 고유 식별자를 이용함으로써, 파일 전송시에 발생할 수 있는 네트워크 비용을 유휴시간에 발생하도록 조정할 수 있다. 이를 통해서 네트워크 자원을 효율적으로 사용할 수 있다. 지금까지 도 1 내지 도 9를 통해서 살펴본 데이터 전송 시스템을 도 10 내지 도 13의 순서도를 통해서 정리하도록 한다.
도 10은 본 발명의 일 실시예에 따른, 데이터 전송 방법을 설명하기 위한 순서도이다. 특히, 도 2 내지 도 3의 경우를 설명하기 위한 순서도이다.
도 10을 참고하면, 단말 A(101a)는 다른 단말로부터 파일 요청을 수신하여(S210), 요청된 파일을 여러 개의 청크로 변환한다(S220). 단말에 파일 대신 청크의 고유 식별자를 전송하기 위해 딕셔너리 A(103a)에 분할된 청크가 있는지 여부를 확인하고(S221), 있는 경우에는 해당 청크의 고유 식별자를 조회한다(S225). 만약 딕셔너리 A(103a)에 분할된 청크가 없는 경우에는 해당 청크를 등록하고(S223), 등록된 청크의 고유 식별자를 조회한다(S225). 그리고, 조회한 청크의 고유 식별자를 단말 B(101b)에 전송한다(S230).
단말 B(101b)는 단말 A(101a)로부터 청크의 고유 식별자 목록을 수신하고(S240), 수신한 청크의 고유 식별자가 딕셔너리 B(103b)에 있는지 여부를 확인한다(S241). 만약 있는 경우에는 해당 고유 식별자에 대응되는 청크를 조회하고(S245), 없는 경우라면 다른 딕셔너리나 라이브러리에 해당 고유 식별자에 대응되는 청크를 요청한다(S243). 이 과정에서 딕셔너리 B(103b)에 없는 청크의 경우에는 다른 딕셔너리나 라이브러리로부터 수신한 청크와 고유 식별자를 매칭하여 딕셔너리 B(103b)에 추가적으로 저장할 수 있다. 단말 B(101b)는 딕셔너리 B(103b)에서 조회한 청크를 병합(merge)하여 원래의 파일로 변환하고(S250), 이로써 파일을 단말 A(101a)에서 단말 B(101b)로 송수신하기 위한 모든 과정이 완료된다(S260).
도 10에서는, S220 단계와 S221 단계 및 S245 단계와 S250 단계 사이에 청크가 전송되나 이는 단말과 단말에 대응되는 딕셔너리 사이의 데이터 전송이므로 발생하는 네트워크 비용은 없다. 다만, 청크를 등록하는 S223 단계와 청크를 요청하는 S243 단계에서 네트워크 비용이 발생할 수 있다.
도 11은 본 발명의 일 실시예에 따른, 데이터 전송 방법을 설명하기 위한 순서도이다. 특히, 도 4 내지 도 5의 경우를 설명하기 위한 순서도이다.
도 11을 참고하면, 도 10에서 청크를 등록하기 위한 단계(S223)는 다음과 같이 진행될 수 있다. 딕셔너리 A(103a)에 해당 청크가 존재하지 않으면 이를 등록해야하는데 이 때에는 해당 청크의 고유 식별자를 알아야 이를 매칭해서 저장할 수 있다. 그러기 위해서 해당 청크의 고유 식별자를 라이브러리(11)에 요청한다(S310). 라이브러리(11)는 요청받은 청크가 라이브러리(11)에 존재하는지 여부를 확인하고(S311), 있는 경우에는 해당 청크의 고유 식별자를 조회하여 딕셔너리 A(103a)에 전송한다(S317). 만약, 해당 청크가 라이브러리(11)에 존재하지 않는 경우라면, 라이브러리(11)에도 해당 청크를 등록해야 하므로 해당 청크의 정식 고유 식별자를 생성하고(S313), 해당 청크와 고유 식별자를 매칭하여 저장한다(S315). 라이브러리(11)로부터 청크의 고유 식별자를 수신한 딕셔너리 A(103a)는 수신한 고유 식별자와 청크를 매칭하여 딕셔너리에 저장하고(S319), 이 때의 고유 식별자를 조회하여 단말 A(101a)에 전송한다(S225).
도 11을 참고하면, 도 10에서 청크를 요청하기 위한 단계(S243)은 다음과 같이 진행될 수 있다. 딕셔너리 B(103b)에 해당 고유 식별자에 대응되는 청크가 없는 경우에는 다른 딕셔너리나 라이브러리(11)에 청크를 요청하여야 한다(S320). 라이브러리(11)에 청크를 요청하는 경우, 라이브러리(11)는 해당 고유 식별자에 대응되는 청크를 검색하여 딕셔너리 B(103b)에 전송한다(S327). 딕셔너리 B(103b)는 수신한 청크와 고유 식별자를 매칭하여 저장하고(S329), 이 때의 청크를 조회하여 단말 B(101b)에 전송한다(S245). 딕셔너리 B(103b)에 해당 고유 식별자에 대응되는 청크가 없는 경우에는 다른 딕셔너리 A(103a)나 라이브러리(11)에 청크를 요청해야 한다. 앞서 설명한 것처럼 딕셔너리 A(103a)의 경우에는 S319 단계에서, 라이브러리(11)의 경우에는 S315 단계에서 각각 청크와 청크의 고유 식별자를 매칭하여 저장하였기 때문이다. 도 3의 ④ 단계와 도 5의 ⑥ 단계는 딕셔너리 A(103a)에 청크를 요청하는 경우를 예로 들었고, 도 11에서는 라이브러리(11)에 청크를 요청하는 경우를 예로 들었다. 어느 곳에 청크를 요청하여도 무방하나, 라이브러리(11)에 요청이 집중되는 것을 예방하기 위해서는 송신 단말에 대응되는 딕셔너리에 청크를 요청하는 것이 바람직할 것이다.
도 11에서는, S310 단계와 S311 단계 및 S327 단계와 S329 단계 사이에 청크가 전송되고 이로 인해 네트워크 비용이 발생할 수 있다. 이상으로 도 11에서는 파일을 전송하는 과정에서 라이브러리(11)의 정식 고유 식별자를 이용하는 경우를 살펴보았으나, 앞서 설명한 것처럼 라이브러리(11) 의 정식 고유 식별자를 이용하는 것보다 임시 고유 식별자를 이용하는 경우에 파일 전송시 발생하는 네트워크 비용을 더욱 감소시킬 수 있다. 이에 대해서 도 12a 내지 도 12b를 통해서 살펴보도록 한다.
도 12a은 본 발명의 일 실시예에 따른, 데이터 전송 방법을 설명하기 위한 순서도이다. 특히, 도 6 내지 도 7의 경우를 설명하기 위한 순서도이다.
도 12a를 참고하면, 도 10에서 청크를 요청하기 위한 단계(S243)은 다음과 같이 진행될 수 있다. 딕셔너리 A(103a)에 해당 청크가 존재하지 않으면 이를 등록해야하는데 이 때에는 해당 청크의 고유 식별자를 알아야 이를 매칭해서 저장할 수 있다. 이 때 라이브러리(11)에 해당 청크의 고유 식별자를 조회하는 것이 아니라(S310), 딕셔너리 A(103a)에서 임시 고유 식별자를 생성할 수 있다(S330). 이 때 생성되는 임시 고유 식별자는 청크의 해시 값을 기반으로 딕셔너리 A(103a)의 식별자를 결합하여 생성할 수 있다. 딕셔너리 A(103a)는 생성된 임시 고유 식별자와 청크를 매칭하여 저장하고(S339), 이 때의 고유 식별자를 조회하여 단말 A(101a)에 전송한다(S225).
도 12a을 참고하면, 도 10에서 청크를 요청하기 위한 단계(S243)은 다음과 같이 진행될 수 있다. 딕셔너리 B(103b)에 해당 고유 식별자에 대응되는 청크가 없는 경우에는 다른 딕셔너리에 청크를 요청하여야 한다(S340). 이 경우에는 도 11과는 다르게 라이브러리(11)에는 청크를 요청할 수 없다. 딕셔너리 A(103a)에서 생성한 임시 고유 식별자이기 때문이다. 임시 고유 식별자는 딕셔너리의 식별자와 청크의 해시 값을 기반으로 생성될 수 있기 때문에, 임시 고유 식별자를 분석하여 어느 딕셔너리에 청크를 요청하면 되는지 알 수 있다. 딕셔너리 A(103a)에 청크를 요청하는 경우(S340), 딕셔너리 A(103a)는 해당 임시 고유 식별자에 대응되는 청크를 검색하여 딕셔너리 B(103b)에 전송한다(S347). 딕셔너리 B(103b)는 수신한 청크와 임시 고유 식별자를 매칭하여 저장하고(S349), 이 때의 청크를 조회하여 단말 B(101b)에 전송한다(S245).
도 12a에서는, S347 단계와 S349 단계 사이에 청크가 전송되고 이로 인해 네트워크 비용이 발생할 수 있다. 지금까지 살펴본 것처럼 도 12a에서 임시 고유 식별자를 사용하여 파일 전송시 네트워크 비용을 감소시키는 대신, 이 때 감소한 네트워크 비용은 추후 유휴시에 발생하게 된다. 이에 대해서는 도 12b에서 살펴보도록 한다.
도 12b는 본 발명의 일 실시예에 따른, 데이터 전송 방법을 설명하기 위한 순서도이다. 특히, 도 8 내지 도 9의 경우를 설명하기 위한 순서도이다.
도 12b를 참고하면, 딕셔너리 A(103a)는 추후 유후시간에 임시 고유 식별자를 정식 고유 식별자로 갱신하기 위하여 라이브러리(11)에 청크의 정식 고유 식별자를 요청한다(S350). 라이브러리(11)는 요청받은 청크가 라이브러리(11)에 존재하는지 여부를 확인하고(S351), 있는 경우에는 해당 청크의 고유 식별자를 조회하여 딕셔너리 A(103a)에 전송한다(S357). 만약, 해당 청크가 라이브러리(11)에 존재하지 않는 경우라면, 라이브러리(11)에도 해당 청크를 등록해야 하므로 해당 청크의 정식 고유 식별자를 생성하고(S353), 해당 청크와 고유 식별자를 매칭하여 저장한다(S355). 라이브러리(11)로부터 청크의 고유 식별자를 수신한 딕셔너리 A(103a)는 임시 고유 식별자를 수신한 정식 고유 식별자로 갱신한다. 도 12a에서는 S347 단계와 S349 단계, 도 12b에서는 S350 단계와 S351 단계 사이에 청크가 전송되고 이로 인해 네트워크 비용이 발생할 수 있다. 다만, 도 12b의 S350 단계와 S351 단계 사이에서 발생하는 네트워크 비용은 유휴시간에 발생하는 것이므로, 파일 전송시에는 네트워크 비용을 감소시킬 수 있는 것이다.
도 13은 본 발명의 일 실시예에 따른, 단말과 서버 사이에 데이터 전송 방법을 설명하기 위한 순서도이다.
지금까지는 단말 A(101a)와 단말 B(101b) 사이의 파일 전송을 기준으로 설명하였으나, 단말 A(101a)와 서버(10) 사이의 파일 전송에도 본 발명의 기술적 특징을 적용할 수 있다. 서버(10)가 대용량 파일의 전송이 잦은 클라우드 스토리지와 같은 경우에는 중복된 데이터를 제거하고 청크의 고유 식별자를 이용하여 파일을 전송하는 것이 더욱 효과적일 수 있다.
도 13을 참고하면, 단말 A(101a)와 서버(10) 사이의 파일 전송은 단말 A(101a)와 단말 B(101b) 사이의 파일 전송과 유사하다. 다만, 이번에는 단말 A(101a)와 서버(10) 사이의 파일 전송이므로 임시 고유 식별자를 이용하는 방법은 이용하지 않는 것이 바람직하다. 즉, 딕셔너리 A(103a)가 청크를 등록하기 위한 단계(S223)는 도 11의 S310 단계 내지 S319 단계와 같이 진행되면 충분하다.
도 14 내지 도 15는 본 발명의 일 실시예에 따른, 데이터 전송 시스템의 블록도이다.
도 14는 단말과 단말 사이의 파일 전송을 구현하기 위한 시스템의 블록도이다. 고유 식별자 송수신부(410)는 다른 단말과 전송하려는 파일을 구성하고 있는 청크의 고유 식별자를 주고 받을 수 있다. 파일-청크 변환부(420)는 전송 요청 받은 파일을 여러 개의 청크로 나누거나, 딕셔너리를 조회하여 얻은 청크를 병합(merge)하여 원래의 파일로 재구성할 수 있다. 청크-고유 식별자 조회부(430)은 청크를 이용하여 딕셔너리에서 청크의 고유 식별자를 조회하거나, 다른 단말로부터 수신한 고유 식별자 목록을 이용하여 딕셔너리에서 청크의 목록을 조회할 수 있다. 각 단말은 고유 식별자 송수신부(410), 파일-청크 변환부(420), 청크-고유 식별자 조회부(430)을 통해서 다른 단말과 파일을 주고 받을 수 있다.
청크-고유 식별자 조회부(440)은 단말로부터 수신한 청크를 이용하여 고유 식별자를 조회하거나 반대로 고유 식별자를 이용하여 청크를 조회할 수 있다. 청크-고유 식별자 저장부(450)은 필요에 따라 딕셔너리에 저장되어 있지 않은 청크와 고유 식별자를 매칭하여 저장할 수 있다. 이 때에 딕셔너리 내의 임시 고유 식별자 생성부(470)에서 임시 고유 식별자를 생성하여 이용하거나, 청크 동기화부(460)에서 다른 딕셔너리나 라이브러리(11)와 동기화 과정을 통해 저장해야할 청크와 청크의 고유 식별자를 수신할 수 있다. 또한 임시 공유 식별자 갱신부(490)은 청크 동기화부(460)를 이용하여 라이브러리(11)와의 동기화 과정을 통해 임시 고유 식별자를 정식 고유 식별자로 갱신할 수 있다. 각 딕셔너리는 청크-고유 식별자 조회부(440), 청크-고유 식별자 저장부(450), 청크 동기화부(460), 임시 고유 식별자 생성부(470) 및 임시 고유 식별자 갱신부(490)을 통해서 단말에 청크 및 청크의 고유 식별자를 제공하고 다른 딕셔너리 또는 라이브러리와 청크 및 청크의 고유 식별자를 동기화할 수 있다.
도 15는 단말과 서버 사이의 파일 전송을 구현하기 위한 시스템의 블록도이다. 서버(10)의 블록도 역시 각 단말의 블록도와 유사하다. 다만, 라이브러리(11)의 경우에는 임시 고유 식별자를 생성하는 기능은 불필요하므로 고유 식별자를 생성하고 충돌을 방지하기 위한 정식 고유 식별자 생성부(480)가 딕셔너리와는 차이점을 가진다.
이상으로 단말과 단말 사이 및 단말과 서버 사이의 파일 전송을 위한 데이터 전송 시스템 및 그 방법을 설명하였으나, 여기서의 단말은 반드시 물리적으로 독립된 단말만을 의미하는 것은 아니다. 경우에 따라서는 각 단말은 하나의 기기에서 구동되는 복수의 가상 머신(VM; virtual machine)일 수도 있다. 딕셔너리는 각 가상 머신 위에서 컨텐츠 관리를 위한 라이브러리 형태(lib)로 존재할 수도 있다. 각 단말에 대응되는 딕셔너리와 서버에 대응되는 라이브러리는 즉시 또는 일정 주기로 청크와 청크의 고유 식별자를 동기화한다. 또한, 딕셔너리와 라이브러리는 임시 고유 식별자와 정식 고유 식별자의 매핑 정보를 보관하고 관리하여, 한 딕셔너리에서 다른 딕셔너리로 배포된 임시 고유 식별자의 갱신을 용이하게 수행할 수 있다.
다음의 표2는 5개의 가상 머신에서, 가상 머신당 100개의 파일을 주고 받을 때 소요되는 평균시간을 측정한 것이다. 동일 네트워크 상에서 5개의 가상 머신을 단방향 순환 형태로 연결하고, 각각 1MB, 10MB, 100MB, 1GB 크기의 텍스트 파일을 전송하였다. 이 경우에 소모된 시간을 살펴보면 다음과 같다.
구분 1MB 10MB 100BM 1GB
파일 전송 0.4 0.8 2 32
압축 전송 0.8 1.6 4 92
청크 전송 0.5 0.7 0.8 1.2
표 2에 표시된 소모된 시간은 초(second) 단위의 시간이며, 파일 전송은 파일을 그대로 전송한 경우이고, 압축 전송은 전송하려는 파일을 압축해서 보낸 경우이다. 단 이 때에 소모된 시간은 파일을 압축하고 해제하는 시간까지 포함된 시간이다. 청크 전송은 파일을 여러 개의 청크로 나누고 청크의 고유 식별자를 이용하여 파일을 전송한 경우이다. 표 2를 참고하면, 청크의 고유 식별자를 이용하여 파일을 전송하는 방법이 대용량, 다량의 데이터를 전송하는데 보다 효율적임을 알 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (14)

  1. 제1 컴퓨팅 장치가, 제2 컴퓨팅 장치로부터 파일의 전송 요청을 수신하여, 상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 단계; 및
    상기 제2 컴퓨팅 장치가, 상기 고유 식별자 목록을 수신하여, 상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 단계를 포함하는,
    데이터 전송 방법.
  2. 제1항에 있어서,
    상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 단계는,
    상기 제1 컴퓨팅 장치가, 상기 파일을 구성하는 청크로 제1 딕셔너리를 조회하여, 상기 청크에 매칭된 고유 식별자를 구하는 단계를 포함하고,
    상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 단계는,
    상기 제2 컴퓨팅 장치가, 상기 고유 식별자 목록에 포함된 고유 식별자로 제2 딕셔너리를 조회하여, 상기 고유 식별자에 매칭된 청크를 구하는 단계를 포함하되,
    상기 제1 딕셔너리는 상기 제1 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것이고,
    상기 제2 딕셔너리는 상기 제2 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것인,
    데이터 전송 방법.
  3. 제2항에 있어서,
    상기 청크에 매칭된 고유 식별자를 구하는 단계는,
    상기 파일을 구성하는 청크로 상기 제1 딕셔너리를 조회한 결과가 없는 경우에는,
    상기 제1 딕셔너리가, 상기 조회 결과가 없는 청크와 상기 청크에 매칭된 고유 식별자를 라이브러리에 동기화 요청하는 단계를 포함하되,
    상기 라이브러리는 각 딕셔너리와의 동기화를 통하여, 상기 각 딕셔너리의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것인,
    데이터 전송 방법.
  4. 제3항에 있어서,
    상기 조회 결과가 없는 청크와 상기 청크에 매칭된 고유 식별자를 라이브러리에 동기화 요청하는 단계는,
    상기 동기화 요청 온 청크와 상기 청크에 매칭된 고유 식별자가 상기 라이브러리에 없는 경우에는,
    상기 라이브러리가, 상기 동기화 요청 온 청크의 고유 식별자를 생성하고, 상기 청크에 상기 고유 식별자를 매칭하여 상기 라이브러리의 매칭 테이블에 저장하는 단계를 포함하는,
    데이터 전송 방법.
  5. 제4항에 있어서,
    상기 동기화 요청 온 청크의 고유 식별자를 생성하고, 상기 청크에 상기 고유 식별자를 매칭하여 상기 라이브러리의 매칭 테이블에 저장하는 단계는,
    상기 라이브러리가, 상기 동기화 요청 온 청크의 해시 값을 기반으로 상기 고유 식별자를 생성하는 단계를 포함하는,
    데이터 전송 방법.
  6. 제2항에 있어서,
    상기 청크에 매칭된 고유 식별자를 구하는 단계는,
    상기 파일을 구성하는 청크로 상기 제1 딕셔너리를 조회한 결과가 없는 경우에는,
    상기 제1 딕셔너리가, 상기 조회 결과가 없는 청크의 임시 고유 식별자를 생성하고, 상기 청크에 상기 임시 고유 식별자를 매칭하여 상기 제1 딕셔너리의 매칭 테이블에 저장하는 단계를 포함하는,
    데이터 전송 방법.
  7. 제6항에 있어서,
    상기 조회 결과가 없는 청크의 임시 고유 식별자를 생성하고, 상기 청크에 상기 임시 고유 식별자를 매칭하여 상기 제1 딕셔너리의 매칭 테이블에 저장하는 단계는,
    상기 제1 딕셔너리가, 상기 조회 결과가 없는 청크의 해시 값과 상기 제1 딕셔너리의 식별자를 기반으로 상기 임시 고유 식별자를 생성하는 단계를 포함하는,
    데이터 전송 방법.
  8. 제6항에 있어서,
    상기 조회 결과가 없는 청크의 임시 고유 식별자를 생성하고, 상기 청크에 상기 임시 고유 식별자를 매칭하여 상기 제1 딕셔너리의 매칭 테이블에 저장하는 단계는,
    상기 제1 딕셔너리가, 유휴시간에 라이브러리와의 동기화를 통하여, 상기 임시 고유 식별자를 상기 청크에 매칭된 고유 식별자로 갱신하는 단계를 포함하되,
    상기 라이브러리는 각 딕셔너리와의 동기화를 통하여, 상기 각 딕셔너리의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것인,
    데이터 전송 방법.
  9. 제2항에 있어서,
    상기 고유 식별자에 매칭된 청크를 구하는 단계는,
    상기 고유 식별자 목록에 포함된 고유 식별자로 상기 제2 딕셔너리를 조회한 결과가 없는 경우에는,
    상기 제2 딕셔너리가, 상기 조회 결과가 없는 고유 식별자와 상기 고유 식별자에 매칭된 청크를 상기 제1 딕셔너리에 동기화 요청하는 단계를 포함하는,
    데이터 전송 방법.
  10. 제2항에 있어서,
    상기 고유 식별자에 매칭된 청크를 구하는 단계는,
    상기 고유 식별자 목록에 포함된 고유 식별자로 상기 제2 딕셔너리를 조회한 결과가 없는 경우에는,
    상기 제2 딕셔너리가, 상기 조회 결과가 없는 고유 식별자와 상기 고유 식별자에 매칭된 청크를 라이브러리에 동기화 요청하는 단계를 포함하되,
    상기 라이브러리는 각 딕셔너리와의 동기화를 통하여, 상기 각 딕셔너리의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 것인,
    데이터 전송 방법.
  11. 제2 컴퓨팅 장치로부터 파일의 전송 요청을 수신하여, 상기 파일을 구성하는 청크의 고유 식별자 목록을 상기 제2 컴퓨팅 장치에 송신하는 제1 컴퓨팅 장치; 및
    상기 고유 식별자 목록을 수신하여, 상기 고유 식별자 목록에 포함된 고유 식별자에 매칭된 청크를 병합함으로써 상기 파일을 구성하는 제2 컴퓨팅 장치를 포함하는,
    데이터 전송 시스템.
  12. 제11항에 있어서,
    상기 데이터 전송 시스템은,
    상기 제1 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 제1 딕셔너리; 및
    상기 제2 컴퓨팅 장치에 저장된 각 파일의 청크와 상기 청크의 고유 식별자의 매칭 테이블을 저장하는 제2 딕셔너리를 더 포함하고,
    상기 제1 컴퓨팅 장치는, 상기 파일을 구성하는 청크로 상기 제1 딕셔너리를 조회하여, 상기 청크에 매칭된 고유 식별자를 구하고,
    상기 제2 컴퓨팅 장치는, 상기 고유 식별자 목록에 포함된 고유 식별자로 상기 제2 딕셔너리를 조회하여, 상기 고유 식별자에 매칭된 청크를 구하는,
    데이터 전송 시스템.
  13. 복수의 컴퓨팅 장치를 포함하는 데이터 전송 시스템에서, 상기 컴퓨팅 장치는,
    다른 컴퓨팅 장치와 청크의 고유 식별자를 송수신하기 위한 고유 식별자 송수신부;
    파일을 청크로 분할하거나, 청크를 병합하여 파일을 구성하기 위한 파일-청크 변환부; 및
    청크를 이용하여 고유 식별자를 조회하거나, 고유 식별자를 이용하여 청크를 조회하기 위한 청크-고유 식별자 조회부를 포함하는 컴퓨팅 장치인,
    데이터 전송 시스템.
  14. 제13항에 있어서,
    상기 데이터 전송 시스템은 복수의 딕셔너리를 더 포함하되, 상기 딕셔너리는 상기 컴퓨팅 장치에 대응하여,
    상기 컴퓨팅 장치로부터 수신한 청크에 매칭된 고유 식별자를 조회하거나, 상기 컴퓨팅 장치로부터 수신한 고유 식별자에 매칭된 청크를 조회하기 위한 청크-고유 식별자 조회부;
    상기 딕셔너리에 저장되어 있지 않은 청크와 청크의 고유 식별자를 매칭하여 저장하는 청크-고유 식별자 저장부; 및
    상기 딕셔너리의 청크 및 청크의 고유 식별자를 다른 딕셔너리와 동기화하는 청크 동기화부를 포함하는 딕셔너리인,
    데이터 전송 시스템.
KR1020150129015A 2015-09-11 2015-09-11 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법 KR102350765B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150129015A KR102350765B1 (ko) 2015-09-11 2015-09-11 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150129015A KR102350765B1 (ko) 2015-09-11 2015-09-11 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20170031456A true KR20170031456A (ko) 2017-03-21
KR102350765B1 KR102350765B1 (ko) 2022-01-12

Family

ID=58502471

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150129015A KR102350765B1 (ko) 2015-09-11 2015-09-11 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR102350765B1 (ko)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120006945A (ko) * 2010-07-13 2012-01-19 (주)아모레퍼시픽 피부 진단 방법 및 키트
KR20130020034A (ko) * 2011-08-18 2013-02-27 웹싱크 주식회사 파일 동기화 방법 및 이를 위한 시스템
KR20130045159A (ko) * 2011-10-24 2013-05-03 한국전자통신연구원 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
KR20130087850A (ko) 2012-01-30 2013-08-07 삼성전자주식회사 데이터 디듀플리케이션 시스템 및 그 방법
KR20130120516A (ko) * 2011-01-14 2013-11-04 애플 인크. 컨텐츠 기반 파일 청크
KR20140016191A (ko) * 2012-07-27 2014-02-07 한성대학교 산학협력단 데이터 동기화를 수행하는 단말 및 서버
US20150035873A1 (en) * 2012-04-18 2015-02-05 Toppan Printing Co., Ltd. Liquid crystal display device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120006945A (ko) * 2010-07-13 2012-01-19 (주)아모레퍼시픽 피부 진단 방법 및 키트
KR20130120516A (ko) * 2011-01-14 2013-11-04 애플 인크. 컨텐츠 기반 파일 청크
US20150095385A1 (en) * 2011-01-14 2015-04-02 Apple Inc. Content Based File Chunking
KR20130020034A (ko) * 2011-08-18 2013-02-27 웹싱크 주식회사 파일 동기화 방법 및 이를 위한 시스템
KR20130045159A (ko) * 2011-10-24 2013-05-03 한국전자통신연구원 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
KR20130087850A (ko) 2012-01-30 2013-08-07 삼성전자주식회사 데이터 디듀플리케이션 시스템 및 그 방법
US20150035873A1 (en) * 2012-04-18 2015-02-05 Toppan Printing Co., Ltd. Liquid crystal display device
KR20140016191A (ko) * 2012-07-27 2014-02-07 한성대학교 산학협력단 데이터 동기화를 수행하는 단말 및 서버

Also Published As

Publication number Publication date
KR102350765B1 (ko) 2022-01-12

Similar Documents

Publication Publication Date Title
CN101334797B (zh) 一种分布式文件系统及其数据块一致性管理的方法
CA2512312C (en) Metadata based file switch and switched file system
US7512673B2 (en) Rule based aggregation of files and transactions in a switched file system
US8396895B2 (en) Directory aggregation for files distributed over a plurality of servers in a switched file system
USRE43346E1 (en) Transaction aggregation in a switched file system
CN106066896B (zh) 一种应用感知的大数据重复删除存储系统及方法
US6901414B2 (en) Method and system of storing a main data file and deltas in a storage device for determining new data files from the main data file and the deltas
CN102307206B (zh) 基于云存储的快速访问虚拟机镜像的缓存系统的缓存方法
CN110502507A (zh) 一种分布式数据库的管理系统、方法、设备和存储介质
US20040133607A1 (en) Metadata based file switch and switched file system
CN102201010A (zh) 无共享架构的分布式数据库系统及其实现方法
US20070282878A1 (en) System and method for online reorganization of a database using flash image copies
US20220035786A1 (en) Distributed database management system with dynamically split b-tree indexes
JPWO2010116608A1 (ja) データ挿入システム
CN104184812A (zh) 一种基于私有云的多点数据传输方法
CN108540510B (zh) 一种云主机创建方法、装置及云服务系统
CN105187517A (zh) 一种实现元数据集群的方法及元数据集群
KR20100073154A (ko) 메타데이터 서버, 데이터 서버의 데이터 처리 방법 및 이를이용한 비대칭 클러스터 분산 파일 시스템
CN113010496A (zh) 一种数据迁移方法、装置、设备和存储介质
CN110704541A (zh) 一种Redis集群多数据中心高可用的分布式方法及架构
JP5287366B2 (ja) 管理サーバ、バックアップ方式、バックアップ方法、及び、プログラム
KR20170031456A (ko) 중복된 데이터를 제거한 딕셔너리 관리 시스템 및 그 방법
CN103500129A (zh) 一种备份对象的发送、备份方法、生产端、灾备端及系统
CN101702159A (zh) 一种索引文件同步方法、索引服务器和搜索系统
KR100492167B1 (ko) 비공유 구조의 데이터베이스 클러스터 서버 시스템과온라인 확장 방법

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