KR101873878B1 - 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법 - Google Patents

상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법 Download PDF

Info

Publication number
KR101873878B1
KR101873878B1 KR1020160149020A KR20160149020A KR101873878B1 KR 101873878 B1 KR101873878 B1 KR 101873878B1 KR 1020160149020 A KR1020160149020 A KR 1020160149020A KR 20160149020 A KR20160149020 A KR 20160149020A KR 101873878 B1 KR101873878 B1 KR 101873878B1
Authority
KR
South Korea
Prior art keywords
messages
data
message distribution
message
distribution groups
Prior art date
Application number
KR1020160149020A
Other languages
English (en)
Other versions
KR20180051998A (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 KR1020160149020A priority Critical patent/KR101873878B1/ko
Publication of KR20180051998A publication Critical patent/KR20180051998A/ko
Application granted granted Critical
Publication of KR101873878B1 publication Critical patent/KR101873878B1/ko

Links

Images

Classifications

    • G06F17/30194
    • 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/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법이 개시된다. 본 발명은 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법을 제공할 수 있다.

Description

상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법{DATA STORAGE APPARATUS AND METHOD FOR STORING A MESSAGE DISPERSEDLY BASED ON RELATIVE DIFFERENCE SET}
본 발명은 데이터의 손실이 발생하였을 때, 데이터의 복구가 용이하도록 다수의 데이터 저장소들에 다수의 메시지들을 분산해서 저장하는 기법에 대한 기술과 관련된다.
최근, 인터넷의 보급이 활발하게 이루어짐에 따라, 다양한 인터넷 서비스 제공 업체들이 등장하고 있다. 이러한 인터넷 서비스 제공 업체들은 이메일 서비스를 제공하거나, 블로그, 카페, 클라우드 데이터 저장 서비스 등과 같은 다양한 서비스들을 제공하고 있다.
특히, 최근에는 소셜 네트워크 서비스의 인기가 급증함에 따라, 소셜 네트워크 서비스를 제공하는 인터넷 서비스 제공 업체들도 매우 많이 증가하고 있다.
이러한 인터넷 서비스 제공 업체들은 이메일 서비스, 블로그, 카페, 클라우드 서비스, 소셜 네트워크 서비스 등을 제공하기 위해 다수의 클라이언트 단말들로부터 업로드되는 대용량의 데이터들을 자체의 데이터 저장소에 저장을 해야하는데, 이러한 데이터들이 데이터 저장소 내에서 손실되게 되면, 고객들에게 정상적인 서비스를 제공하지 못하기 때문에 데이터의 손실을 방지하기 위한 다양한 노력을 하고 있다.
그러한 노력의 일환 중 하나로 데이터 저장소에 저장되어야 하는 사용자 메시지를 여러 데이터 저장소들에 백업을 해두는 방식이 도입되고 있다. 이러한 데이터 백업 방식은 원본 메시지가 손실되더라도 백업을 해둔 메시지를 이용하여 상기 원본 메시지를 대체할 수 있다는 점에서 데이터 손실에 대처하기 위한 가장 이상적인 방법 중 하나이다.
이렇게, 하나의 원본 메시지를 복수의 데이터 저장소들에 여러 번 저장을 해두게 되면, 상기 원본 메시지에 대한 데이터 로드 명령이 인가될 때, 상기 복수의 데이터 저장소들 중 가장 동작 속도가 빠른 임의의 데이터 저장소로부터 상기 원본 메시지에 대응하는 메시지를 바로 로드하면 되기 때문에, 하나의 데이터 저장소에 원본 메시지를 저장하는 방식보다 데이터 로드에 있어서도 빠른 속도를 제공할 수 있다.
하지만, 기존의 데이터 백업 방식은 단순히 원본 메시지에 대한 복사 메시지를 복수의 데이터 저장소들에 분산해서 저장하는 방식만을 도입하고 있어서, 다수의 메시지들을 데이터 저장소에 저장해야 하는 인터넷 서비스 제공 업체들의 입장에서는 상기 다수의 메시지들 각각에 대한 복사 메시지들을 생성해서 각 데이터 저장소들에 분산 저장해야 하기 때문에 많은 데이터 저장 용량이 필요하다는 문제가 발생할 수 있다.
따라서, 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 모두 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법에 대한 연구가 필요하다.
본 발명은 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법을 제공하고자 한다.
본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치는 N - N은 N=q2-1의 조건을 만족하는 자연수이고, q는 임의의 소수 p에 대해서 q=pe을 만족하는 자연수이며, e는 1이상의 자연수임 - 개의 메시지들에 대해 N개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 N개의 데이터 저장소들에 대응하는 N개의 메시지 분산 그룹들을 생성하는 분산 그룹 생성부, 상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당 - 상기 N개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 메시지 분산 할당부 및 상기 N개의 메시지 분산 그룹들 각각에 할당되어 있는 q개의 메시지들을 상기 N개의 메시지 분산 그룹들 별로, 상기 N개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 데이터 저장부를 포함한다.
또한, 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법은 N - N은 N=q2-1의 조건을 만족하는 자연수이고, q는 임의의 소수 p에 대해서 q=pe을 만족하는 자연수이며, e는 1이상의 자연수임 - 개의 메시지들에 대해 N개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 N개의 데이터 저장소들에 대응하는 N개의 메시지 분산 그룹들을 생성하는 단계, 상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당 - 상기 N개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 단계 및 상기 N개의 메시지 분산 그룹들 각각에 할당되어 있는 q개의 메시지들을 상기 N개의 메시지 분산 그룹들 별로, 상기 N개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 단계를 포함한다.
본 발명은 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법을 제공할 수 있다.
도 1은 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치의 구조를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법을 도시한 순서도이다.
이하에서는 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명하기로 한다. 이러한 설명은 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였으며, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 본 명세서 상에서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 사람에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.
도 1은 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치의 구조를 도시한 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치(110)는 분산 그룹 생성부(111), 메시지 분산 할당부(112) 및 데이터 저장부(113)를 포함한다.
분산 그룹 생성부(111)는 N개의 메시지들에 대해 N개의 데이터 저장소들(101, 102, 103)로의 분산 저장 명령이 인가되면, N개의 데이터 저장소들(101, 102, 103)에 대응하는 N개의 메시지 분산 그룹들을 생성한다.
여기서, N은 N=q2-1의 조건을 만족하는 자연수이고, q는 임의의 소수 p에 대해서 q=pe을 만족하는 자연수이며, e는 1이상의 자연수이다.
그리고, 메시지란 N개의 데이터 저장소들(101, 102, 103)에 저장될 일종의 데이터 심볼(symbol)을 의미하는 것으로 상기 N개의 메시지들은 각각 서로 다른 데이터 심볼이다.
메시지 분산 할당부(112)는 상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당한다.
이때, 상기 N개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있다.
데이터 저장부(113)는 상기 N개의 메시지 분산 그룹들 각각에 할당되어 있는 q개의 메시지들을 상기 N개의 메시지 분산 그룹들 별로, N개의 데이터 저장소들(101, 102, 103) 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장한다.
이때, 본 발명의 일실시예에 따르면, 메시지 분산 할당부(112)는 제1 시퀀스 생성부(114), 제2 시퀀스 생성부(115), 시퀀스 매칭부(116) 및 할당부(117)를 포함할 수 있다.
제1 시퀀스 생성부(114)는 원소의 개수가 q개인 유한체(finite field)를 나타내는 Fq에 상대적인
Figure 112016109688003-pat00001
(
Figure 112016109688003-pat00002
에는
Figure 112016109688003-pat00003
으로 표현되는 원소들이 포함되어 있고,
Figure 112016109688003-pat00004
는 상기
Figure 112016109688003-pat00005
에 포함되어 있는 0이 아닌 모든 원소를
Figure 112016109688003-pat00006
으로 나타낼 수 있는 원시원(primitive element)임)의 상대 차집합 D(상기 상대 차집합 D는 (q+1, q-1, q, 1)의 파라미터를 가짐)를 연산하고, 상기 상대 차집합 D에 포함되는 q개의 원소들에 기초하여 상기
Figure 112016109688003-pat00007
에 포함되어 있는
Figure 112016109688003-pat00008
으로 표현되는 원소들에 대해
Figure 112016109688003-pat00009
부터
Figure 112016109688003-pat00010
순으로 "1"과 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성한다.
이때, 제1 시퀀스 생성부(114)는 상기
Figure 112016109688003-pat00011
에 포함되어 있는
Figure 112016109688003-pat00012
으로 표현되는 원소들 중 상기 상대 차집합 D에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제1 시퀀스를 생성할 수 있다.
그리고, 제2 시퀀스 생성부(115)는 상기
Figure 112016109688003-pat00013
에 포함되어 있는
Figure 112016109688003-pat00014
으로 표현되는 모든 원소들에 대해서 상기 상대 차집합 D의 우코셋(right coset)을 연산하여 N-1개의 우코셋들을 생성한 후, 상기 N-1개의 우코셋들 각각에 포함되어 있는 q개의 원소들을 기초로 상기
Figure 112016109688003-pat00015
에 포함되어 있는
Figure 112016109688003-pat00016
으로 표현되는 원소들에 대해
Figure 112016109688003-pat00017
부터
Figure 112016109688003-pat00018
순으로 "1"과 "0"의 코드 값을 할당하여 N개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 상기 N-1개의 우코셋들 각각에 대해 생성함으로써, N-1개의 제2 시퀀스들을 생성한다.
이때, 제2 시퀀스 생성부(115)는 상기 N-1개의 우코셋들 각각에 대해, 상기
Figure 112016109688003-pat00019
에 포함되어 있는
Figure 112016109688003-pat00020
으로 표현되는 원소들 중 상기 N-1개의 우코셋들 각각에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 N-1개의 우코셋들 각각에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제2 시퀀스들을 N-1개 생성할 수 있다.
여기서, 상대 차집합(Relative Difference Set)에 대해 설명하면, G를 차수가 uv인 그룹이라 하고, K가 차수가 u인 정규 부분군(Normal Subgroup)이라 할 때, K에 상대적인 G의 상대 차집합 D는 아래의 표 1과 같이 정의될 수 있다.
D는 G의 ω개의 원소를 갖는 부분집합으로 D의 임의의 두 원소 d1, d2를 취해서 d1과 d2의 역원을 연산했을 때, K를 제외한 G의 모든 0이 아닌 원소가 정확히 λ번 발생하는 성질을 갖고 있음. 이 때 D의 파라미터는 (v, u, ω, λ)로 나타냄.
그리고, 우코셋에 대해 설명하면, 파라미터 (v, u, ω, 1)을 갖는 상대 차집합
Figure 112016109688003-pat00021
가 있을 때, 0아닌
Figure 112016109688003-pat00022
의 원소 b에 대해서 상대 차집합 D의 우코셋 Dgi은 아래의 수학식 1과 같이 정의될 수 있다.
Figure 112016109688003-pat00023
이러한 상황 하에서, 임의의 소수 p에 대해서 q=pe(e는 1이상의 자연수임)을 만족할 때, Fq를 원소의 개수가 q개인 유한체라고 하면, 에 포함되어 있는 0이 아닌 모든 원소를
Figure 112016109688003-pat00024
으로 나타낼 수 있는 원시원
Figure 112016109688003-pat00025
Figure 112016109688003-pat00026
에 반드시 존재하는 것이 알려져 있다. 그러면
Figure 112016109688003-pat00027
는 Fq상의 원소가 된다.
이때, 0이 아닌 Fq상의 원소
Figure 112016109688003-pat00028
에 대해서
Figure 112016109688003-pat00029
가 되는
Figure 112016109688003-pat00030
만을 모은 집합
Figure 112016109688003-pat00031
는 Fq에 상대적인
Figure 112016109688003-pat00032
의 상대 차집합이 되고, 파라미터는 (q+1, q-1, q, 1)이 될 수 있다.
여기서, 상대 차집합 D에는
Figure 112016109688003-pat00033
에 포함되어 있는
Figure 112016109688003-pat00034
으로 표현되는 원소들 중 q개의 원소들이 포함되게 된다.
그리고, 상기
Figure 112016109688003-pat00035
에 포함되어 있는
Figure 112016109688003-pat00036
으로 표현되는 모든 원소들에 대해서 상기 상대 차집합 D의 우코셋을 연산(
Figure 112016109688003-pat00037
일 경우는 제외)하게 되면,
Figure 112016109688003-pat00038
이라는 N-1개의 우코셋들이 생성될 수 있고, 이때, 상기 N-1개의 우코셋들 각각에도
Figure 112016109688003-pat00039
에 포함되어 있는
Figure 112016109688003-pat00040
으로 표현되는 원소들 중 항상 q개의 원소들이 포함되게 된다.
이렇게, 상대 차집합 D와
Figure 112016109688003-pat00041
이라는 N-1개의 우코셋들이 생성되었을 때, 상대 차집합 D와
Figure 112016109688003-pat00042
이라는 N-1개의 우코셋들 각각에 대해서,
Figure 112016109688003-pat00043
에 포함되어 있는
Figure 112016109688003-pat00044
으로 표현되는 원소들 중 상대 차집합 D와 N-1개의 우코셋들 각각에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상대 차집합 D와 N-1개의 우코셋들 각각에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상대 차집합 D와 N-1개의 우코셋들 각각에 대해서 상기
Figure 112016109688003-pat00045
에 포함되어 있는
Figure 112016109688003-pat00046
으로 표현되는 원소에 대해
Figure 112016109688003-pat00047
부터
Figure 112016109688003-pat00048
순으로 "1"과 "0"의 코드 값을 할당하게 되면, 총 N개의 "1"과 "0"의 코드 값으로 구성된 시퀀스들을 획득할 수 있다.
이때, 각 시퀀스들 내에 존재하는 "1"의 코드 값의 개수는 항상 q개로 일정하며, 상기 N개의 시퀀스들 중에서 서로 다른 q개의 시퀀스들을 랜덤하게 선택한 후 랜덤하게 선택된 q개의 시퀀스들을 모두 "OR"연산하게 되면, "OR" 연산이 수행된 결과 값에서 존재하는 "1"의 코드 값의 개수는 항상
Figure 112016109688003-pat00049
개 이상이 되고, "0"의 코드 값의 개수는 항상
Figure 112016109688003-pat00050
개 이하가 되는 특징을 가지고 있다.
예컨대, q=3이라고 가정하면,
Figure 112016109688003-pat00051
에 포함되는
Figure 112016109688003-pat00052
으로 표현되는 모든 원소들은
Figure 112016109688003-pat00053
이 될 수 있고, 이때, 상대 차집합 D의 파라미터는 (4, 2, 3, 1)이 되며, 상대 차집합
Figure 112016109688003-pat00054
이 될 수 있다.
이때,
Figure 112016109688003-pat00055
에 포함되어 있는 원소들인
Figure 112016109688003-pat00056
중 상대 차집합 D에 포함되는 3개의 원소인
Figure 112016109688003-pat00057
들에 대해 "1"의 코드 값을 할당하고, 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상기
Figure 112016109688003-pat00058
에 포함되어 있는 원소들인
Figure 112016109688003-pat00059
에 대해
Figure 112016109688003-pat00060
부터
Figure 112016109688003-pat00061
순으로 "1"과 "0"의 코드 값을 할당하게 되면, "11010000"이라는 8개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 생성할 수 있다.
그리고,
Figure 112016109688003-pat00062
에 포함되어 있는 원소들인
Figure 112016109688003-pat00063
전체에 대해 상대 차집합 D의 우코셋들을 연산(
Figure 112016109688003-pat00064
일 경우는 제외)하면,
Figure 112016109688003-pat00065
이 생성되고, 여기서, 첫 번째 우코셋이
Figure 112016109688003-pat00066
이기 때문에
Figure 112016109688003-pat00067
에 포함되어 있는 원소들인
Figure 112016109688003-pat00068
Figure 112016109688003-pat00069
에 포함되는 3개의 원소인
Figure 112016109688003-pat00070
들에 대해 "1"의 코드 값을 할당하고,
Figure 112016109688003-pat00071
에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상기
Figure 112016109688003-pat00072
에 포함되어 있는 원소들인
Figure 112016109688003-pat00073
에 대해
Figure 112016109688003-pat00074
부터
Figure 112016109688003-pat00075
순으로 "1"과 "0"의 코드 값을 할당하게 되면, "01101000"이라는 8개의 "1"과 "0"의 코드 값으로 구성된 또 다른 시퀀스를 생성할 수 있다.
이러한 방식으로, 나머지 우코셋들인
Figure 112016109688003-pat00076
에 대해서 시퀀스를 생성하게 되면, 최종적으로 총 8개의 시퀀스들이 생성될 수 있고, 이때, 각 시퀀스들 내에 존재하는 "1"의 코드 값의 개수는 모두 3개로 일정하며, 상기 8개의 시퀀스들 중에서 서로 다른 3개의 시퀀스들을 랜덤하게 선택한 후 랜덤하게 선택된 3개의 시퀀스들을 모두 "OR"연산하게 되면, "OR" 연산이 수행된 결과 값에서 존재하는 "1"의 코드 값의 개수는 항상 6개 이상이 되며, "0"의 코드 값의 개수는 항상 2개 이하가 되는 특징을 가지게 된다.
지금까지 설명한 상대 차집합과 이에 대한 우코셋으로부터의 시퀀스 생성 과정에 따라, 제1 시퀀스 생성부(114)는 원소의 개수가 q개인 유한체를 나타내는 Fq에 상대적인
Figure 112016109688003-pat00077
의 상대 차집합 D를 연산하고, 상기
Figure 112016109688003-pat00078
에 포함되어 있는
Figure 112016109688003-pat00079
으로 표현되는 원소들 중 상기 상대 차집합 D에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상기
Figure 112016109688003-pat00080
에 포함되어 있는
Figure 112016109688003-pat00081
으로 표현되는 원소들에 대해
Figure 112016109688003-pat00082
부터
Figure 112016109688003-pat00083
순으로 "1"과 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성할 수 있다.
그리고, 제2 시퀀스 생성부(115)는 상기
Figure 112016109688003-pat00084
에 포함되어 있는
Figure 112016109688003-pat00085
으로 표현되는 모든 원소들에 대해서 상기 상대 차집합 D의 우코셋을 연산하여 N-1개의 우코셋들을 생성한 후, 상기 N-1개의 우코셋들 각각에 대해, 상기
Figure 112016109688003-pat00086
에 포함되어 있는
Figure 112016109688003-pat00087
으로 표현되는 원소들 중 상기 N-1개의 우코셋들 각각에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 N-1개의 우코셋들 각각에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상기 N-1개의 우코셋들 각각에 대해서 상기
Figure 112016109688003-pat00088
에 포함되어 있는
Figure 112016109688003-pat00089
으로 표현되는 원소들에 대해
Figure 112016109688003-pat00090
부터
Figure 112016109688003-pat00091
순으로 "1"과 "0"의 코드 값을 할당함으로써, N-1개의 제2 시퀀스들을 생성할 수 있다.
이렇게, 상기 제1 시퀀스와 상기 N-1개의 제2 시퀀스들이 생성되면, 시퀀스 매칭부(116)는 상기 N개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 N-1개의 제2 시퀀스들을 하나씩 매칭시킨다.
그리고, 할당부(117)는 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당한다.
이때, 본 발명의 일실시예에 따르면, 메시지 분산 할당부(112)는 상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 인덱스 할당부(118)를 더 포함할 수 있다.
이때, 할당부(117)는 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당할 수 있다.
이때, 본 발명의 일실시예에 따르면, 할당부(117)는 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 q개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 q개의 메시지들을 분산 할당할 수 있다.
본 발명의 일실시예에 따르면, 메시지의 최적 분산 저장이 가능한 데이터 저장 장치(110)는 저장 메시지 추출부(119) 및 데이터 로드부(120)를 더 포함할 수 있다.
저장 메시지 추출부(119)는 N개의 데이터 저장소들(101, 102, 103)에 상기 N개의 메시지들이 q개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드(load) 명령이 인가되면, 상기 로드 명령에 기초하여 N개의 데이터 저장소들(101, 102, 103) 중 q개의 데이터 저장소들을 랜덤하게 선택하고, 상기 q개의 데이터 저장소들 각각으로부터 상기 q개의 데이터 저장소들 각각에 저장되어 있는 q개의 저장 메시지들을 추출한다.
데이터 로드부(120)는 상기 q개의 데이터 저장소들 각각으로부터 q개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드한다.
이때, 본 발명의 일실시예에 따르면, 상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 최대 거리 분리 가능(Maximum Distance Separable: MDS) 코드일 수 있다.
여기서, MDS 코드란 복수의 메시지들 중 일부 메시지의 손실이 발생하였을 때, 남아 있는 메시지들을 기초로 손실된 일부 메시지들을 복원할 수 있는 코드로, 소정의 원본 메시지에 대해 MDS 코딩을 수행함으로써, MDS 코드로 변경해 둔 후 MDS 코드로 변경된 메시지들 중 일부 메시지에 대한 손실이 발생하였을 때, 손실된 메시지를 복원하는데 사용될 수 있다. 이때, 상기 MDS 코드로부터 다시 원본 메시지를 생성하고자 한다면, MDS 디코딩을 수행함으로써, 상기 원본 메시지를 복원할 수 있다. 따라서, 중요 메시지들을 저장할 때, MDS 코드로 변경해서 저장해 둠으로써, 메시지의 손실이 발생할 경우를 미리 대비할 수 있다.
이때, 데이터 로드부(120)는 상기 q개의 데이터 저장소들 각각으로부터 q개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드할 수 있다.
이하에서는 도 2를 참조하여, 본 발명에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치(110)의 동작을 예를 들어 상세히 설명하기로 한다.
도 2는 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치(110)의 동작을 설명하기 위한 도면이다.
우선, q=3, N=8이라고 가정하고, N개의 데이터 저장소들(101, 102, 103)이 도 2에 도시된 바와 같이, 데이터 저장소 1(211), 데이터 저장소 2(221), 데이터 저장소 3(231), 데이터 저장소 4(241), 데이터 저장소 5(251), 데이터 저장소 6(261), 데이터 저장소 7(271) 및 데이터 저장소 8(281)로 존재하며, N=8인 관계로 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에 저장할 메시지들의 개수가 8개인 것으로 가정하기로 한다.
이때, 분산 그룹 생성부(111)는 8개의 메시지들에 대해 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)로의 분산 저장 명령이 인가되면, 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에 대응하는 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283)을 생성할 수 있다.
그리고, 메시지 분산 할당부(112)에 포함되어 있는 인덱스 할당부(118)는 상기 8개의 메시지들에 대해서 순번 정보와 연관된 인덱스 값을 할당할 수 있는데, 인덱스 할당부(118)가 상기 8개의 메시지들에 대해 순서대로 1부터 8까지의 인덱스 값을 할당한다고 하면, 상기 8개의 메시지들은 "m1, m2, m3, m4, m5, m6, m7, m8"로 표시할 수 있다.
q=3, N=8이라고 가정하였기 때문에, 제1 시퀀스 생성부(114)는 원소의 개수가 3개인 유한체를 나타내는 Fq에 상대적인
Figure 112016109688003-pat00092
(
Figure 112016109688003-pat00093
에는
Figure 112016109688003-pat00094
으로 표현되는 원소들이 포함되어 있고,
Figure 112016109688003-pat00095
는 상기
Figure 112016109688003-pat00096
에 포함되어 있는 0이 아닌 모든 원소를
Figure 112016109688003-pat00097
으로 나타낼 수 있는 원시원임)의 상대 차집합 D(상기 상대 차집합 D는 (4, 2, 3, 1)의 파라미터를 가짐)를 연산하여
Figure 112016109688003-pat00098
을 생성할 수 있다.
그러고 나서, 제1 시퀀스 생성부(114)는
Figure 112016109688003-pat00099
에 포함되어 있는 원소들인
Figure 112016109688003-pat00100
중 상대 차집합 D에 포함되는 3개의 원소인
Figure 112016109688003-pat00101
들에 대해 "1"의 코드 값을 할당하고, 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상기
Figure 112016109688003-pat00102
에 포함되어 있는 원소들인
Figure 112016109688003-pat00103
에 대해 부터 순으로 "1"과 "0"의 코드 값을 할당함으로써, "11010000"(212)이라는 8개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성할 수 있다.
그리고, 제2 시퀀스 생성부(115)는
Figure 112016109688003-pat00104
에 포함되어 있는 원소들인
Figure 112016109688003-pat00105
전체에 대해 상대 차집합 D의 우코셋들을 연산(
Figure 112016109688003-pat00106
일 경우는 제외)하여
Figure 112016109688003-pat00107
라는 7개의 우코셋들을 생성할 수 있다.
그러고 나서, 제2 시퀀스 생성부(115)는 상기 7개의 우코셋들 각각에 포함되어 있는 3개의 원소들을 기초로 상기
Figure 112016109688003-pat00108
에 포함되어 있는
Figure 112016109688003-pat00109
에 대해
Figure 112016109688003-pat00110
부터
Figure 112016109688003-pat00111
순으로 "1"과 "0"의 코드 값을 할당하여 8개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 상기 7개의 우코셋들 각각에 대해 생성함으로써, 7개의 제2 시퀀스들을 생성할 수 있다.
관련하여, 제2 시퀀스 생성부(115)는 첫 번째 우코셋이
Figure 112016109688003-pat00112
이기 때문에
Figure 112016109688003-pat00113
에 포함되어 있는 원소들인
Figure 112016109688003-pat00114
Figure 112016109688003-pat00115
에 포함되는 3개의 원소인
Figure 112016109688003-pat00116
들에 대해 "1"의 코드 값을 할당하고,
Figure 112016109688003-pat00117
에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당하는 방식으로 상기
Figure 112016109688003-pat00118
에 포함되어 있는 원소들인
Figure 112016109688003-pat00119
에 대해
Figure 112016109688003-pat00120
부터
Figure 112016109688003-pat00121
순으로 "1"과 "0"의 코드 값을 할당함으로써, "01101000"(222)이라는 8개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 생성할 수 있다.
이러한 방식으로, 제2 시퀀스 생성부(115)는 나머지 우코셋들인
Figure 112016109688003-pat00122
에 대해서도 시퀀스를 생성함으로써, "00110100"(232), "00011010"(242), "00001101"(252), "10000110"(262), "01000011"(272), "10100001"(282)라는 시퀀스들을 추가로 생성할 수 있다.
이러한 제1 시퀀스인 "11010000"(212)와 7개의 제2 시퀀스들인 "01101000"(222)", 00110100"(232), "00011010"(242), "00001101"(252), "10000110"(262), "01000011"(272), "10100001"(282)는 앞서 설명한 바와 같이, 항상 q개의 "1"의 코드 값을 갖게 되는데, 본 실시예에서 q는 3으로 가정하였기 때문에 8개의 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282) 각각에 포함된 "1"의 코드 값은 항상 3개이다.
그리고, 제1 시퀀스와 제2 시퀀스들은 서로 다른 3개의 시퀀스들 간에 "OR" 논리 연산을 수행하면, 해당 논리 연산의 결과 값에 포함된 "1"의 코드 값은 항상
Figure 112016109688003-pat00123
개 이상이 되고, "0"의 코드 값은 항상
Figure 112016109688003-pat00124
개 이하가 되기 때문에 본 실시예에서는 q가 3이라고 가정하였으므로, 8개의 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282) 중 어느 3개의 시퀀스들 간에 "OR" 논리 연산이 수행되면, 그 연산 결과 값에 포함되어 있는 "1"의 코드 값은 항상 6개 이상이 되고, "0"의 코드 값은 항상 2개 이하가 된다.
이렇게, 8개의 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282)이 생성되면, 시퀀스 매칭부(116)는 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에 각각 대응하는 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 대해 8개의 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282)을 하나씩 매칭시킬 수 있다.
관련해서, 시퀀스 매칭부(116)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 1(213)에 대해 11010000(212)을 매칭시킬 수 있고, 메시지 분산 그룹 2(223)에 대해 01101000(222)을 매칭시킬 수 있으며, 메시지 분산 그룹 3(233)에 대해 00110100(232)을 매칭시킬 수 있고, 메시지 분산 그룹 4(243)에 대해 00011010(242)을 매칭시킬 수 있고, 메시지 분산 그룹 5(253)에 대해 00001101(252)을 매칭시킬 수 있고, 메시지 분산 그룹 6(263)에 대해 10000110(262)을 매칭시킬 수 있고, 메시지 분산 그룹 7(273)에 대해 01000011(272)을 매칭시킬 수 있고, 메시지 분산 그룹 8(283)에 대해 10100001(282)을 매칭시킬 수 있다.
그러고 나서, 할당부(117)는 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 대해, 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 매칭되어 있는 각 시퀀스를 구성하는 8개의 코드 값에 기초하여 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"을 할당할 수 있는데, 할당부(117)는 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 매칭되어 있는 각 시퀀스를 구성하는 8개의 코드 값의 배열 순서와 8개의 메시지들 "m1, m2, m3, m4, m5, m6, m7, m8" 각각에 할당되어 있는 인덱스 값을 비교한 후 8개의 메시지들 "m1, m2, m3, m4, m5, m6, m7, m8"에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 8개의 메시지들 "m1, m2, m3, m4, m5, m6, m7, m8"을 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283)에 할당할 수 있다.
이때, 할당부(117)는 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 매칭되어 있는 각 시퀀스를 구성하는 8개의 코드 값 중 3개씩 존재하는 "1"의 코드 값을 확인한 후 8개의 메시지들 "m1, m2, m3, m4, m5, m6, m7, m8" 중 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283)에 할당할 수 있다.
관련해서, 할당부(117)가 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 대해 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"을 분산 할당하는 과정을 각 메시지 분산 그룹들 별로 구분해서 설명하면 다음과 같다.
우선, 메시지 분산 그룹 1(213)에 대해서는 11010000(212)라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 11010000(212)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 1(213)에 할당할 수 있다.
관련해서, 11010000(212)에서는 "1"의 코드 값이 1번, 2번, 4번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 1(213)에 대해 1번, 2번, 4번 위치에 대응하는 인덱스 값이 할당되어 있는 "m1, m2, m4"를 할당할 수 있다.
그리고, 메시지 분산 그룹 2(223)에 대해서는 01101000(222)라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 01101000(222)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 2(223)에 할당할 수 있다.
관련해서, 01101000(222)에서는 "1"의 코드 값이 2번, 3번, 5번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 2(223)에 대해 2번, 3번, 5번 위치에 대응하는 인덱스 값이 할당되어 있는 "m2, m3, m5"를 할당할 수 있다.
그리고, 메시지 분산 그룹 3(233)에 대해서는 00110100(232)라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 00110100(232)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 3(233)에 할당할 수 있다.
관련해서, 00110100(232)에서는 "1"의 코드 값이 3번, 4번, 6번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 3(233)에 대해 3번, 4번, 6번 위치에 대응하는 인덱스 값이 할당되어 있는 "m3, m4, m6"을 할당할 수 있다.
그리고, 메시지 분산 그룹 4(243)에 대해서는 00011010(242)이라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 00011010(242)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 4(243)에 할당할 수 있다.
관련해서, 00011010(242)에서는 "1"의 코드 값이 4번, 5번, 7번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 4(243)에 대해 4번, 5번, 7번 위치에 대응하는 인덱스 값이 할당되어 있는 "m4, m5, m7"을 할당할 수 있다.
그리고, 메시지 분산 그룹 5(253)에 대해서는 00001101(252)이라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 00001101(252)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 5(253)에 할당할 수 있다.
관련해서, 00001101(252)에서는 "1"의 코드 값이 5번, 6번, 8번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 5(253)에 대해 5번, 6번, 8번 위치에 대응하는 인덱스 값이 할당되어 있는 "m5, m6, m8"을 할당할 수 있다.
그리고, 메시지 분산 그룹 6(263)에 대해서는 10000110(262)이라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 10000110(262)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 6(263)에 할당할 수 있다.
관련해서, 10000110(262)에서는 "1"의 코드 값이 1번, 6번, 7번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 6(263)에 대해 1번, 6번, 7번 위치에 대응하는 인덱스 값이 할당되어 있는 "m1, m6, m7"을 할당할 수 있다.
그리고, 메시지 분산 그룹 7(273)에 대해서는 01000011(272)이라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 01000011(272)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 7(273)에 할당할 수 있다.
관련해서, 01000011(272)에서는 "1"의 코드 값이 2번, 7번, 8번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 7(273)에 대해 2번, 7번, 8번 위치에 대응하는 인덱스 값이 할당되어 있는 "m2, m7, m8"을 할당할 수 있다.
마지막으로, 메시지 분산 그룹 8(283)에 대해서는 10100001(282)이라는 시퀀스가 매칭되어 있기 때문에 할당부(117)는 10100001(282)로부터 "1"의 코드 값을 확인한 후 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 3개의 메시지들을 메시지 분산 그룹 8(283)에 할당할 수 있다.
관련해서, 10100001(282)에서는 "1"의 코드 값이 1번, 3번, 8번 위치에 배열되어 있기 때문에 할당부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 8(283)에 대해 1번, 3번, 8번 위치에 대응하는 인덱스 값이 할당되어 있는 "m1, m3, m8"을 할당할 수 있다.
이렇게, 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"이 모두 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283)에 3개씩 분산 할당이 완료되면, 데이터 저장부(113)는 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 각각에 할당되어 있는 3개의 메시지들을 8개의 메시지 분산 그룹들(213, 223, 233, 243, 253, 263, 273, 283) 별로 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281) 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장할 수 있다.
관련해서, 데이터 저장부(113)는 메시지 분산 그룹 1(213)에 할당되어 있는 3개의 메시지들인 "m1, m2, m4"를 대응되는 데이터 저장소인 데이터 저장소 1(211)에 저장할 수 있다.
그리고, 데이터 저장부(113)는 메시지 분산 그룹 2(223)에 할당되어 있는 3개의 메시지들인 "m2, m3, m5"를 대응되는 데이터 저장소인 데이터 저장소 2(221)에 저장할 수 있다.
그리고, 데이터 저장부(113)는 메시지 분산 그룹 3(233)에 할당되어 있는 3개의 메시지들인 "m3, m4, m6"을 대응되는 데이터 저장소인 데이터 저장소 3(231)에 저장할 수 있다.
그리고, 데이터 저장부(113)는 메시지 분산 그룹 4(243)에 할당되어 있는 3개의 메시지들인 "m4, m5, m7"을 대응되는 데이터 저장소인 데이터 저장소 4(241)에 저장할 수 있다.
그리고, 데이터 저장부(113)는 메시지 분산 그룹 5(253)에 할당되어 있는 3개의 메시지들인 "m5, m6, m8"을 대응되는 데이터 저장소인 데이터 저장소 5(251)에 저장할 수 있다.
그리고, 데이터 저장부(113)는 메시지 분산 그룹 6(263)에 할당되어 있는 3개의 메시지들인 "m1, m6, m7"을 대응되는 데이터 저장소인 데이터 저장소 6(261)에 저장할 수 있다.
그리고, 데이터 저장부(113)는 메시지 분산 그룹 7(273)에 할당되어 있는 3개의 메시지들인 "m2, m7, m8"을 대응되는 데이터 저장소인 데이터 저장소 7(271)에 저장할 수 있다.
마지막으로, 데이터 저장부(113)는 메시지 분산 그룹 8(283)에 할당되어 있는 3개의 메시지들인 "m1, m3, m8"을 대응되는 데이터 저장소인 데이터 저장소 8(281)에 저장할 수 있다.
이렇게, 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"이 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에 분산 저장이 완료되면, 추후 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"에 대해서 데이터 로드 명령이 인가됨에 따라 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"에 대한 데이터 로드를 수행할 때, 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281) 중에서 어느 3개의 데이터 저장소에만 액세스를 한 후 상기 3개의 데이터 저장소만에 저장되어 있는 메시지들을 추출하게 되면, 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"중에서 적어도 6개 이상의 메시지는 모두 추출되게 된다.
왜냐하면, 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에는 각 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282)의 "1"의 코드 값에 따라서 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"이 분산 할당되어 저장되었고, 각 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282)의 특성상 상기 8개의 시퀀스들(212, 222, 232, 242, 252, 262, 272, 282) 중 어느 3개의 시퀀스들 간에 "OR"논리 연산을 수행하게 되면, "1"의 코드 값이 항상 6개 이상이 나오기 때문에 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281) 중 어느 3개의 랜덤한 데이터 저장소로부터 각각 3개씩 메시지들을 모두 추출하게 되면, 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 적어도 6개 이상의 메시지들은 모두 확보하게 되는 것이다.
이로 인해서, 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"이 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에 분산 저장이 완료된 이후에 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"에 대한 로드 명령이 인가되면, 저장 메시지 추출부(119)는 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281) 중 데이터 트래픽이 가장 낮은 데이터 저장소 3개만을 랜덤하게 선택하여 3개의 데이터 저장소에 저장되어 있는 3개의 저장 데이터를 추출할 수 있고, 데이터 로드부(120)는 상기 3개의 데이터 저장소를 통해 추출된 각 저장 데이터를 기초로 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중 6개 이상의 메시지들을 빠르게 로드할 수 있다.
이때, 만약 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"이 임의의 6개의 메시지들만으로 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"을 모두 복원할 수 있도록 구성된 (8, 6) MDS 코드인 경우, 데이터 로드부(120)는 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281) 중에서 랜덤하게 선택된 3개의 데이터 저장소들로부터 3개씩 저장 메시지가 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"에 할당된 인덱스 값을 비교하여 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되는 경우, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"에 대한 로드 명령에 따른 데이터로 로드할 수 있다.
관련해서, 상기 랜덤하게 선택된 3개의 데이터 저장소를 데이터 저장소 2(221), 데이터 저장소 5(251), 데이터 저장소 7(271)이라고 하면, 저장 메시지 추출부(119)는 데이터 저장소 2(221)로부터 "m2, m3, m5"를 추출할 수 있고, 데이터 저장소 5(251)로부터 "m5, m6, m8"을 추출할 수 있으며, 데이터 저장소 7(271)로부터 "m2, m7, m8"을 추출할 수 있다.
이로 인해, 저장 메시지 추출부(119)는 결국, 데이터 저장소 2(221), 데이터 저장소 5(251) 및 데이터 저장소 7(271)로부터 "m2, m3, m5, m6, m7, m8"을 추출해 낼 수 있다.
이때, 데이터 로드부(120)는 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"에 할당되어 있는 인덱스 값과 상기 추출된 "m2, m3, m5, m6, m7, m8"에 할당되어 있는 인덱스 값을 서로 비교하여 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8" 중에서 상기 추출된 "m2, m3, m5, m6, m7, m8"에 포함되어 있지 않은 잔여 메시지를 확인할 수 있다.
관련해서, 본 실시예에서는 "m1, m4"가 잔여 메시지이기 때문에 데이터 로드부(120)는 "m1, m4"를 잔여 메시지로 확인한 후 (8, 6) MDS 코딩이 되어 있는 "m2, m3, m5, m6, m7, m8"으로부터 "m1, m4"를 복원해 낼 수 있다.
이로 인해, 결국, 데이터 로드부(120)는 상기 복원된 "m1, m4"와 데이터 저장소 2(221), 데이터 저장소 5(251) 및 데이터 저장소 7(271)에서 추출된 "m2, m3, m5, m6, m7, m8"을 로드함으로써, 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"을 모두 로드해 낼 수 있다.
결국, 본 발명에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 장치(110)는 상기 8개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8"을 상대 차집합에 기초하여 생성한 상기 제1 시퀀스와 상기 제2 시퀀스들에 따라 데이터 저장소 1~8(211, 221, 231, 241, 251, 261, 271, 281)에 3개씩 분산 저장해 놓음으로써, 추후 데이터를 로드할 때, 오직 3개의 데이터 저장소에만 액세스하여 데이터를 복원해 낼 수 있기 때문에 메시지 분산 저장 시스템에 있어서 시스템 자원 활용의 효율성을 도모할 수 있다.
도 3은 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법을 도시한 순서도이다.
단계(S310)에서는 N(N은 N=q2-1의 조건을 만족하는 자연수이고, q는 임의의 소수 p에 대해서 q=pe을 만족하는 자연수이며, e는 1이상의 자연수임)개의 메시지들에 대해 N개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 N개의 데이터 저장소들에 대응하는 N개의 메시지 분산 그룹들을 생성한다.
단계(S320)에서는 상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당(상기 N개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음)한다.
단계(S330)에서는 상기 N개의 메시지 분산 그룹들 각각에 할당되어 있는 q개의 메시지들을 상기 N개의 메시지 분산 그룹들 별로, 상기 N개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장한다.
이때, 본 발명의 일실시예에 따르면, 단계(S320)에서는 원소의 개수가 q개인 유한체를 나타내는 Fq에 상대적인
Figure 112016109688003-pat00125
(
Figure 112016109688003-pat00126
에는
Figure 112016109688003-pat00127
으로 표현되는 원소들이 포함되어 있고,
Figure 112016109688003-pat00128
는 상기
Figure 112016109688003-pat00129
에 포함되어 있는 0이 아닌 모든 원소를
Figure 112016109688003-pat00130
으로 나타낼 수 있는 원시원임)의 상대 차집합 D(상기 상대 차집합 D는 (q+1, q-1, q, 1)의 파라미터를 가짐)를 연산하고, 상기 상대 차집합 D에 포함되는 q개의 원소들에 기초하여 상기
Figure 112016109688003-pat00131
에 포함되어 있는
Figure 112016109688003-pat00132
으로 표현되는 원소들에 대해
Figure 112016109688003-pat00133
부터
Figure 112016109688003-pat00134
순으로 "1"과 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성하는 단계, 상기
Figure 112016109688003-pat00135
에 포함되어 있는
Figure 112016109688003-pat00136
으로 표현되는 모든 원소들에 대해서 상기 상대 차집합 D의 우코셋을 연산하여 N-1개의 우코셋들을 생성한 후, 상기 N-1개의 우코셋들 각각에 포함되어 있는 q개의 원소들을 기초로 상기
Figure 112016109688003-pat00137
에 포함되어 있는
Figure 112016109688003-pat00138
으로 표현되는 원소들에 대해
Figure 112016109688003-pat00139
부터
Figure 112016109688003-pat00140
순으로 "1"과 "0"의 코드 값을 할당하여 N개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 상기 N-1개의 우코셋들 각각에 대해 생성함으로써, N-1개의 제2 시퀀스들을 생성하는 단계, 상기 N개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 N-1개의 제2 시퀀스들을 하나씩 매칭시키는 단계 및 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 단계를 포함할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 제1 시퀀스를 생성하는 단계는 상기
Figure 112016109688003-pat00141
에 포함되어 있는
Figure 112016109688003-pat00142
으로 표현되는 원소들 중 상기 상대 차집합 D에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제1 시퀀스를 생성하고, 상기 N-1개의 제2 시퀀스들을 생성하는 단계는 상기 N-1개의 우코셋들 각각에 대해, 상기
Figure 112016109688003-pat00143
에 포함되어 있는
Figure 112016109688003-pat00144
으로 표현되는 원소들 중 상기 N-1개의 우코셋들 각각에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 N-1개의 우코셋들 각각에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제2 시퀀스들을 N-1개 생성할 수 있다.
또한, 본 발명의 일실시예에 따르면, 단계(S320)에서는 상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 단계를 더 포함할 수 있다.
이때, 상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 단계는 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 단계는 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 q개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 q개의 메시지들을 분산 할당할 수 있다.
또한, 본 발명의 일실시예에 따르면, 메시지의 최적 분산 저장이 가능한 데이터 저장 방법은 상기 N개의 데이터 저장소들에 상기 N개의 메시지들이 q개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드 명령이 인가되면, 상기 로드 명령에 기초하여 상기 N개의 데이터 저장소들 중 q개의 데이터 저장소들을 랜덤하게 선택하고, 상기 q개의 데이터 저장소들 각각으로부터 상기 q개의 데이터 저장소들 각각에 저장되어 있는 q개의 저장 메시지들을 추출하는 단계 및 상기 q개의 데이터 저장소들 각각으로부터 q개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 단계를 더 포함할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 MDS 코드이고, 상기 로드하는 단계는 상기 q개의 데이터 저장소들 각각으로부터 q개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드할 수 있다.
이상, 도 3을 참조하여 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법에 대해 설명하였다. 여기서, 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법은 도 1과 도 2를 이용하여 설명한 메시지의 최적 분산 저장이 가능한 데이터 저장 장치(110)의 동작에 대한 구성과 대응될 수 있으므로, 이에 대한 보다 상세한 설명은 생략하기로 한다.
본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법은 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다.
또한, 본 발명의 일실시예에 따른 메시지의 최적 분산 저장이 가능한 데이터 저장 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110: 메시지의 최적 분산 저장이 가능한 데이터 저장 장치
111: 분산 그룹 생성부 112: 메시지 분산 할당부
113: 데이터 저장부 114: 제1 시퀀스 생성부
115: 제2 시퀀스 생성부 116: 시퀀스 매칭부
117: 할당부 118: 인덱스 할당부
119: 저장 메시지 추출부 120: 데이터 로드부
101, 102, 103: N개의 데이터 저장소들

