KR101893566B1 - Data distribution storage apparatus and method using cyclic difference family - Google Patents
Data distribution storage apparatus and method using cyclic difference family Download PDFInfo
- Publication number
- KR101893566B1 KR101893566B1 KR1020160171272A KR20160171272A KR101893566B1 KR 101893566 B1 KR101893566 B1 KR 101893566B1 KR 1020160171272 A KR1020160171272 A KR 1020160171272A KR 20160171272 A KR20160171272 A KR 20160171272A KR 101893566 B1 KR101893566 B1 KR 101893566B1
- Authority
- KR
- South Korea
- Prior art keywords
- messages
- data
- message distribution
- sequence
- distribution groups
- Prior art date
Links
Images
Classifications
-
- G06F17/30194—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
순환 차족(Cyclic Difference Family)을 활용한 데이터 분산 저장 장치 및 방법이 개시된다. 본 발명은 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법을 제공하고자 한다.Disclosed is a data distribution storage apparatus and method utilizing a cyclic difference family. A method for distributing a plurality of messages to a plurality of data stores, the method comprising: distributing the plurality of messages using only a minimum of data stores, selecting only a minimum data store among the data stores, So that the plurality of messages can be loaded so as to prevent data loss for the plurality of messages and to enable fast data loading from the data stores.
Description
본 발명은 데이터의 손실이 발생하였을 때, 데이터의 복구가 용이하도록 다수의 데이터 저장소들에 다수의 메시지들을 분산해서 저장하는 기법에 대한 기술과 관련된다.The present invention relates to a technique for distributing and storing a plurality of messages in a plurality of data stores so as to facilitate recovery of data when data loss occurs.
최근, 인터넷의 보급이 활발하게 이루어짐에 따라, 다양한 인터넷 서비스 제공 업체들이 등장하고 있다. 이러한 인터넷 서비스 제공 업체들은 이메일 서비스를 제공하거나, 블로그, 카페, 클라우드 데이터 저장 서비스 등과 같은 다양한 서비스들을 제공하고 있다.Recently, as the spread of the Internet becomes active, a variety of Internet service providers are emerging. These Internet service providers provide e-mail services, or provide various services such as blogs, cafes, and cloud data storage services.
특히, 최근에는 소셜 네트워크 서비스의 인기가 급증함에 따라, 소셜 네트워크 서비스를 제공하는 인터넷 서비스 제공 업체들도 매우 많이 증가하고 있다.Especially, as the popularity of social network services has increased recently, a lot of Internet service providers providing social network services are also increasing in number.
이러한 인터넷 서비스 제공 업체들은 이메일 서비스, 블로그, 카페, 클라우드 서비스, 소셜 네트워크 서비스 등을 제공하기 위해 다수의 클라이언트 단말들로부터 업로드되는 대용량의 데이터들을 자체의 데이터 저장소에 저장을 해야하는데, 이러한 데이터들이 데이터 저장소 내에서 손실되게 되면, 고객들에게 정상적인 서비스를 제공하지 못하기 때문에 데이터의 손실을 방지하기 위한 다양한 노력을 하고 있다.These Internet service providers need to store a large amount of data uploaded from a large number of client terminals in their own data storage to provide an e-mail service, a blog, a cafe, a cloud service, a social network service, If it is lost in the store, it is trying to prevent loss of data because it does not provide normal service to customers.
그러한 노력의 일환 중 하나로 데이터 저장소에 저장되어야 하는 사용자 메시지를 여러 데이터 저장소들에 백업을 해두는 방식이 도입되고 있다. 이러한 데이터 백업 방식은 원본 메시지가 손실되더라도 백업을 해둔 메시지를 이용하여 상기 원본 메시지를 대체할 수 있다는 점에서 데이터 손실에 대처하기 위한 가장 이상적인 방법 중 하나이다.One such effort is introducing a way to back up user messages that need to be stored in a data store to multiple data stores. Such a data backup method is one of the most ideal methods for coping with data loss in that the original message can be replaced by using a backup message even if the original message is lost.
이렇게, 하나의 원본 메시지를 복수의 데이터 저장소들에 여러 번 저장을 해두게 되면, 상기 원본 메시지에 대한 데이터 로드 명령이 인가될 때, 상기 복수의 데이터 저장소들 중 가장 동작 속도가 빠른 임의의 데이터 저장소로부터 상기 원본 메시지에 대응하는 메시지를 바로 로드하면 되기 때문에, 하나의 데이터 저장소에 원본 메시지를 저장하는 방식보다 데이터 로드에 있어서도 빠른 속도를 제공할 수 있다.In this way, when one original message is stored in a plurality of data stores at a plurality of times, when a data load command for the original message is applied, Since the message corresponding to the original message is immediately loaded from the data storage, it is possible to provide a faster speed of data loading than a method of storing the original message in one data storage.
하지만, 기존의 데이터 백업 방식은 단순히 원본 메시지에 대한 복사 메시지를 복수의 데이터 저장소들에 분산해서 저장하는 방식만을 도입하고 있어서, 다수의 메시지들을 데이터 저장소에 저장해야 하는 인터넷 서비스 제공 업체들의 입장에서는 상기 다수의 메시지들 각각에 대한 복사 메시지들을 생성해서 각 데이터 저장소들에 분산 저장해야 하기 때문에 많은 데이터 저장 용량이 필요하다는 문제가 발생할 수 있다.However, in the existing data backup method, only a method of distributing a copy message for an original message to a plurality of data stores is adopted, and therefore, from the viewpoint of Internet service providers who need to store a large number of messages in a data store, A problem may arise in that a large amount of data storage capacity is required because copy messages for each of a plurality of messages are generated and distributedly stored in the respective data stores.
따라서, 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 모두 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법에 대한 연구가 필요하다.Accordingly, in a method of distributing a plurality of messages to a plurality of data stores, a method of distributing a plurality of messages using only a minimum number of data stores and selecting and accessing only a minimum data store among the data stores There is a need for research on a technique for preventing data loss for the plurality of messages and enabling quick data loading from the data stores by loading all of the plurality of messages.
본 발명은 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법을 제공하고자 한다.A method for distributing a plurality of messages to a plurality of data stores, the method comprising: distributing the plurality of messages using only a minimum of data stores, selecting only a minimum data store among the data stores, So that the plurality of messages can be loaded so as to prevent data loss for the plurality of messages and to enable fast data loading from the data stores.
본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 장치는 N - N은 N=tv의 조건을 만족하는 자연수이고, v는 v=k(k-1)t+1의 조건을 만족하는 자연수이며, k는 2이상의 자연수이고, t는 1이상의 자연수임 - 개의 메시지들에 대해 v개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 v개의 데이터 저장소들에 대응하는 v개의 메시지 분산 그룹들을 생성하는 분산 그룹 생성부, 상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk - tk는 t와 k의 곱을 의미함 - 개씩 분산 할당 - 상기 v개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 메시지 분산 할당부 및 상기 v개의 메시지 분산 그룹들 각각에 할당되어 있는 tk개의 메시지들을 상기 v개의 메시지 분산 그룹들 별로, 상기 v개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 데이터 저장부를 포함한다.In the data distributed storage apparatus using the circulation system according to the embodiment of the present invention, N - N is a natural number satisfying the condition of N = tv, and v satisfies the condition of v = k (k-1) t + 1 , K is a natural number greater than or equal to 2, t is a natural number greater than or equal to 1, - distributed messages to v data stores for the messages are applied, v message distributions corresponding to the v data stores Tk - tk is a product of t and k - distributed allocation of v messages, - distributed allocation of v message distribution groups, The message distribution schemes and the t message messages allocated to each of the v message distribution groups may be transmitted to the v data stores And a data storage unit for separately storing the data in the data repository corresponding to each message distribution group.
또한, 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법은 N - N은 N=tv의 조건을 만족하는 자연수이고, v는 v=k(k-1)t+1의 조건을 만족하는 자연수이며, k는 2이상의 자연수이고, t는 1이상의 자연수임 - 개의 메시지들에 대해 v개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 v개의 데이터 저장소들에 대응하는 v개의 메시지 분산 그룹들을 생성하는 단계, 상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk - tk는 t와 k의 곱을 의미함 - 개씩 분산 할당 - 상기 v개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 단계, 상기 v개의 메시지 분산 그룹들 각각에 할당되어 있는 tk개의 메시지들을 상기 v개의 메시지 분산 그룹들 별로, 상기 v개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 단계를 포함한다.In the data distribution storage method using the cyclic shift according to an embodiment of the present invention, N - N is a natural number satisfying the condition of N = tv, and v is a condition of v = k (k-1) t + 1 , K is a natural number equal to or greater than 2, and t is a natural number equal to or greater than 1. When a distributed storage command is applied to v data stores for messages, v data corresponding to the v data stores Tk - tk means a product of t and k - distributedly allocated - distributedly distributed among the v message distribution groups - message distribution groups - Messages may be duplicated to each other, transmitting tk messages allocated to each of the v message distribution groups to the message distribution groups of the v data stores, In a data repository corresponding to < RTI ID = 0.0 > a < / RTI >
본 발명은 다수의 메시지들을 여러 데이터 저장소들에 분산 저장하는 방법에 있어서, 최소한의 데이터 저장소들만을 활용해서 상기 다수의 메시지들을 분산 저장한 후 상기 데이터 저장소들 중 최소한의 데이터 저장소들만을 선택하여 액세스하더라도 상기 다수의 메시지들이 로드될 수 있도록 하여 상기 다수의 메시지들에 대한 데이터 손실에 대비함과 동시에 데이터 저장소들로부터 빠른 데이터 로드가 가능하도록 하는 기법을 제공할 수 있다.A method for distributing a plurality of messages to a plurality of data stores, the method comprising: distributing the plurality of messages using only a minimum of data stores, selecting only a minimum data store among the data stores, A plurality of messages can be loaded so as to prevent data loss for the plurality of messages and to provide a technique for enabling fast data loading from data stores.
도 1은 본 발명의 일실시예에 따른 순환 차족(Cyclic Difference Family)을 활용한 데이터 분산 저장 장치의 구조를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 장치의 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법을 도시한 순서도이다.1 is a diagram illustrating a structure of a data distribution storage apparatus utilizing a cyclic difference family according to an embodiment of the present invention.
FIG. 2 is a view for explaining the operation of a data distribution storage apparatus using a cyclic shift according to an embodiment of the present invention.
FIG. 3 is a flowchart illustrating a data distribution storage method using a cyclic shift according to an embodiment of the present invention.
이하에서는 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명하기로 한다. 이러한 설명은 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였으며, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 본 명세서 상에서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 사람에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings. It is to be understood that the description is not intended to limit the invention to the specific embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals in the drawings are used for similar elements and, unless otherwise defined, all terms used in the specification, including technical and scientific terms, are to be construed in a manner that is familiar to those skilled in the art. It has the same meaning as commonly understood by those who have it.
도 1은 본 발명의 일실시예에 따른 순환 차족(Cyclic Difference Family)을 활용한 데이터 분산 저장 장치의 구조를 도시한 도면이다.1 is a diagram illustrating a structure of a data distribution storage apparatus utilizing a cyclic difference family according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 장치(110)는 분산 그룹 생성부(111), 메시지 분산 할당부(112) 및 데이터 저장부(113)를 포함한다.Referring to FIG. 1, a data
분산 그룹 생성부(111)는 N개의 메시지들에 대해 v개의 데이터 저장소들(101, 102, 103)로의 분산 저장 명령이 인가되면, v개의 데이터 저장소들(101, 102, 103)에 대응하는 v개의 메시지 분산 그룹들을 생성한다.The distribution
여기서, N은 N=tv의 조건을 만족하는 자연수이고, v는 v=k(k-1)t+1의 조건을 만족하는 자연수이며, k는 2이상의 자연수이고, t는 1이상의 자연수이다.Here, N is a natural number satisfying the condition of N = tv, v is a natural number satisfying the condition of v = k (k-1) t + 1, k is a natural number of 2 or more, and t is a natural number of 1 or more.
그리고, 메시지란 v개의 데이터 저장소들(101, 102, 103)에 저장될 일종의 데이터 심볼(symbol)을 의미하는 것으로 상기 N개의 메시지들은 각각 서로 다른 데이터 심볼이다.A message is a kind of data symbol to be stored in
메시지 분산 할당부(112)는 상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk(tk는 t와 k의 곱을 의미함)개씩 분산 할당한다.The message
이때, 상기 v개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있다. At this time, messages distributedly allocated to the v message distribution groups may overlap each other.
데이터 저장부(113)는 상기 v개의 메시지 분산 그룹들 각각에 할당되어 있는 tk개의 메시지들을 상기 v개의 메시지 분산 그룹들 별로, v개의 데이터 저장소들(101, 102, 103) 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장한다.The
이때, 본 발명의 일실시예에 따르면, 메시지 분산 할당부(112)는 순환 차족 확인부(114), 제1 시퀀스 생성부(115), 제2 시퀀스 생성부(116), 시퀀스 매칭부(117) 및 할당부(118)를 포함할 수 있다.In this case, according to an embodiment of the present invention, the message
순환 차족 확인부(114)는 "0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv(상기 Zv에 포함되어 있는 원소들의 개수는 v개임)에 대한 k개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 t개의 부분 집합들(상기 t개의 부분 집합들의 모임은 (v, k, 1)의 파라미터를 갖는 순환 차족으로 정의됨)을 확인한다.The cyclic
제1 시퀀스 생성부(115)는 상기 t개의 부분 집합들 각각에 대해서, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들에 기초하여 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들에 대해 "0"부터 "v-1" 순으로 "1"과 "0"의 코드 값을 할당함으로써, v개의 "1"과 "0"의 코드 값으로 구성된 t개의 부분 시퀀스들을 생성하고, 상기 t개의 부분 시퀀스들을 조합하여 총 N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스(N=tv이며, 상기 t개의 부분 집합들 각각에 대해서 v개씩 "1"과 "0"의 코드 값을 할당함으로써 생성한 상기 t개의 부분 시퀀스들을 조합하여 상기 제1 시퀀스를 생성하였으므로, 상기 제1 시퀀스를 구성하는 "1"과 "0"의 코드 값은 총 N개가 됨)를 생성한다.The
이때, 제1 시퀀스 생성부(115)는 상기 t개의 부분 집합들 각각에 대해서, 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들 중 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당함으로써, 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들을 생성할 수 있다.At this time, the first
그리고, 제2 시퀀스 생성부(116)는 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들 각각에 대해 선정된(predetermined) 방향으로 순환시프트(cyclic shift) 연산을 v-1회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 상기 t개의 부분 시퀀스들을 조합하여 제2 시퀀스를 생성함으로써, 총 v-1개의 제2 시퀀스들을 생성한다.The
여기서, 순환 차족(Cyclic Difference Family)에 대해 설명하면 다음과 같다. Here, the Cyclic Difference Family will be described as follows.
"0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv가 있을 때, 상기 Zv에 대한 k개의 원소를 갖는 복수의 부분 집합들을 라고 하면, 상기 복수의 부분 집합들 Bi 중, 각 부분 집합에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 λ개의 원소와 일치하는 것으로 연산되는 부분 집합들의 모임을 (v, k, λ)의 파라미터를 갖는 순환 차족이라고 한다.When there is Z v which is an aggregate containing integers from "0" to "v-1" as elements, a plurality of subsets having k elements for Z v , Each of all the differences between two different elements among the k elements included in each subset among the plurality of subsets B i is different from each other in the elements included in the Z v except for "0" A collection of subsets that are calculated to match the other λ elements is called a circles group with parameters of (v, k, λ).
여기서, 상기 복수의 부분 집합들 Bi 각각에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들을 D라고 하는 경우, 상기 D는 하기의 수학식 1에 따라 연산된다. 만약, 상기 서로 다른 두 원소 간의 차가 음수 값이 되는 경우, 상기 서로 다른 두 원소 간의 차는 하기의 수학식 1에 따라 상기 음수 값에 대해 v로 나눈 나머지 값이 될 수 있다.Here, if all the differences between two different elements among the k elements included in each of the plurality of subsets B i are denoted by D, D is calculated according to the following equation (1). If the difference between the two different elements is a negative value, the difference between the two different elements may be a residual value obtained by dividing the negative value by v according to the following equation (1).
이때, (v, k, 1)의 파라미터를 갖는 순환 차족이란 "0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv에 대한 k개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 k개의 원소들 중에서 상기 수학식 1에 따라 연산되는 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 부분 집합들의 모임을 (v, k, 1)의 파라미터를 갖는 순환 차족이라 정의할 수 있다.At this time, the cyclic shift having the parameters of (v, k, 1) means a plurality of subsets having k elements for Z v , which is an aggregate containing integers from "0" to "v- wherein, except for "0" in the element that is included in which the Z v all cars each between two other elements that are calculated according to the equation (1) from among the k number of elements included in each of the plurality of the subset A collection of subsets that are found to match only one different element can be defined as a circle with parameters of (v, k, 1).
이때, v가 "v=k(k-1)t+1"의 조건을 만족한다고 하는 경우, (v, k, 1)의 파라미터를 갖는 순환 차족에 포함되는 부분 집합들은 총 t개 존재할 수 있다.At this time, when v satisfies the condition of "v = k (k-1) t + 1", there may be a total of t subsets included in the circles having the parameters of (v, k, 1) .
예컨대, t=2, k=3, v=13이라고 가정하면, "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12"를 원소로 포함하고 있는 집합인 Zv가 있을 때, 3개의 원소를 포함하고 있는 Zv의 부분 집합은 복수개가 존재할 수 있다. 이러한 복수의 부분 집합들은 각각 3개의 원소를 포함하고 있기 때문에 각 부분 집합에 포함되어 있는 서로 다른 두 원소 간의 차는 총 6개가 존재할 수 있고, 이러한 6개의 두 원소 간의 차가 상기 Zv에 포함되어 있는 "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12"이라는 정수 중 "0"을 제외한 오직 1개의 정수와만 일치하는 것으로 확인되는 부분 집합들의 모임을 (13, 3, 1)의 파라미터를 갖는 순환 차족이라 정의할 수 있다.For example, suppose that t = 2, k = 3, v = 13, and the element containing "0,1,2,3,4,5,6,7,8,9,10,11,12" When there is a set Z v , there may be a plurality of subsets of Z v containing three elements. Since the plurality of subsets such comprise three elements, each difference between the two different elements included in each subset may be present in a total of six, with the difference between these six two elements included in the Z v " A set of subsets that are found to match only one integer except for "0" among 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, (13, 3, 1).
관련해서, (13, 3, 1)의 파라미터를 갖는 순환 차족에 포함되는 부분 집합은 "{0, 1, 4}", "{0, 2, 7}"가 존재할 수 있다. 여기서, "{0, 1, 4}"의 경우 서로 다른 두 원소 간의 차는 상기 수학식 1에 따라 연산하게 되면 "1, 3, 4, 9, 10, 12"가 나올 수 있고, 이때, "1, 3, 4, 9, 10, 12" 각각은 Zv에 포함되어 있는 정수들 중 1개의 정수와만 일치하기 때문에 "{0, 1, 4}"는 (13, 3, 1)의 파라미터를 갖는 순환 차족 중 하나에 포함되는 부분 집합이 될 수 있다. 그리고, "{0, 2, 7}"의 경우 서로 다른 두 원소 간의 차는 상기 수학식 1에 따라 연산하게 되면 "2, 5, 6, 7, 8, 11"이 나올 수 있고, 이때, "2, 5, 6, 7, 8, 11" 각각은 Zv에 포함되어 있는 정수들 중 1개의 정수와만 일치하기 때문에 "{0, 2, 7}"도 (13, 3, 1)의 파라미터를 갖는 순환 차족 중 하나에 포함되는 부분 집합이 될 수 있다.In this regard, there may be a subset contained in the circles having parameters of (13, 3, 1) "{0, 1, 4}", "{0, 2, 7}". In the case of "{0,1,4}", "1, 3, 4, 9, 10, 12" can be obtained by calculating the difference between two different elements according to Equation 1, , {3, 4, 9, 10, 12} each correspond only to one of the constants contained in Z v , so "{0, 1, 4} Or a subset included in one of the circles. In the case of "{0, 2, 7}", the difference between two different elements may be "2, 5, 6, 7, 8, 11" , {5, 6, 7, 8, 11} each correspond only to one of the constants contained in Z v , so "{0, 2, 7} Or a subset included in one of the circles.
이렇게, v가 "v=k(k-1)t+1"의 조건을 만족한다고 하는 경우, (v, k, 1)의 파라미터를 갖는 순환 차족에 포함되는 t개의 부분 집합들이 있을 때, 상기 t개의 부분 집합들 각각에 대해서, 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들 중 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당하게 되면, v개의 "1"과 "0"의 코드 값으로 구성된 시퀀스들을 t개 획득할 수 있다.When v satisfies the condition of "v = k (k-1) t + 1 ", when there are t subsets included in the circles having the parameters of (v, k, with respect to t of a subset each, of the integer of the integer from "0" contained in the Z v to "v-1 'matching the k-element that is included in each of the t partial set Quot; 0 "is assigned to the remaining integers that do not match the k elements contained in each of the t subsets, v" 1 "and" 0 "code values.
이때, 상기 t개의 시퀀스들을 t개의 부분 시퀀스들이라고 하고, 상기 t개의 부분 시퀀스들을 일렬로 나열하여 서로 조합하게 되면, 총 N개(N=tv임)의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 획득할 수 있다.If the t sequences are referred to as t partial sequences and the t partial sequences are arranged in a row and combined with each other, a total of N (N = tv) code values of "1" and "0" ≪ / RTI > can be obtained.
그리고, 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들 각각에 대해 선정된 방향으로 순환시프트 연산을 v-1회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 상기 t개의 부분 시퀀스들을 일렬로 나열하여 조합함에 따라 제2 시퀀스를 생성하게 되면, 총 v-1개의 제2 시퀀스들을 추가로 획득할 수 있다.Then, a cyclic shift operation is performed v-1 times in a predetermined direction for each of the t partial sequences composed of the v number of code values of "1" and "0", and each time each cyclic shift operation is performed When the second sequence is generated by arranging and arranging the t partial sequences having completed the cyclic shift operation in a row, a total of v-1 second sequences can be additionally obtained.
이때, 상기 제1 시퀀스와 상기 제2 시퀀스들 내에 존재하는 "1"의 코드 값의 개수는 항상 tk개로 일정하며, v가 "v=k(k-1)t+1"의 조건을 만족한다고 하는 경우, 상기 제1 시퀀스와 상기 제2 시퀀스들 중에서 서로 다른 tk개의 시퀀스들을 랜덤하게 선택한 후 랜덤하게 선택된 tk개의 시퀀스들을 모두 "OR"연산하게 되면, "OR" 연산이 수행된 결과 값에서 존재하는 "1"의 코드 값의 개수는 항상 개 이상이 되고, "0"의 코드 값의 개수는 항상 개 이하가 되는 특징을 가지게 된다.At this time, the number of code values of "1" existing in the first sequence and the second sequence is always constant at tk, and v satisfies the condition of "v = k (k-1) t + , If all the tk sequences randomly selected from among the first sequence and the second sequence are randomly selected and then all the sequences of tk selected randomly are ORed, The number of code values of "1" , And the number of code values of "0" Or less.
예컨대, k=3, t=2라고 가정하고, "v=k(k-1)t+1"라 할 때, v를 13이라고 하면, "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12"를 원소로 포함하고 있는 집합인 Zv에서 (13, 3, 1)의 파라미터를 갖는 순환 차족에 포함되는 부분 집합들은 "{0, 1, 4}", "{0, 2, 7}"이 존재하게 된다.For example, suppose that k = 3 and t = 2 and v is 13, assuming that v = k (k-1) t + 1, then 0,1,2,3,4,5,6 , The subsets contained in the cyclic series with parameters of (13, 3, 1) at Z v , which contain the elements 7, 8, 9, 10, } "And" {0, 2, 7} "exist.
이때, 상기 Zv에 포함되어 있는 "0"부터 "12"까지의 정수들 중 상기 2개의 부분 집합들 "{0, 1, 4}", "{0, 2, 7}" 각각에 포함되어 있는 3개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 2개의 부분 집합들 "{0, 1, 4}", "{0, 2, 7}" 각각에 포함되어 있는 3개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당하게 되면, "1100100000000"과 "1010000100000"이라는 2개의 부분 시퀀스들을 획득할 수 있다.Is included in each of the two subsets "{0, 1, 4}", "{0, 2, 7}" of integers from "0" to "12" included in the Z v Code values of " 1 "are assigned to integers corresponding to the three elements of " {0,1,4} "," {0,1,2,7} "Quot; 0 "is assigned to the remaining integers that do not coincide with the three elements that are present, the two partial sequences" 1100100000000 "and" 1010000100000 "
이때, "1100100000000"과 "1010000100000"이라는 2개의 부분 시퀀스들을 일렬로 나열하여 조합하게 되면, 총 26개의 "1"과 "0"의 코드 값으로 구성된 "11001000000001010000100000"이라는 제1 시퀀스를 획득할 수 있다.At this time, if two partial sequences of "1100100000000" and "1010000100000" are arranged in a line and combined, a first sequence of "11001000000001010000100000" composed of 26 code values of "1" and "0" .
그리고, "1100100000000"과 "1010000100000"이라는 상기 2개의 부분 시퀀스들에 대해 오른쪽 방향으로 순환시프트 연산을 12회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 2개의 부분 시퀀스들을 일렬로 나열하여 조합함에 따라 제2 시퀀스를 생성하게 되면, 총 12개의 제2 시퀀스들을 추가로 획득할 수 있다.The two partial sequences "1100100000000" and "1010000100000" are subjected to a cyclic shift operation 12 times in the right direction, and each time each cyclic shift operation is performed, the two partial sequences having completed the cyclic shift operation are divided into a series , A total of 12 second sequences can be additionally obtained.
관련해서, "1100100000000"과 "1010000100000"이라는 상기 2개의 부분 시퀀스들에 대해 오른쪽 방향으로 1회 순환시프트 연산을 수행하게 되면, "0110010000000"과 "0101000010000"이라는 2개의 추가 부분 시퀀스들을 획득할 수 있고, "0110010000000"과 "0101000010000"이라는 2개의 추가 부분 시퀀스들을 서로 일렬로 나열하여 조합하게 되면, "01100100000000101000010000"이라는 추가 시퀀스를 획득할 수 있다. 이러한 방식으로 2개의 부분 시퀀스들에 대해 오른쪽 방향으로 순환시프트 연산을 총 12번 수행하면서 추가 시퀀스를 획득하게 되면, 순환시프트 연산이 12회 수행되었으므로, 총 12개의 시퀀스들을 추가로 획득할 수 있다.In this regard, if one circular shift operation is performed rightward for the two partial sequences "1100100000000" and "1010000100000", two additional partial sequences "0110010000000" and "0101000010000" can be obtained Quot; 0110010000000 "and" 0101000010000 "are combined and arranged in a line, an additional sequence" 01100100000000101000010000 " In this manner, if a cyclic shift operation is performed 12 times in the right direction with respect to two partial sequences and an additional sequence is obtained, a total of 12 sequences can be obtained since 12 cyclic shift operations are performed.
이러한 방식으로, 시퀀스를 생성하게 되면, 최종적으로 총 13개의 시퀀스들이 생성될 수 있고, 이때, 각 시퀀스들 내에 존재하는 "1"의 코드 값의 개수는 모두 6개로 일정하며, 상기 13개의 시퀀스들 중에서 서로 다른 6개의 시퀀스들을 랜덤하게 선택한 후 랜덤하게 선택된 6개의 시퀀스들을 모두 "OR"연산하게 되면, "OR" 연산이 수행된 결과 값에서 존재하는 "1"의 코드 값의 개수는 항상 21개 이상이 되며, "0"의 코드 값의 개수는 항상 5개 이하가 되는 특징을 가지게 된다.In this way, when a sequence is generated, a total of thirteen sequences can be finally generated, wherein the number of code values of "1" existing in each sequence is constant at six, and the 13 sequences The number of code values of "1" existing in the result of performing the "OR" operation is always 21 , And the number of code values of "0 " is always 5 or less.
지금까지 설명한 순환 차족을 이용한 시퀀스 생성 과정에 따라, 순환 차족 확인부(114)는 N이 N=tv의 조건을 만족하는 자연수이고, v가 v=k(k-1)t+1의 조건을 만족하는 자연수이며, k가 2이상의 자연수이고, t가 1이상의 자연수일 때, "0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv에 대한 k개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 t개의 부분 집합들(상기 t개의 부분 집합들의 모임은 (v, k, 1)의 파라미터를 갖는 순환 차족으로 정의됨)을 확인할 수 있다.According to the above-described sequence generation process using the cyclic shift, the cyclic
이렇게, (v, k, 1)의 파라미터를 갖는 순환 차족에 포함되는 상기 t개의 부분 집합들에 대한 확인이 완료되면, 제1 시퀀스 생성부(115)는 상기 t개의 부분 집합들 각각에 대해서, 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들 중 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당함으로써, v개의 "1"과 "0"의 코드 값으로 구성된 t개의 부분 시퀀스들을 생성할 수 있다.When confirmation of the t subsets included in the cyclic series having parameters of (v, k, 1) is completed, the
그러고 나서, 제1 시퀀스 생성부(115)는 상기 t개의 부분 시퀀스들을 조합하여 총 N개(N=tv임)의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성할 수 있다.The
그리고, 제2 시퀀스 생성부(116)는 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들 각각에 대해 선정된 방향으로 순환시프트 연산을 v-1회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 상기 t개의 부분 시퀀스들을 조합하여 제2 시퀀스를 생성함으로써, 총 v-1개의 제2 시퀀스들을 생성할 수 있다.The
이렇게, 상기 제1 시퀀스와 상기 v-1개의 제2 시퀀스들이 생성되면, 시퀀스 매칭부(117)는 상기 v개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 v-1개의 제2 시퀀스들을 하나씩 매칭시킨다.When the first sequence and the v-1 second sequences are generated, the
그리고, 할당부(118)는 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당한다.For each of the v message distribution groups, the allocating
이때, 본 발명의 일실시예에 따르면, 메시지 분산 할당부(112)는 상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 인덱스 할당부(119)를 더 포함할 수 있다.In this case, according to an embodiment of the present invention, the message
이때, 할당부(118)는 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당할 수 있다.At this time, for each of the v message distribution groups, the
이때, 본 발명의 일실시예에 따르면, 할당부(118)는 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 tk개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 tk개의 메시지들을 분산 할당할 수 있다.In this case, according to an embodiment of the present invention, the assigning
본 발명의 일실시예에 따르면, 순환 차족을 활용한 데이터 분산 저장 장치(110)는 저장 메시지 추출부(120) 및 데이터 로드부(121)를 더 포함할 수 있다.According to an exemplary embodiment of the present invention, the data
저장 메시지 추출부(120)는 v개의 데이터 저장소들(101, 102, 103)에 상기 N개의 메시지들이 tk개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드(load) 명령이 인가되면, 상기 로드 명령에 기초하여 v개의 데이터 저장소들(101, 102, 103) 중 tk개의 데이터 저장소들을 랜덤하게 선택하고, 상기 tk개의 데이터 저장소들 각각으로부터 상기 tk개의 데이터 저장소들 각각에 저장되어 있는 tk개의 저장 메시지들을 추출한다.The stored
데이터 로드부(121)는 상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드한다.The
이때, 본 발명의 일실시예에 따르면, 상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 최대 거리 분리 가능(Maximum Distance Separable: MDS) 코드일 수 있다.In this case, according to an embodiment of the present invention, the N messages may be Maximum Distance Separable (MDS) codes capable of recovering lost messages based on remaining messages when loss of some messages occurs .
여기서, MDS 코드란 복수의 메시지들 중 일부 메시지의 손실이 발생하였을 때, 남아 있는 메시지들을 기초로 손실된 일부 메시지들을 복원할 수 있는 코드로, 소정의 원본 메시지에 대해 MDS 코딩을 수행함으로써, MDS 코드로 변경해 둔 후 MDS 코드로 변경된 메시지들 중 일부 메시지에 대한 손실이 발생하였을 때, 손실된 메시지를 복원하는데 사용될 수 있다. 이때, 상기 MDS 코드로부터 다시 원본 메시지를 생성하고자 한다면, MDS 디코딩을 수행함으로써, 상기 원본 메시지를 복원할 수 있다. 따라서, 중요 메시지들을 저장할 때, MDS 코드로 변경해서 저장해 둠으로써, 메시지의 손실이 발생할 경우를 미리 대비할 수 있다.Here, the MDS code is a code that can recover some messages lost based on remaining messages when a loss of some messages among a plurality of messages occurs, thereby performing MDS coding on a predetermined original message, Code can be used to recover lost messages when some of the messages changed to MDS code are lost. At this time, if the original message is to be generated again from the MDS code, MDS decoding can be performed to restore the original message. Therefore, when storing important messages, the MDS code is changed and stored, so that a case of loss of a message can be prepared in advance.
이때, 데이터 로드부(121)는 상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드할 수 있다.At this time, if tk storing messages are extracted from each of the tk data stores, the
이하에서는 도 2를 참조하여, 본 발명에 따른 순환 차족을 활용한 데이터 분산 저장 장치(110)의 동작을 예를 들어 상세히 설명하기로 한다.Hereinafter, the operation of the data
도 2는 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 장치(110)의 동작을 설명하기 위한 도면이다.FIG. 2 is a view for explaining the operation of the data
우선, k=3, t=2라고 가정하고, v=k(k-1)t+1임에 따라, v=13, N=tv임에 따라, N=26이라고 할 때, v개의 데이터 저장소들(101, 102, 103)이 도 2에 도시된 바와 같이, 데이터 저장소 1(201), 데이터 저장소 2(202), 데이터 저장소 3(203), 데이터 저장소 4(204), 데이터 저장소 5(205), 데이터 저장소 6(206), 데이터 저장소 7(207), 데이터 저장소 8(208), 데이터 저장소 9(209), 데이터 저장소 10(210), 데이터 저장소 11(211), 데이터 저장소 12(212), 데이터 저장소 13(213)으로 존재하며, N=26인 관계로 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에 저장할 메시지들의 개수가 26개인 것으로 가정하기로 한다.Assuming that k = 3 and t = 2 and v = 13 and N = tv according to v = k (k-1) t + 1, 2, data storage 1 (201), data storage 2 (202), data storage 3 (203), data storage 4 (204), data storage 5 (205) A data store 720, a data store 720, a data store 820, a data store 920, a data store 1010, a data store 11 211, a data store 12 212, And the data stores 13 to 213 exist in the data stores 1 to 13 (201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212 and 213) It is assumed that the number of messages to be stored is 26.
이때, 분산 그룹 생성부(111)는 26개의 메시지들에 대해 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)로의 분산 저장 명령이 인가되면, 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에 대응하는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413)을 생성할 수 있다.At this time, the distribution
그리고, 메시지 분산 할당부(112)에 포함되어 있는 인덱스 할당부(119)는 상기 26개의 메시지들에 대해서 순번 정보와 연관된 인덱스 값을 할당할 수 있는데, 인덱스 할당부(119)가 상기 26개의 메시지들에 대해 순서대로 1부터 26까지의 인덱스 값을 할당한다고 하면, 상기 26개의 메시지들은 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"으로 표시할 수 있다.The
k=3, t=2, v=13이라고 가정하였기 때문에, 순환 차족 확인부(114)는 "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12"를 원소로 포함하고 있는 집합인 Zv에 대한 3개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 3개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 2개의 부분 집합들을 확인할 수 있다.1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, and 12 because k = 3, t = 2, v = Among all of the three elements included in each of the plurality of subsets, among all of the plurality of subsets having three elements for Z v , which is the set containing Z It is possible to identify two subsets that are found to match only one different element except for "0 " in the elements included in Z v .
이때, 상기 2개의 부분 집합들의 모임은 (13, 3, 1)의 파라미터를 갖는 순환 차족으로 정의된다.At this time, the group of the two subsets is defined as a circle having parameters of (13, 3, 1).
이때, 제1 시퀀스 생성부(115)는 (13, 3, 1)의 파라미터를 갖는 순환 차족에 포함되는 상기 2개의 부분 집합들 각각에 대해, 상기 2개의 부분 집합들 각각에 포함되어 있는 3개의 원소들에 기초하여 상기 Zv에 포함되어 있는 "0"부터 "12"까지의 정수들에 대해 "0"부터 "12" 순으로 "1"과 "0"의 코드 값을 할당함으로써, 13개의 "1"과 "0"의 코드 값으로 구성된 2개의 부분 시퀀스들을 생성하고, 상기 2개의 부분 시퀀스들을 조합하여 총 26개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스를 생성할 수 있다.At this time, the
관련해서, 제1 시퀀스 생성부(115)가 (13, 3, 1)의 파라미터를 갖는 순환 차족인 상기 2개의 부분 집합을 "{0, 1, 4}", "{0, 2, 7}"로 확인하였다고 가정하자.In relation to this, the first
이때, 제1 시퀀스 생성부(115)는 상기 Zv에 포함되어 있는 "0"부터 "12"까지의 정수들 중 상기 2개의 부분 집합들 "{0, 1, 4}", "{0, 2, 7}" 각각에 대해, 상기 2개의 부분 집합들 "{0, 1, 4}", "{0, 2, 7}" 각각에 포함되어 있는 3개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 2개의 부분 집합들 "{0, 1, 4}", "{0, 2, 7}" 각각에 포함되어 있는 3개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당함으로써, "1100100000000"과 "1010000100000"이라는 2개의 부분 시퀀스들을 생성할 수 있다.At this time, the first
그러고 나서, 제1 시퀀스 생성부(115)는 "1100100000000"과 "1010000100000"이라는 2개의 부분 시퀀스들을 일렬로 나열하여 조합함으로써, 총 26개의 "1"과 "0"의 코드 값으로 구성된 11001000000001010000100000(301)이라는 제1 시퀀스를 획득할 수 있다.Then, the
그리고, 제2 시퀀스 생성부(116)는 "1100100000000"과 "1010000100000"이라는 상기 2개의 부분 시퀀스들에 대해 오른쪽 또는 왼쪽 중 어느 하나의 선정된 방향으로 순환시프트 연산을 12회 수행(본 실시예에서는 오른쪽 방향으로 순환시프트 연산을 수행함)하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 2개의 부분 시퀀스들을 일렬로 나열하여 조합하여 제2 시퀀스를 생성함으로써, 총 12개의 01100100000000101000010000(302), 00110010000000010100001000(303), 00011001000000001010000100(304), 00001100100000000101000010(305), 00000110010000000010100001(306), 00000011001001000001010000(307), 00000001100100100000101000(308), 00000000110010010000010100(309), 10000000011000001000001010(310), 01000000001100000100000101(311), 00100000000111000010000010(312), 10010000000010100001000001(313)이라는 제2 시퀀스들을 생성할 수 있다.The
이러한 제1 시퀀스인 11001000000001010000100000(301)와 12개의 제2 시퀀스들인 01100100000000101000010000(302), 00110010000000010100001000(303), 00011001000000001010000100(304), 00001100100000000101000010(305), 00000110010000000010100001(306), 00000011001001000001010000(307), 00000001100100100000101000(308), 00000000110010010000010100(309), 10000000011000001000001010(310), 01000000001100000100000101(311), 00100000000111000010000010(312), 10010000000010100001000001(313)는 앞서 설명한 바와 같이, 항상 tk개의 "1"의 코드 값을 갖게 되는데, 본 실시예에서 t=2, k=3으로 가정하였기 때문에 13개의 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313) 각각에 포함된 "1"의 코드 값은 항상 6개이다.The first sequence 11001000000001010000100000 (301) and the 12 second sequences 01100100000000101000010000 (302), 00110010000000010100001000 (303), 0001100100000000100100100 (304), 000011001000000101000010 (305), 000001100100000010100001 (306), 00000011001001000001010000 (307), 00000001100100100101000 (308) 00000000110010010000010100 (309), 10000000011000001000001010 (310), 01000000001100000100000101 (311), 001000000111000010000010 (312), 10010000000010100001000001 313 will always have a code value of tk "1" The code value of "1" contained in each of the 13
그리고, 제1 시퀀스와 제2 시퀀스들은 서로 다른 tk개의 시퀀스들 간에 "OR" 논리 연산을 수행하면, 해당 논리 연산의 결과 값에 포함된 "1"의 코드 값은 항상 개 이상이 되고, "0"의 코드 값은 항상 개 이하가 되기 때문에 본 실시예에서는 t=2, k=3이라고 가정하였으므로, 13개의 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313) 중 어느 6개의 시퀀스들 간에 "OR" 논리 연산이 수행되면, 그 연산 결과 값에 포함되어 있는 "1"의 코드 값은 항상 21개 이상이 되고, "0"의 코드 값은 항상 5개 이하가 된다.If the "OR" logic operation is performed between the tk sequences of the first sequence and the second sequence, the code value of "1" included in the result of the logical operation is always , And the code value of "0 " 30, 309, 310, 311, 312, 313, 313, 313, 313, 313, ), The code value of "1" included in the operation result value is always 21 or more, and the code value of "0 " is always 5 or less .
이렇게, 13개의 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313)이 생성되면, 시퀀스 매칭부(117)는 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에 각각 대응하는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 대해 13개의 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313)을 하나씩 매칭시킬 수 있다.When 13 sequences (301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313) are generated, the
관련해서, 시퀀스 매칭부(117)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 1(401)에 대해 11001000000001010000100000(301)을 매칭시킬 수 있고, 메시지 분산 그룹 2(402)에 대해 01100100000000101000010000(302)을 매칭시킬 수 있으며, 메시지 분산 그룹 3(403)에 대해 00110010000000010100001000(303)을 매칭시킬 수 있고, 메시지 분산 그룹 4(404)에 대해 00011001000000001010000100(304)을 매칭시킬 수 있고, 메시지 분산 그룹 5(405)에 대해 00001100100000000101000010(305)을 매칭시킬 수 있고, 메시지 분산 그룹 6(406)에 대해 00000110010000000010100001(306)을 매칭시킬 수 있고, 메시지 분산 그룹 7(407)에 대해 00000011001001000001010000(307)을 매칭시킬 수 있고, 메시지 분산 그룹 8(408)에 대해 00000001100100100000101000(308)을 매칭시킬 수 있고, 메시지 분산 그룹 9(409)에 대해 00000000110010010000010100(309)을 매칭시킬 수 있고, 메시지 분산 그룹 10(410)에 대해 10000000011000001000001010(310)을 매칭시킬 수 있고, 메시지 분산 그룹 11(411)에 대해 01000000001100000100000101(311)을 매칭시킬 수 있고, 메시지 분산 그룹 12(412)에 대해 00100000000111000010000010(312)을 매칭시킬 수 있고, 메시지 분산 그룹 13(413)에 대해 10010000000010100001000001(313)을 매칭시킬 수 있고, 2, the
그러고 나서, 할당부(118)는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 대해, 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 매칭되어 있는 각 시퀀스를 구성하는 26개의 코드 값에 기초하여 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"을 할당할 수 있는데, 할당부(118)는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 매칭되어 있는 각 시퀀스를 구성하는 26개의 코드 값의 배열 순서와 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"을 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413)에 할당할 수 있다.The assigning
이때, 할당부(118)는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 매칭되어 있는 각 시퀀스를 구성하는 26개의 코드 값 중 6개씩 존재하는 "1"의 코드 값을 확인한 후 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 6개의 메시지들을 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413)에 할당할 수 있다.At this time, the
예컨대, 메시지 분산 그룹 1(401)에 대해서는 11001000000001010000100000(301)라는 시퀀스가 매칭되어 있기 때문에 할당부(118)는 11001000000001010000100000(301)로부터 "1"의 코드 값을 확인한 후 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중에서 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 6개의 메시지들을 메시지 분산 그룹 1(401)에 할당할 수 있다.For example, with respect to the message distribution group 1 (401) the sequence of 11001000000001010000100000 301 are matched because
관련해서, 11001000000001010000100000(301)에서는 "1"의 코드 값이 1번, 2번, 5번, 14번, 16번, 21번 위치에 배열되어 있기 때문에 할당부(118)는 도 2에 도시된 바와 같이, 메시지 분산 그룹 1(401)에 대해 1번, 2번, 5번, 14번, 16번, 21번 위치에 대응하는 인덱스 값이 할당되어 있는 "m1, m2, m5, m14, m16, m21"을 할당할 수 있다.Since the code values of "1" are arranged at positions 1, 2, 5, 14, 16 and 21 in the 11001000000001010000100000 (301) M 1 , m 2 , m 5 , and m 14 , to which index values corresponding to positions 1, 2, 5, 14, 16, and 21 are assigned to message distribution group 1 401 , m 16 , m 21 ".
이러한 방식으로, 할당부(118)는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 대해 도 2에 도시된 바와 같이 각 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413)에 매칭되어 있는 각 시퀀스에 기초하여 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"을 6개씩 분산 할당할 수 있다.In this manner, the assigning
이렇게, 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"이 모두 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413)에 6개씩 분산 할당이 완료되면, 데이터 저장부(113)는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 할당되어 있는 6개의 메시지들을 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 별로 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장할 수 있다.The above-mentioned 26 messages "m 1 , m 2 , m 3 , m 4 , m 5 , m 6 , m 7 , m 8 , m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18 , m 19 , m 20 , m 21 , m 22 , m 23 , m 24 , m 25 and m 26 "are all 13
예컨대, 데이터 저장부(113)는 메시지 분산 그룹 1(401)에 할당되어 있는 6개의 메시지들인 "m1, m2, m5, m14, m16, m21"을 대응되는 데이터 저장소인 데이터 저장소 1(201)에 저장할 수 있다.For example, the
이러한 방식으로, 데이터 저장부(113)는 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 각각에 할당되어 있는 6개의 메시지들을 13개의 메시지 분산 그룹들(401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413) 별로 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장할 수 있다.In this way, the
이렇게, 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"이 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에 분산 저장이 완료되면, 추후 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 대해서 데이터 로드 명령이 인가됨에 따라 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 대한 데이터 로드를 수행할 때, 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) 중에서 어느 6개의 데이터 저장소에만 액세스를 한 후 상기 6개의 데이터 저장소만에 저장되어 있는 메시지들을 추출하게 되면, 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중에서 적어도 21개 이상의 메시지는 모두 추출되게 된다.The above-mentioned 26 messages "m 1 , m 2 , m 3 , m 4 , m 5 , m 6 , m 7 , m 8 , m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15, m 16, m 17 , m 18, m 19, m 20, m 21, m 22, m 23, m 24, m 25, m 26 " the data store 1 to 13 (201, 202, 203, 204 , 205, 206, 207, 208, 209, 210, 211, 212, 213) when the distributed storage is complete, which are of the 26 subsequent message "m 1, m 2, m 3, m 4, m 5, m 6 m 7 , m 8 , m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18 , m 19 , m 20 , m 21 , m 22 , m 23, m 24, m 25, m 26 " , which are of the 26 message as a data load command is for" m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8, m 9, m 10, m 11 , m 12, m 13, m 14, m 15, m 16, m 17, m 18, m 19, m 20, m 21, m 22, m 23, m 24, m 25 , m 26 ", data of any one of six data out of data stores 1 to 13 (201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, Save Only when after an access to extract the message that is stored in only the six data storage, the which are 26 message "m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8 m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18 , m 19 , m 20 , m 21 , m 22 , m 23 , m 24 , m 25 , and m 26 ", at least 21 messages are extracted.
왜냐하면, 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에는 각 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313)의 "1"의 코드 값에 따라서 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"이 분산 할당되어 저장되었고, 각 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313)의 특성상 상기 13개의 시퀀스들(301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313) 중 어느 6개의 시퀀스들 간에 "OR"논리 연산을 수행하게 되면, "1"의 코드 값이 항상 21개 이상이 나오기 때문에 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) 중 어느 6개의 랜덤한 데이터 저장소로부터 각각 6개씩 메시지들을 모두 추출하게 되면, 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중에서 적어도 21개 이상의 메시지들은 모두 확보하게 되는 것이다.Because each of the sequences 301, 302, 303, 304, 305, and 306 is stored in the data storage 1 to 13 (201, 202, 203, 204, 205, 206, 207, 208, 209, 210, M 1 , m 2 , m 3 , m 4 , m 5 , m 6 , and m 7 according to the code value of "1" m 8 , m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18 , m 19 , m 20 , m 21 , m 22 , m 23 , m 24 , m 25 , and m 26 "are distributed and stored, and on the characteristics of each of the sequences 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, When performing an "OR" logical operation between any six sequences of the sequences 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, and 313, Since there are always 21 or more code values, there are six random data stores among the data stores 1 to 13 (201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, Extract all 6 messages from each , The which are 26 message "m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8, m 9, m 10, m 11, m 12, m 13, m 14 when it , m 15, m 16, m 17, m 18, m 19, m 20, m 21, m 22, m 23, m 24, m 25, m 26 , at least 21 or more messages from the "are intended to be the all secure.
이로 인해서, 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"이 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에 분산 저장이 완료된 이후에 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 대한 로드 명령이 인가되면, 저장 메시지 추출부(120)는 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) 중 데이터 트래픽이 가장 낮은 데이터 저장소 6개만을 랜덤하게 선택하여 6개의 데이터 저장소에 각각 저장되어 있는 6개의 저장 데이터를 추출할 수 있고, 데이터 로드부(121)는 상기 6개의 데이터 저장소를 통해 추출된 각 저장 데이터를 기초로 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중 총 21개 이상의 메시지들을 빠르게 로드할 수 있다.Therefore, the 26 messages "m 1 , m 2 , m 3 , m 4 , m 5 , m 6 , m 7 , m 8 , m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15, m 16, m 17, m 18, m 19, m 20, m 21, m 22, m 23, m 24, m 25, m 26 " the data store 1 to 13 (201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) "m 1, which are of the 26 message after the distributed storage is completed in m 2, m 3, m 4 , m 5, m 6 m 7 , m 8 , m 9 , m 10 , m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18 , m 19 , m 20 , m 21 , m 22 , m 23, m 24, m 25, when the load instruction for m 26 "is applied, the store
이때, 만약 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"이 임의의 21개의 메시지들만으로 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"을 모두 복원할 수 있도록 구성된 (26, 21) MDS 코드인 경우, 데이터 로드부(121)는 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213) 중에서 랜덤하게 선택된 6개의 데이터 저장소들로부터 6개씩 저장 메시지가 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 할당된 인덱스 값을 비교하여 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되는 경우, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 대한 로드 명령에 따른 데이터로 로드할 수 있다.At this time, if the 26 messages, which are "m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8, m 9, m 10, m 11, m 12, m 13, m 14 , m 15, m 16, m 17, m 18, m 19, m 20, m 21, m 22, m 23, m 24, m 25, m 26 " a, which are any of the 26 message only of 21 messages of" m 1, m 2, m 3 , m 4, m 5, m 6, m 7, m 8, m 9, m 10, m 11, m 12, m 13, m 14, m 15, m 16, m 17 (26, 21) MDS code configured to be able to restore all of the m, m 18 , m 19 , m 20 , m 21 , m 22 , m 23 , m 24 , m 25 , m 26 " ) Extracts six stored messages from six randomly selected data stores among the data stores 1 to 13 (201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212 and 213) , the index values which are assigned to the stored message extracted and which includes the 26 message "m 1, m 2, when m 3, m 4, m 5 , m 6, m 7, m 8, m 9, m 10 m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18, m 19, m 20, m 21, m 22, m 23, m 24, m 25, m 26 " , which are of the 26 message by comparing the index value assigned to the" m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8, m 9, m 10, m 11, m 12, m 13, m 14, m 15, m 16, m 17, m 18, m 19, m 20, if it is determined that there is a remaining message that is not included in the extracted stored messages among the m 21 , m 22 , m 23 , m 24 , m 25 , and m 26 ' a recover the message and the with the extracted storage message recover residual message which includes the 26 message "m 1, m 2, m 3, m 4, m 5, m 6, m 7, m 8, m 9, m 10 , m 11 , m 12 , m 13 , m 14 , m 15 , m 16 , m 17 , m 18 , m 19 , m 20 , m 21 , m 22 , m 23 , m 24 , m 25 , m 26 "To < / RTI >
관련해서, 상기 랜덤하게 선택된 6개의 데이터 저장소를 데이터 저장소 2(202), 데이터 저장소 5(205), 데이터 저장소 7(207), 데이터 저장소 8(208), 데이터 저장소 10(210), 데이터 저장소 13(213)이라고 하면, 저장 메시지 추출부(120)는 데이터 저장소 2(202)로부터 "m2, m3, m6, m15, m17, m22"를 추출할 수 있고, 데이터 저장소 5(205)로부터 "m5, m6, m9, m18, m20, m25"를 추출할 수 있으며, 데이터 저장소 7(207)로부터 "m7, m8, m11, m14, m20, m22"를 추출할 수 있고, 데이터 저장소 8(208)로부터 "m8, m9, m12, m15, m21, m23"을 추출할 수 있고, 데이터 저장소 10(210)으로부터 "m1, m10, m11, m17, m23, m25"를 추출할 수 있고, 데이터 저장소 13(213)으로부터 "m1, m4, m13, m15, m20, m26"을 추출할 수 있다.The data storage 2 (202), the data storage 5 (205), the data storage 7 (207), the data storage 8 (208), the data storage 10 (210), the data storage 13 213, when called, stores the
이로 인해, 저장 메시지 추출부(120)는 결국, 데이터 저장소 2(202), 데이터 저장소 5(205), 데이터 저장소 7(207), 데이터 저장소 8(208), 데이터 저장소 10(210), 데이터 저장소 13(213)로부터 "m2, m3, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m17, m18, m20, m21, m22, m23, m25, m26"을 추출해 낼 수 있다.Accordingly, the stored
이때, 데이터 로드부(121)는 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"에 할당되어 있는 인덱스 값과 상기 추출된 "m2, m3, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m17, m18, m20, m21, m22, m23, m25, m26"에 할당되어 있는 인덱스 값을 서로 비교하여 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26" 중에서 상기 추출된 "m2, m3, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m17, m18, m20, m21, m22, m23, m25, m26"에 포함되어 있지 않은 잔여 메시지를 확인할 수 있다.At this time, the
관련해서, 본 실시예에서는 "m1, m4, m16, m19, m24"가 잔여 메시지이기 때문에 데이터 로드부(121)는 "m1, m4, m16, m19, m24"를 잔여 메시지로 확인한 후 (26, 21) MDS 코딩이 되어 있는 "m2, m3, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m17, m18, m20, m21, m22, m23, m25, m26"으로부터 "m1, m4, m16, m19, m24"를 복원해 낼 수 있다.In connection, in the present embodiment, "m 1, m 4, m 16, m 19, m 24" is because the remaining message data load
이로 인해, 결국, 데이터 로드부(121)는 상기 복원된 "m1, m4, m16, m19, m24"와 데이터 저장소 2(202), 데이터 저장소 5(205), 데이터 저장소 7(207), 데이터 저장소 8(208), 데이터 저장소 10(210), 데이터 저장소 13(213)에서 추출된 "m2, m3, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m17, m18, m20, m21, m22, m23, m25, m26"을 로드함으로써, 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"을 모두 로드해 낼 수 있다.Consequently, the
결국, 본 발명에 따른 순환 차족을 활용한 데이터 분산 저장 장치(110)는 상기 26개의 메시지들인 "m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19, m20, m21, m22, m23, m24, m25, m26"을 순환 차족에 기초하여 생성한 상기 제1 시퀀스와 상기 제2 시퀀스들에 따라 데이터 저장소 1~13(201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213)에 6개씩 분산 저장해 놓음으로써, 추후 데이터를 로드할 때, 오직 6개의 데이터 저장소에만 액세스하여 데이터를 복원해 낼 수 있기 때문에 메시지 분산 저장 시스템에 있어서 시스템 자원 활용의 효율성을 도모할 수 있다.As a result, a distribution of
본 발명의 다른 실시예에 따르면, 순환 차족을 활용한 데이터 분산 저장 장치(110)는 저장 대상이 되는 메시지의 개수가 N개를 초과하고, 데이터 저장소들(101, 102, 103)의 개수도 상기 메시지의 개수만큼 증가시킬 수 있다면, (v, k, 1)의 파라미터를 갖는 순환 차족 중에서 완전 차족(Perfect Difference Family)에 속하는 t개의 부분 집합들을 확인하여 상기 제1 시퀀스를 생성하고, 상기 제1 시퀀스를 구성하는 코드 값에서 "0"의 코드 값을 상기 저장 대상이 되는 메시지의 초과 개수만큼 추가로 삽입하는 방식으로 상기 제1 시퀀스와 상기 제2 시퀀스들을 생성함으로써, 데이터 저장소(101, 102, 103)에 저장할 메시지의 개수를 증가시킬 수 있다.According to another embodiment of the present invention, the data
예컨대, 저장 대상이 되는 메시지의 개수가 N+ta라고 하고, 데이터 저장소들(101, 102, 103)의 개수가 v+a라고 하는 경우, 순환 차족을 활용한 데이터 분산 저장 장치(110)는 (v, k, 1)의 파라미터를 갖는 완전 차족에 속하는 t개의 부분 집합들을 확인하여 N개의 "0"과 "1"의 코드 값으로 구성된 상기 제1 시퀀스를 생성한 후 상기 제1 시퀀스를 구성하는 t개의 부분 시퀀스들 각각에 대해 a개 만큼의 "0"의 코드 값을 삽입하여 상기 제1 시퀀스를 N+ta개의 "0"과 "1"의 코드 값으로 구성된 시퀀스로 변경한 후 상기 변경된 제1 시퀀스를 구성하는 부분 시퀀스들에 대해 선정된 방향으로 v+a-1회 만큼 순환시프트 연산을 수행함으로써, v+a-1개의 제2 시퀀스들을 생성할 수 있다.For example, when the number of messages to be stored is N + ta, and the number of
그러고 나서, 순환 차족을 활용한 데이터 분산 저장 장치(110)는 상기 제1 시퀀스와 상기 v+a-1개의 제2 시퀀스들을 이용해서 N+ta개의 메시지들을 v+a개의 데이터 저장소들(101, 102, 103)에 분산 저장할 수 있다.Then, the data
이러한 방식으로 본 발명에 따른 순환 차족을 활용한 데이터 분산 저장 장치(110)는 상기 제1 시퀀스의 길이를 증가시킴으로써, 저장 메시지들의 개수를 자유롭게 증가시킬 수 있다.In this way, the data
여기서, 완전 차족에 대해 설명하면, v=k(k-1)t+1로 주어진 (v, k, 1) 순환 차족 가 있고, Bi가 를 만족할 때, 에 대하여 Bi에 포함되어 있는 원소들 중 tk(k-1)/2개의 서로 다른 원소들 간 차()들의 집합이 가 된다면 그 순환 차족은 (v, k, 1) 파라미터를 갖는 완전 차족이라 정의할 수 있다.Hereinafter, a description will be given of the perfect phase. The (v, k, 1) cyclic phase given by v = k (k-1) t + And B i is Lt; / RTI > (K-1) of the elements contained in B i / the difference between two different elements ) , Then the circulation can be defined as a full scale with (v, k, 1) parameters.
도 3은 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법을 도시한 순서도이다.FIG. 3 is a flowchart illustrating a data distribution storage method using a cyclic shift according to an embodiment of the present invention.
단계(S31)에서는 N(N은 N=tv의 조건을 만족하는 자연수이고, v는 v=k(k-1)t+1의 조건을 만족하는 자연수이며, k는 2이상의 자연수이고, t는 1이상의 자연수임)개의 메시지들에 대해 v개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 v개의 데이터 저장소들에 대응하는 v개의 메시지 분산 그룹들을 생성한다.In step S31, N (N is a natural number satisfying the condition of N = tv, v is a natural number satisfying the condition of v = k (k-1) t + 1, k is a natural number of 2 or more, When a distributed storage command to v data stores is applied to messages of 1 or more natural numbers, v message distribution groups corresponding to the v data stores are generated.
단계(S32)에서는 상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk(tk는 t와 k의 곱을 의미함)개씩 분산 할당(상기 v개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음)한다.In step S32, the N messages are distributedly allocated to each of the v message distribution groups by tk (tk is a product of t and k) (messages distributed to v message distribution groups are allocated to each other May be duplicated).
단계(S33)에서는 상기 v개의 메시지 분산 그룹들 각각에 할당되어 있는 tk개의 메시지들을 상기 v개의 메시지 분산 그룹들 별로, 상기 v개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장한다.In step S33, tk messages allocated to the v message distribution groups are separately stored in the data repository corresponding to each message distribution group among the v message distribution groups and stored in the v data repository do.
이때, 본 발명의 일실시예에 따르면, 단계(S32)에서는 "0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv(상기 Zv에 포함되어 있는 원소들의 개수는 v개임)에 대한 k개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 t개의 부분 집합들(상기 t개의 부분 집합들의 모임은 (v, k, 1)의 파라미터를 갖는 순환 차족으로 정의됨)을 확인하는 단계, 상기 t개의 부분 집합들 각각에 대해서, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들에 기초하여 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들에 대해 "0"부터 "v-1" 순으로 "1"과 "0"의 코드 값을 할당함으로써, v개의 "1"과 "0"의 코드 값으로 구성된 t개의 부분 시퀀스들을 생성하고, 상기 t개의 부분 시퀀스들을 조합하여 총 N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스(N=tv이며, 상기 t개의 부분 집합들 각각에 대해서 v개씩 "1"과 "0"의 코드 값을 할당함으로써 생성한 상기 t개의 부분 시퀀스들을 조합하여 상기 제1 시퀀스를 생성하였으므로, 상기 제1 시퀀스를 구성하는 "1"과 "0"의 코드 값은 총 N개가 됨)를 생성하는 단계, 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들 각각에 대해 선정된 방향으로 순환시프트 연산을 v-1회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 상기 t개의 부분 시퀀스들을 조합하여 제2 시퀀스를 생성함으로써, 총 v-1개의 제2 시퀀스들을 생성하는 단계, 상기 v개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 v-1개의 제2 시퀀스들을 하나씩 매칭시키는 단계 및 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계를 포함할 수 있다.At this time, according to an embodiment of the present invention, in step S32, a set Z v (the number of elements included in the Z v includes integers from "0" to "v-1" v Games) element contained in said Z v all cars respectively between the two elements different from the one of the plurality of the subset having the k elements, k of elements included in each of the plurality of the subset of the T subsets (the collection of t subsets is defined as a circle with parameters of (v, k, 1)) that are found to match only one different element except for "0 " From "0" to "v-1" contained in the Z v , based on k elements contained in each of the t subsets, for each of the t subsets 1 "and" 0 "in the order of" 0 &Quot; 1 "and "0" code values by combining the t partial sequences with the code values of " And combining the t partial sequences generated by assigning code values of "1" and "0 " for each of the t subsets to v for a first sequence (N = tv, Code value of " 1 " and "0" constituting the first sequence is total N) By performing a cyclic shift operation v-1 times in a predetermined direction with respect to each of the sequences, combining the t partial sequences that have completed the cyclic shift operation each time each cyclic shift operation is performed, thereby generating a second sequence generating v-1 second sequences, Matching the first sequence and the v-1 second sequences one by one for each of the v message distribution groups, and for each of the v message distribution groups, matching each of the v message distribution groups And distributing the N messages by tk based on N code values constituting each sequence.
이때, 본 발명의 일실시예에 따르면, 상기 제1 시퀀스를 생성하는 단계는 상기 t개의 부분 집합들 각각에 대해서, 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들 중 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당함으로써, 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들을 생성할 수 있다.In this case, according to an embodiment of the present invention, the step of generating the first sequence may include, for each of the t subsets, integers from "0" to "v-1" included in the Z v A code value of "1 " is assigned to integers corresponding to the k elements included in each of the t subsets, and a code value corresponding to k elements included in each of the t subsets By assigning a code value of "0 " to the remaining constants that do not belong to the same sequence, the t partial sequences consisting of the code values of v" 1 "and" 0 ".
또한, 본 발명의 일실시예에 따르면, 단계(S32)에서는 상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 단계를 더 포함할 수 있다.According to an embodiment of the present invention, the step S32 may further comprise the step of assigning an index value associated with the order information to each of the N messages.
이때, 상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계는 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당할 수 있다.At this time, the step of distributing the N messages by tk based on the N code values constitutes each sequence matched to each of the v message distribution groups for each of the v message distribution groups The N number of messages is compared with the index value assigned to each of the N messages, and the N number of messages are compared with the index values assigned to the N messages, Tk < / RTI >
이때, 본 발명의 일실시예에 따르면, 상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계는 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 tk개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 tk개의 메시지들을 분산 할당할 수 있다.According to an embodiment of the present invention, the step of distributing the N messages by tk on the basis of the N code values may further include, for each of the v message distribution groups, 1 "existing in tk among N code values constituting each sequence matched with the code value of " 1 ", and for each of the v message distribution groups, Tk messages to which an index value corresponding to an array order for a code value is allocated can be distributedly allocated.
또한, 본 발명의 일실시예에 따르면, 순환 차족을 활용한 데이터 분산 저장 방법은 상기 v개의 데이터 저장소들에 상기 N개의 메시지들이 tk개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드 명령이 인가되면, 상기 로드 명령에 기초하여 상기 v개의 데이터 저장소들 중 tk개의 데이터 저장소들을 랜덤하게 선택하고, 상기 tk개의 데이터 저장소들 각각으로부터 상기 tk개의 데이터 저장소들 각각에 저장되어 있는 tk개의 저장 메시지들을 추출하는 단계 및 상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 단계를 더 포함할 수 있다.According to another embodiment of the present invention, there is provided a method of distributing data using circulation, the method comprising: storing N messages in the v data stores in tk distributions; Randomly selects tk data stores out of the v data stores based on the load command and extracts tk stored messages from each of the tk data stores from each of the tk data stores And loading the stored messages extracted from each of the tk data stores into tk data according to a load command for the N messages.
이때, 본 발명의 일실시예에 따르면, 상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 MDS 코드이고, 상기 로드하는 단계는 상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드할 수 있다.According to an embodiment of the present invention, the N messages are MDS codes capable of recovering lost messages based on remaining messages when a loss of some messages occurs, And stores index values assigned to the extracted stored messages and an index value assigned to the N messages to be included in the extracted stored messages among the N messages, If it is determined that there is a remaining message that is not yet available, restores the remaining message based on the extracted stored messages, and stores the extracted stored messages and the restored remaining message according to a load command for the N messages You can load it as data.
이상, 도 3을 참조하여 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법에 대해 설명하였다. 여기서, 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법은 도 1과 도 2를 이용하여 설명한 순환 차족을 활용한 데이터 분산 저장 장치(110)의 동작에 대한 구성과 대응될 수 있으므로, 이에 대한 보다 상세한 설명은 생략하기로 한다.Hereinbefore, the data distribution storage method using the cyclic shift according to the embodiment of the present invention has been described with reference to FIG. Here, the data distribution storage method using the circulation tile according to an embodiment of the present invention may correspond to the configuration of the operation of the data
본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법은 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다.The method for storing and distributing data using circulation according to an embodiment of the present invention may be implemented by a computer program stored in a storage medium for execution through a combination with a computer.
또한, 본 발명의 일실시예에 따른 순환 차족을 활용한 데이터 분산 저장 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.In addition, the data distribution storing method using the circulation method according to an embodiment of the present invention may be implemented in a form of a program command that can be executed through various computer means and recorded in a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. As described above, the present invention has been described with reference to particular embodiments, such as specific elements, and specific embodiments and drawings. However, it should be understood that the present invention is not limited to the above- And various modifications and changes may be made thereto by those skilled in the art to which the present invention pertains.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.Accordingly, the spirit of the present invention should not be construed as being limited to the embodiments described, and all of the equivalents or equivalents of the claims, as well as the following claims, belong to the scope of the present invention .
110: 순환 차족을 활용한 데이터 분산 저장 장치
111: 분산 그룹 생성부 112: 메시지 분산 할당부
113: 데이터 저장부 114: 순환 차족 확인부
115: 제1 시퀀스 생성부 116: 제2 시퀀스 생성부
117: 시퀀스 매칭부 118: 할당부
119: 인덱스 할당부 120: 저장 메시지 추출부
121: 데이터 로드부
101, 102, 103: v개의 데이터 저장소들110: Distributed data storage using circulation
111: distributed group generation unit 112: message distribution assignment unit
113: Data storage unit 114: Circulation check unit
115: first sequence generator 116: second sequence generator
117: Sequence matching unit 118: Assignment unit
119: Index assigning unit 120: Store message extracting unit
121: Data load unit
101, 102, 103: v data stores
Claims (16)
상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk - tk는 t와 k의 곱을 의미함 - 개씩 분산 할당 - 상기 v개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 메시지 분산 할당부; 및
상기 v개의 메시지 분산 그룹들 각각에 할당되어 있는 tk개의 메시지들을 상기 v개의 메시지 분산 그룹들 별로, 상기 v개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 데이터 저장부
를 포함하고,
상기 메시지 분산 할당부는
"0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv - 상기 Zv에 포함되어 있는 원소들의 개수는 v개임 - 에 대한 k개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 t개의 부분 집합들 - 상기 t개의 부분 집합들의 모임은 (v, k, 1)의 파라미터를 갖는 순환 차족(Cyclic Difference Family)으로 정의됨 - 을 확인하는 순환 차족 확인부;
상기 t개의 부분 집합들 각각에 대해서, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들에 기초하여 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들에 대해 "0"부터 "v-1" 순으로 "1"과 "0"의 코드 값을 할당함으로써, v개의 "1"과 "0"의 코드 값으로 구성된 t개의 부분 시퀀스들을 생성하고, 상기 t개의 부분 시퀀스들을 조합하여 총 N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스 - N=tv이며, 상기 t개의 부분 집합들 각각에 대해서 v개씩 "1"과 "0"의 코드 값을 할당함으로써 생성한 상기 t개의 부분 시퀀스들을 조합하여 상기 제1 시퀀스를 생성하였으므로, 상기 제1 시퀀스를 구성하는 "1"과 "0"의 코드 값은 총 N개가 됨 - 를 생성하는 제1 시퀀스 생성부;
상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들 각각에 대해 선정된(predetermined) 방향으로 순환시프트 연산을 v-1회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 상기 t개의 부분 시퀀스들을 조합하여 제2 시퀀스를 생성함으로써, 총 v-1개의 제2 시퀀스들을 생성하는 제2 시퀀스 생성부;
상기 v개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 v-1개의 제2 시퀀스들을 하나씩 매칭시키는 시퀀스 매칭부; 및
상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 할당부
를 포함하는 순환 차족을 활용한 데이터 분산 저장 장치.N is a natural number satisfying the condition of N = tv, v is a natural number satisfying the condition of v = k (k-1) t + 1, k is a natural number of 2 or more, t is natural number of 1 or more, A distributed group generation unit for generating v message distribution groups corresponding to the v data stores when a distributed storage command to v data stores is applied to the messages;
Tk - tk denotes a multiplication of t and k for each of the v message distribution groups, - distributed allocation of messages, - messages distributed over v message distribution groups may overlap each other, A message distribution allocation unit; And
A data storage unit for separating and storing tk messages allocated to each of the v message distribution groups in the v data distribution groups corresponding to v message distribution groups,
Lt; / RTI >
The message distribution assignment unit
Z v which is an aggregate containing integers from "0" to "v-1", Z v - the number of elements contained in Z v is equal to v - , Each of all the differences between two different elements among the k elements included in each of the plurality of subsets corresponds to only one element other than "0 " in the elements included in the Z v T subsequences identified as a cyclic shift confirmation, wherein the collection of t subsets is defined as a Cyclic Difference Family with parameters of (v, k, 1);
For each of the t subsets, for integers from "0" to "v-1" contained in the Z v based on k elements contained in each of the t subsets 1 "and" 0 "code values by assigning code values of" 1 "and" 0 "from" 0 "to" v-1 " A first sequence consisting of a total of N "1" and "0" code values in combination of partial sequences - N = tv and a code value of "1" and "0" for each of the t subsets, The first sequence is generated by combining the t partial sequences generated by assigning the first sequence to the first sequence, and thus the code values of "1" and "0" constituting the first sequence are total N, Generating unit;
Performing a cyclic shift operation in a predetermined direction v-1 times for each of the t partial sequences composed of v code values of "1" and "0 " while performing each cyclic shift operation A second sequence generator for generating a total of v-1 second sequences by generating a second sequence by combining the t partial sequences having completed the cyclic shift operation;
A sequence matching unit for matching the first sequence and the v-1 second sequences one by one for each of the v message distribution groups; And
For each of the v message distribution groups, an allocation unit for allocating tk of the N messages based on N code values constituting each sequence matched to each of the v message distribution groups,
And a data distribution storage apparatus using the circulation system.
상기 제1 시퀀스 생성부는
상기 t개의 부분 집합들 각각에 대해서, 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들 중 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당함으로써, 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들을 생성하는 순환 차족을 활용한 데이터 분산 저장 장치.The method according to claim 1,
The first sequence generator
Constant, consistent with the k elements in one of the integer for each of the t of the subset, from "0" contained in the Z v to "v-1" included in each of the t partial set By allocating a code value of "1" to all of the t subsets and assigning a code value of "0 " to remaining integers not matching k elements contained in each of the t subsets, And generates the t partial sequences composed of code values of "1" and "0 ".
상기 메시지 분산 할당부는
상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 인덱스 할당부
를 더 포함하고,
상기 할당부는
상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 순환 차족을 활용한 데이터 분산 저장 장치.The method of claim 3,
The message distribution assignment unit
An index assigning unit for assigning an index value associated with the order information to each of the N messages,
Further comprising:
The assigning unit
For each of the v message distribution groups, an arrangement order of N code values constituting each sequence matched to each of the v message distribution groups is compared with an index value assigned to each of the N messages. And allocates the N messages by tk based on a code value of an array order that matches an index value assigned to the N messages.
상기 할당부는
상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 tk개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 tk개의 메시지들을 분산 할당하는 순환 차족을 활용한 데이터 분산 저장 장치.5. The method of claim 4,
The assigning unit
For each of the v message distribution groups, a code value of "1" existing in tk among N code values constituting each sequence matched to each of the v message distribution groups is checked, For each of the message distribution groups, distributes tk messages to which an index value corresponding to the code value of the "1" of the N messages is allocated, .
상기 v개의 데이터 저장소들에 상기 N개의 메시지들이 tk개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드(load) 명령이 인가되면, 상기 로드 명령에 기초하여 상기 v개의 데이터 저장소들 중 tk개의 데이터 저장소들을 랜덤하게 선택하고, 상기 tk개의 데이터 저장소들 각각으로부터 상기 tk개의 데이터 저장소들 각각에 저장되어 있는 tk개의 저장 메시지들을 추출하는 저장 메시지 추출부; 및
상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 데이터 로드부
를 더 포함하는 순환 차족을 활용한 데이터 분산 저장 장치.6. The method of claim 5,
When a load command for the N messages is applied after the N messages are distributedly distributed in the v data stores, the tk data among the v data stores based on the load command, A storage message extractor for randomly selecting tanks and extracting tk stored messages stored in each of the tk data stores from each of the tk data stores; And
A data load unit for loading storage messages extracted by each tk of the tk data stores into data corresponding to a load instruction for the N messages,
And a data distribution storage apparatus using the circulation system.
상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 최대 거리 분리 가능(Maximum Distance Separable: MDS) 코드이고,
상기 데이터 로드부는
상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 순환 차족을 활용한 데이터 분산 저장 장치.The method according to claim 6,
The N messages are Maximum Distance Separable (MDS) codes capable of recovering lost messages based on remaining messages when loss of some messages occurs,
The data loading unit
Wherein when the stored messages are extracted from each of the tk data stores, the index value assigned to the extracted stored messages is compared with the index value assigned to the N messages, Recovering the stored messages based on the extracted stored messages and storing the extracted stored messages and the recovered residual messages in the N messages To load data according to a load command for the data storage device.
N - N은 N=tv의 조건을 만족하는 자연수이고, v는 v=k(k-1)t+1의 조건을 만족하는 자연수이며, k는 2이상의 자연수이고, t는 1이상의 자연수임 - 개의 메시지들에 대해 v개의 데이터 저장소들로의 분산 저장 명령이 인가되면, 상기 v개의 데이터 저장소들에 대응하는 v개의 메시지 분산 그룹들을 생성하는 단계;
상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk - tk는 t와 k의 곱을 의미함 - 개씩 분산 할당 - 상기 v개의 메시지 분산 그룹들에 분산 할당되는 메시지들은 서로 중복될 수 있음 - 하는 단계; 및
상기 v개의 메시지 분산 그룹들 각각에 할당되어 있는 tk개의 메시지들을 상기 v개의 메시지 분산 그룹들 별로, 상기 v개의 데이터 저장소들 중 각 메시지 분산 그룹에 대응되는 데이터 저장소에 분리해서 저장하는 단계
를 포함하고,
상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계는
"0"부터 "v-1"까지의 정수들을 원소로 포함하고 있는 집합인 Zv - 상기 Zv에 포함되어 있는 원소들의 개수는 v개임 - 에 대한 k개의 원소를 갖는 복수의 부분 집합들 중, 상기 복수의 부분 집합들 각각에 포함되어 있는 k개의 원소들 중에서 서로 다른 두 원소 간의 모든 차들 각각이 상기 Zv에 포함되어 있는 원소들에서 "0"을 제외한 서로 다른 1개의 원소와만 일치하는 것으로 확인되는 t개의 부분 집합들 - 상기 t개의 부분 집합들의 모임은 (v, k, 1)의 파라미터를 갖는 순환 차족(Cyclic Difference Family)으로 정의됨 - 을 확인하는 단계;
상기 t개의 부분 집합들 각각에 대해서, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들에 기초하여 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들에 대해 "0"부터 "v-1" 순으로 "1"과 "0"의 코드 값을 할당함으로써, v개의 "1"과 "0"의 코드 값으로 구성된 t개의 부분 시퀀스들을 생성하고, 상기 t개의 부분 시퀀스들을 조합하여 총 N개의 "1"과 "0"의 코드 값으로 구성된 제1 시퀀스 - N=tv이며, 상기 t개의 부분 집합들 각각에 대해서 v개씩 "1"과 "0"의 코드 값을 할당함으로써 생성한 상기 t개의 부분 시퀀스들을 조합하여 상기 제1 시퀀스를 생성하였으므로, 상기 제1 시퀀스를 구성하는 "1"과 "0"의 코드 값은 총 N개가 됨 - 를 생성하는 단계;
상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들 각각에 대해 선정된(predetermined) 방향으로 순환시프트 연산을 v-1회 수행하면서, 각 순환시프트 연산이 수행될 때마다 순환시프트 연산이 완료된 상기 t개의 부분 시퀀스들을 조합하여 제2 시퀀스를 생성함으로써, 총 v-1개의 제2 시퀀스들을 생성하는 단계;
상기 v개의 메시지 분산 그룹들 각각에 대해 상기 제1 시퀀스와 상기 v-1개의 제2 시퀀스들을 하나씩 매칭시키는 단계; 및
상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계
를 포함하는 순환 차족을 활용한 데이터 분산 저장 방법.A method of distributing data using circulation performed by a computer,
N is a natural number satisfying the condition of N = tv, v is a natural number satisfying the condition of v = k (k-1) t + 1, k is a natural number of 2 or more, t is natural number of 1 or more, Generating v message distribution groups corresponding to the v data stores if a distributed store instruction to v data stores is granted for the messages;
Tk - tk denotes a multiplication of t and k for each of the v message distribution groups, - distributed allocation of messages, - messages distributed over v message distribution groups may overlap each other, ; And
Separating and storing tk messages allocated to each of the v message distribution groups in the v message distribution groups and in a data repository corresponding to each message distribution group among the v data stores,
Lt; / RTI >
The step of distributing the N messages by tk for each of the v message distribution groups
Z v which is an aggregate containing integers from "0" to "v-1", Z v - the number of elements contained in Z v is equal to v - , Each of all the differences between two different elements among the k elements included in each of the plurality of subsets corresponds to only one element other than "0 " in the elements included in the Z v T subsets identified as a cyclic difference family with a parameter of (v, k, 1);
For each of the t subsets, for integers from "0" to "v-1" contained in the Z v based on k elements contained in each of the t subsets 1 "and" 0 "code values by assigning code values of" 1 "and" 0 "from" 0 "to" v-1 " A first sequence consisting of a total of N "1" and "0" code values in combination of partial sequences - N = tv and a code value of "1" and "0" for each of the t subsets, Generating the first sequence by combining the t partial sequences generated by assigning the first sequence to the first sequence, and generating code values of "1" and "0" constituting the first sequence in total N;
Performing a cyclic shift operation in a predetermined direction v-1 times for each of the t partial sequences composed of v code values of "1" and "0 " while performing each cyclic shift operation Generating a total of v-1 second sequences by combining the t partial sequences having completed the cyclic shift operation to generate a second sequence;
Matching the first sequence and the v-1 second sequences one by one for each of the v message distribution groups; And
For each of the v message distribution groups, distributing the N messages by tk based on N code values constituting each sequence matched to each of the v message distribution groups
And a data distribution storing method using the circulating series.
상기 제1 시퀀스를 생성하는 단계는
상기 t개의 부분 집합들 각각에 대해서, 상기 Zv에 포함되어 있는 "0"부터 "v-1"까지의 정수들 중 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하는 정수들에 대해 "1"의 코드 값을 할당하고, 상기 t개의 부분 집합들 각각에 포함되어 있는 k개의 원소들과 일치하지 않는 나머지 정수들에 대해 "0"의 코드 값을 할당함으로써, 상기 v개의 "1"과 "0"의 코드 값으로 구성된 상기 t개의 부분 시퀀스들을 생성하는 순환 차족을 활용한 데이터 분산 저장 방법.9. The method of claim 8,
The step of generating the first sequence
Constant, consistent with the k elements in one of the integer for each of the t of the subset, from "0" contained in the Z v to "v-1" included in each of the t partial set By allocating a code value of "1" to all of the t subsets and assigning a code value of "0 " to remaining integers not matching k elements contained in each of the t subsets, And generating the t partial sequences composed of code values of "1" and "0 ".
상기 v개의 메시지 분산 그룹들 각각에 대해 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계는
상기 N개의 메시지들 각각에 대해 순번 정보와 연관된 인덱스 값을 할당하는 단계
를 더 포함하고,
상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계는
상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값의 배열 순서와 상기 N개의 메시지들 각각에 할당되어 있는 인덱스 값을 비교한 후 상기 N개의 메시지들에 할당되어 있는 인덱스 값과 일치하는 배열 순서의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 순환 차족을 활용한 데이터 분산 저장 방법.11. The method of claim 10,
The step of distributing the N messages by tk for each of the v message distribution groups
Assigning an index value associated with the order information to each of the N messages
Further comprising:
The step of distributing the N messages by tk based on the N code values
For each of the v message distribution groups, an arrangement order of N code values constituting each sequence matched to each of the v message distribution groups is compared with an index value assigned to each of the N messages. And distributing the N messages by tk based on a code value of an array order corresponding to an index value assigned to the N messages.
상기 N개의 코드 값에 기초하여 상기 N개의 메시지들을 tk개씩 분산 할당하는 단계는
상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 v개의 메시지 분산 그룹들 각각에 매칭되어 있는 각 시퀀스를 구성하는 N개의 코드 값 중 tk개씩 존재하는 "1"의 코드 값을 확인한 후, 상기 v개의 메시지 분산 그룹들 각각에 대해, 상기 N개의 메시지들 중 상기 "1"의 코드 값에 대한 배열 순서와 일치하는 인덱스 값이 할당되어 있는 tk개의 메시지들을 분산 할당하는 순환 차족을 활용한 데이터 분산 저장 방법.12. The method of claim 11,
The step of distributing the N messages by tk based on the N code values
For each of the v message distribution groups, a code value of "1" existing in tk among N code values constituting each sequence matched to each of the v message distribution groups is checked, For each of the message distribution groups, tk messages to which an index value corresponding to the code value of the "1" of the N messages is allocated is distributed and distributed. .
상기 v개의 데이터 저장소들에 상기 N개의 메시지들이 tk개씩 분산 저장된 이후, 상기 N개의 메시지들에 대한 로드(load) 명령이 인가되면, 상기 로드 명령에 기초하여 상기 v개의 데이터 저장소들 중 tk개의 데이터 저장소들을 랜덤하게 선택하고, 상기 tk개의 데이터 저장소들 각각으로부터 상기 tk개의 데이터 저장소들 각각에 저장되어 있는 tk개의 저장 메시지들을 추출하는 단계; 및
상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 추출된 저장 메시지들을 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 단계
를 더 포함하는 순환 차족을 활용한 데이터 분산 저장 방법.13. The method of claim 12,
When a load command for the N messages is applied after the N messages are distributedly distributed in the v data stores, the tk data among the v data stores based on the load command, Randomly selecting the tanks and extracting tk stored messages from each of the tk data stores from each of the tk data stores; And
Loading the stored messages extracted by each tk from each of the tk data stores into data according to a load command for the N messages,
And storing the data in the storage unit.
상기 N개의 메시지들은 일부 메시지의 손실이 발생할 경우, 나머지 메시지들을 기초로 손실 메시지들의 복구가 가능한 최대 거리 분리 가능(Maximum Distance Separable: MDS) 코드이고,
상기 로드하는 단계는
상기 tk개의 데이터 저장소들 각각으로부터 tk개씩 저장 메시지들이 추출되면, 상기 추출된 저장 메시지들에 할당되어 있는 인덱스 값과 상기 N개의 메시지들에 할당된 인덱스 값을 비교하여 상기 N개의 메시지들 중 상기 추출된 저장 메시지들에 포함되어 있지 않은 잔여 메시지가 존재하는 것으로 확인되면, 상기 추출된 저장 메시지들을 기초로 상기 잔여 메시지를 복구하여 상기 추출된 저장 메시지들과 상기 복구된 잔여 메시지를 상기 N개의 메시지들에 대한 로드 명령에 따른 데이터로 로드하는 순환 차족을 활용한 데이터 분산 저장 방법.14. The method of claim 13,
The N messages are Maximum Distance Separable (MDS) codes capable of recovering lost messages based on remaining messages when loss of some messages occurs,
The loading step
Wherein when the stored messages are extracted from each of the tk data stores, the index value assigned to the extracted stored messages is compared with the index value assigned to the N messages, Recovering the stored messages based on the extracted stored messages and storing the extracted stored messages and the recovered residual messages in the N messages To load the data according to the load command for the data.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160171272A KR101893566B1 (en) | 2016-12-15 | 2016-12-15 | Data distribution storage apparatus and method using cyclic difference family |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160171272A KR101893566B1 (en) | 2016-12-15 | 2016-12-15 | Data distribution storage apparatus and method using cyclic difference family |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180069253A KR20180069253A (en) | 2018-06-25 |
KR101893566B1 true KR101893566B1 (en) | 2018-08-30 |
Family
ID=62805920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160171272A KR101893566B1 (en) | 2016-12-15 | 2016-12-15 | Data distribution storage apparatus and method using cyclic difference family |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101893566B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200104034A (en) | 2019-02-26 | 2020-09-03 | 전남대학교산학협력단 | Data distribution storage apparatus and method using partitioned iteration code |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101460062B1 (en) * | 2013-06-21 | 2014-11-10 | 한국항공대학교산학협력단 | System for storing distributed video file in HDFS(Hadoop Distributed File System), video map-reduce system and providing method thereof |
-
2016
- 2016-12-15 KR KR1020160171272A patent/KR101893566B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101460062B1 (en) * | 2013-06-21 | 2014-11-10 | 한국항공대학교산학협력단 | System for storing distributed video file in HDFS(Hadoop Distributed File System), video map-reduce system and providing method thereof |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200104034A (en) | 2019-02-26 | 2020-09-03 | 전남대학교산학협력단 | Data distribution storage apparatus and method using partitioned iteration code |
KR102197993B1 (en) | 2019-02-26 | 2021-01-04 | 전남대학교산학협력단 | Data distribution storage apparatus and method using partitioned iteration code |
Also Published As
Publication number | Publication date |
---|---|
KR20180069253A (en) | 2018-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10747780B2 (en) | Blockchain-based data processing method and device | |
US9195392B2 (en) | Distributed storage method, apparatus, and system | |
Vöcking | How asymmetry helps load balancing | |
US10237074B2 (en) | Redactable document signatures | |
US20110013777A1 (en) | Encryption/decryption of digital data using related, but independent keys | |
US9864550B2 (en) | Method and apparatus of recovering and encoding for data recovery in storage system | |
CN110930145A (en) | Cold wallet generation method, transaction information processing method, device and storage medium | |
US10831738B2 (en) | Parallelized in-place radix sorting | |
CN108829899B (en) | Data table storage, modification, query and statistical method | |
CN103942292A (en) | Virtual machine mirror image document processing method, device and system | |
US9479327B2 (en) | Apparatus and method for generating key | |
CN110730185A (en) | Block chain big data processing method and system based on distributed computation | |
KR101873879B1 (en) | Data distribution storage apparatus and method using relative difference set generated from the group having the two-dimensional element | |
KR101893566B1 (en) | Data distribution storage apparatus and method using cyclic difference family | |
KR102306676B1 (en) | Method and system for generating host keys for storage devices | |
US9858040B2 (en) | Parallelized in-place radix sorting | |
CN106658034A (en) | File storage and reading method and device | |
KR101496764B1 (en) | Method and apparatus for managing file to recover original file with at least pre-determined number file fragments | |
KR101873878B1 (en) | Data storage apparatus and method for storing a message dispersedly based on relative difference set | |
KR102197993B1 (en) | Data distribution storage apparatus and method using partitioned iteration code | |
KR101738415B1 (en) | Data storage apparatus and method for storing a message dispersedly | |
CN112181974B (en) | Identification information distribution method, system and storage device | |
KR101741186B1 (en) | Data distribution storage apparatus and method for verifying the locally repairable code | |
Fu et al. | Fast tamper location of batch DNA sequences based on reversible data hiding | |
KR101977119B1 (en) | Data distribution storage apparatus and method using difference covering arrays |
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 |