Claims (16)

  1. N - N은 N=q2-1의 조건을 만족하는 자연수이고, q는 임의의 소수 p에 대해서 q=pe을 만족하는 자연수이며, e는 1이상의 자연수임 - 개의 메시지들에 대해 N개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 N개의 데이터 저장소들에 대응하는 N개의 메시지 분산 그룹들을 생성하는 분산 그룹 생성부;
    상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당 - 상기 N개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 메시지 분산 할당부; 및
    상기 N개의 메시지 분산 그룹들 각각에 할당되어 있는 q개의 메시지들을 상기 N개의 메시지 분산 그룹들 별로, 상기 N개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 데이터 저장부
    를 포함하고,
    상기 메시지 분산 할당부는
    원소의 개수가 q개인 유한체(finite field)를 나타내는 Fq에 상대적인
    Figure 112018027063089-pat00145
    -
    Figure 112018027063089-pat00146
    에는
    Figure 112018027063089-pat00147
    으로 표현되는 원소들이 포함되어 있고,
    Figure 112018027063089-pat00148
    는 상기
    Figure 112018027063089-pat00149
    에 포함되어 있는 0이 아닌 모든 원소를
    Figure 112018027063089-pat00150
    으로 나타낼 수 있는 원시원(primitive element)임 - 의 상대 차집합 D - 상기 상대 차집합 D는 (q+1, q-1, q, 1)의 파라미터를 가짐 - 를 연산하고, 상기 상대 차집합 D에 포함되는 q개의 원소들에 기초하여 상기
    Figure 112018027063089-pat00151
    에 포함되어 있는
    Figure 112018027063089-pat00152
    으로 표현되는 원소들에 대해
    Figure 112018027063089-pat00153
    부터
    Figure 112018027063089-pat00154
    순으로 "1"과 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성하는 제1 시퀀스 생성부;
    상기
    Figure 112018027063089-pat00155
    에 포함되어 있는
    Figure 112018027063089-pat00156
    으로 표현되는 모든 원소들에 대해서 상기 상대 차집합 D의 우코셋(right coset)을 연산하여 N-1개의 우코셋들을 생성한 후, 상기 N-1개의 우코셋들 각각에 포함되어 있는 q개의 원소들을 기초로 상기
    Figure 112018027063089-pat00157
    에 포함되어 있는
    Figure 112018027063089-pat00158
    으로 표현되는 원소들에 대해
    Figure 112018027063089-pat00159
    부터
    Figure 112018027063089-pat00160
    순으로 "1"과 "0"의 코드 값을 할당하여 N개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 상기 N-1개의 우코셋들 각각에 대해 생성함으로써, N-1개의 제2 시퀀스들을 생성하는 제2 시퀀스 생성부;
    상기 N개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 N-1개의 제2 시퀀스들을 하나씩 매칭시키는 시퀀스 매칭부; 및
    상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 할당부
    를 포함하는 메시지의 최적 분산 저장이 가능한 데이터 저장 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 시퀀스 생성부는
    상기
    Figure 112018027063089-pat00161
    에 포함되어 있는
    Figure 112018027063089-pat00162
    으로 표현되는 원소들 중 상기 상대 차집합 D에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제1 시퀀스를 생성하고,
    상기 제2 시퀀스 생성부는
    상기 N-1개의 우코셋들 각각에 대해, 상기
    Figure 112018027063089-pat00163
    에 포함되어 있는
    Figure 112018027063089-pat00164
    으로 표현되는 원소들 중 상기 N-1개의 우코셋들 각각에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 N-1개의 우코셋들 각각에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제2 시퀀스들을 N-1개 생성하는 메시지의 최적 분산 저장이 가능한 데이터 저장 장치.
  4. 제1항에 있어서,
    상기 메시지 분산 할당부는
    상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 인덱스 할당부
    를 더 포함하고,
    상기 할당부는
    상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 메시지의 최적 분산 저장이 가능한 데이터 저장 장치.
  5. 제4항에 있어서,
    상기 할당부는
    상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 q개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 q개의 메시지들을 분산 할당하는 메시지의 최적 분산 저장이 가능한 데이터 저장 장치.
  6. 제5항에 있어서,
    상기 N개의 데이터 저장소들에 상기 N개의 메시지들이 q개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드(load) 명령이 인가되면, 상기 로드 명령에 기초하여 상기 N개의 데이터 저장소들 중 q개의 데이터 저장소들을 랜덤하게 선택하고, 상기 q개의 데이터 저장소들 각각으로부터 상기 q개의 데이터 저장소들 각각에 저장되어 있는 q개의 저장 메시지들을 추출하는 저장 메시지 추출부; 및
    상기 q개의 데이터 저장소들 각각으로부터 q개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 데이터 로드부
    를 더 포함하는 메시지의 최적 분산 저장이 가능한 데이터 저장 장치.
  7. 제6항에 있어서,
    상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 최대 거리 분리 가능(Maximum Distance Separable: MDS) 코드이고,
    상기 데이터 로드부는
    상기 q개의 데이터 저장소들 각각으로부터 q개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 메시지의 최적 분산 저장이 가능한 데이터 저장 장치.
  8. 컴퓨터에 의해 수행되는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법에 있어서,
    N - N은 N=q2-1의 조건을 만족하는 자연수이고, q는 임의의 소수 p에 대해서 q=pe을 만족하는 자연수이며, e는 1이상의 자연수임 - 개의 메시지들에 대해 N개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 N개의 데이터 저장소들에 대응하는 N개의 메시지 분산 그룹들을 생성하는 단계;
    상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당 - 상기 N개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 단계; 및
    상기 N개의 메시지 분산 그룹들 각각에 할당되어 있는 q개의 메시지들을 상기 N개의 메시지 분산 그룹들 별로, 상기 N개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 단계
    를 포함하고,
    상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당하는 단계는
    원소의 개수가 q개인 유한체(finite field)를 나타내는 Fq에 상대적인
    Figure 112018027063089-pat00165
    -
    Figure 112018027063089-pat00166
    에는
    Figure 112018027063089-pat00167
    으로 표현되는 원소들이 포함되어 있고,
    Figure 112018027063089-pat00168
    는 상기
    Figure 112018027063089-pat00169
    에 포함되어 있는 0이 아닌 모든 원소를
    Figure 112018027063089-pat00170
    으로 나타낼 수 있는 원시원(primitive element)임 - 의 상대 차집합 D - 상기 상대 차집합 D는 (q+1, q-1, q, 1)의 파라미터를 가짐 - 를 연산하고, 상기 상대 차집합 D에 포함되는 q개의 원소들에 기초하여 상기
    Figure 112018027063089-pat00171
    에 포함되어 있는
    Figure 112018027063089-pat00172
    으로 표현되는 원소들에 대해
    Figure 112018027063089-pat00173
    부터
    Figure 112018027063089-pat00174
    순으로 "1"과 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성하는 단계;
    상기
    Figure 112018027063089-pat00175
    에 포함되어 있는
    Figure 112018027063089-pat00176
    으로 표현되는 모든 원소들에 대해서 상기 상대 차집합 D의 우코셋(right coset)을 연산하여 N-1개의 우코셋들을 생성한 후, 상기 N-1개의 우코셋들 각각에 포함되어 있는 q개의 원소들을 기초로 상기
    Figure 112018027063089-pat00177
    에 포함되어 있는
    Figure 112018027063089-pat00178
    으로 표현되는 원소들에 대해
    Figure 112018027063089-pat00179
    부터
    Figure 112018027063089-pat00180
    순으로 "1"과 "0"의 코드 값을 할당하여 N개의 "1"과 "0"의 코드 값으로 구성된 시퀀스를 상기 N-1개의 우코셋들 각각에 대해 생성함으로써, N-1개의 제2 시퀀스들을 생성하는 단계;
    상기 N개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 N-1개의 제2 시퀀스들을 하나씩 매칭시키는 단계; 및
    상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 단계
    를 포함하는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법.
  9. 삭제
  10. 제8항에 있어서,
    상기 제1 시퀀스를 생성하는 단계는
    상기
    Figure 112018027063089-pat00181
    에 포함되어 있는
    Figure 112018027063089-pat00182
    으로 표현되는 원소들 중 상기 상대 차집합 D에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 상대 차집합 D에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제1 시퀀스를 생성하고,
    상기 N-1개의 제2 시퀀스들을 생성하는 단계는
    상기 N-1개의 우코셋들 각각에 대해, 상기
    Figure 112018027063089-pat00183
    에 포함되어 있는
    Figure 112018027063089-pat00184
    으로 표현되는 원소들 중 상기 N-1개의 우코셋들 각각에 포함되는 q개의 원소들에 대해 "1"의 코드 값을 할당하고, 상기 N-1개의 우코셋들 각각에 포함되지 않는 나머지 원소들에 대해 "0"의 코드 값을 할당함으로써, N개의 "1"과 "0"의 코드 값으로 구성된 상기 제2 시퀀스들을 N-1개 생성하는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법.
  11. 제8항에 있어서,
    상기 N개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 q개씩 분산 할당하는 단계는
    상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 단계
    를 더 포함하고,
    상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 단계는
    상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법.
  12. 제11항에 있어서,
    상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 q개씩 분산 할당하는 단계는
    상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 q개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 N개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 q개의 메시지들을 분산 할당하는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법.
  13. 제12항에 있어서,
    상기 N개의 데이터 저장소들에 상기 N개의 메시지들이 q개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드(load) 명령이 인가되면, 상기 로드 명령에 기초하여 상기 N개의 데이터 저장소들 중 q개의 데이터 저장소들을 랜덤하게 선택하고, 상기 q개의 데이터 저장소들 각각으로부터 상기 q개의 데이터 저장소들 각각에 저장되어 있는 q개의 저장 메시지들을 추출하는 단계; 및
    상기 q개의 데이터 저장소들 각각으로부터 q개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 단계
    를 더 포함하는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법.
  14. 제13항에 있어서,
    상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 최대 거리 분리 가능(Maximum Distance Separable: MDS) 코드이고,
    상기 로드하는 단계는
    상기 q개의 데이터 저장소들 각각으로부터 q개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 메시지의 최적 분산 저장이 가능한 데이터 저장 방법.
  15. 제8항, 제10항, 제11항, 제12항, 제13항 또는 제14항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  16. 제8항, 제10항, 제11항, 제12항, 제13항 또는 제14항 중 어느 한 항의 방법을 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램.
KR1020160149020A 2016-11-09 2016-11-09 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법 KR101873878B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160149020A KR101873878B1 (ko) 2016-11-09 2016-11-09 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160149020A KR101873878B1 (ko) 2016-11-09 2016-11-09 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180051998A KR20180051998A (ko) 2018-05-17
KR101873878B1 true KR101873878B1 (ko) 2018-07-03

Family

ID=62486294

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160149020A KR101873878B1 (ko) 2016-11-09 2016-11-09 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101873878B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200104034A (ko) * 2019-02-26 2020-09-03 전남대학교산학협력단 분할 반복 부호를 이용한 데이터 분산 저장 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460062B1 (ko) * 2013-06-21 2014-11-10 한국항공대학교산학협력단 동영상 파일을 하둡 분산 파일 시스템에 분산 저장하는 시스템, 동영상 맵리듀스 시스템 및 그 제공방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219778B2 (en) * 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460062B1 (ko) * 2013-06-21 2014-11-10 한국항공대학교산학협력단 동영상 파일을 하둡 분산 파일 시스템에 분산 저장하는 시스템, 동영상 맵리듀스 시스템 및 그 제공방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김정현 외 4명, 분산 저장 시스템을 위한 완전그래프 기반 부분접속복구 부호, 한국통신학회 2015년 하계종합학술발표회, 2015.06.
박호성 외 1명, 다양한 파라미터를 가지는 분산 저장 부호의 조합론적 설계, 2016년도 한국통신학회 하계종합학술발표회 논문집(Vol.60), 2016.6.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200104034A (ko) * 2019-02-26 2020-09-03 전남대학교산학협력단 분할 반복 부호를 이용한 데이터 분산 저장 장치 및 방법
KR102197993B1 (ko) 2019-02-26 2021-01-04 전남대학교산학협력단 분할 반복 부호를 이용한 데이터 분산 저장 장치 및 방법

Also Published As

Publication number Publication date
KR20180051998A (ko) 2018-05-17

Similar Documents

Publication Publication Date Title
US10747780B2 (en) Blockchain-based data processing method and device
CN109034809B (zh) 区块链的生成方法、装置、区块链节点及存储介质
US9195392B2 (en) Distributed storage method, apparatus, and system
US8811611B2 (en) Encryption/decryption of digital data using related, but independent keys
EP2787446A1 (en) Distributed storage method, device and system
KR102017739B1 (ko) 블록체인 시스템 및 블록체인 생성 방법
CN110930145B (zh) 冷钱包生成方法、交易信息处理方法、设备及存储介质
CN103279532A (zh) 多集合元素去重并标识所属集合的过滤系统及其方法
KR20140093535A (ko) 대용량 이벤트 파일에서 시간 관계를 병렬 탐사하기 위한 방법
US9158808B2 (en) Object arrangement apparatus for determining object destination, object arranging method, and computer program thereof
US9292594B2 (en) Harvesting relevancy data, including dynamic relevancy agent based on underlying grouped and differentiated files
CN105005624A (zh) 一种生成索引文档id的方法及装置
CN108241531A (zh) 一种在集群中为虚拟机分配资源的方法和装置
KR101873879B1 (ko) 2차원 원소를 갖는 군으로부터 생성된 상대 차집합을 활용한 데이터 분산 저장 장치 및 방법
KR101428649B1 (ko) 맵 리듀스 기반의 대용량 개인정보 암호화 시스템 및 그의 동작 방법
KR101873878B1 (ko) 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법
KR102306676B1 (ko) 스토리지 디바이스용 호스트 키 생성 방법 및 시스템
CN108243207A (zh) 一种网络云盘的数据存储方法
KR101893566B1 (ko) 순환 차족을 활용한 데이터 분산 저장 장치 및 방법
KR102197993B1 (ko) 분할 반복 부호를 이용한 데이터 분산 저장 장치 및 방법
KR101738415B1 (ko) 메시지 분산 저장이 가능한 데이터 저장 장치 및 방법
CN108984780B (zh) 基于支持重复键值树数据结构管理磁盘数据的方法和装置
CN112181974A (zh) 标识信息分配方法、系统及存储设备
CN106293993A (zh) 避免重复处理文件的方法及装置
JP5410155B2 (ja) データ分割システム及びデータ分割方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant