KR20140108618A - Apparatus and method for storing data using scalable distributed index - Google Patents
Apparatus and method for storing data using scalable distributed index Download PDFInfo
- Publication number
- KR20140108618A KR20140108618A KR1020140094932A KR20140094932A KR20140108618A KR 20140108618 A KR20140108618 A KR 20140108618A KR 1020140094932 A KR1020140094932 A KR 1020140094932A KR 20140094932 A KR20140094932 A KR 20140094932A KR 20140108618 A KR20140108618 A KR 20140108618A
- Authority
- KR
- South Korea
- Prior art keywords
- key
- data
- repository
- storage
- repositories
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/282—Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
Abstract
Description
아래의 실시예들은 데이터를 저장하기 위한 장치 및 방법에 관한 것이다.The following embodiments are directed to an apparatus and method for storing data.
확장 가능한 분산 인덱스를 사용하여, 하나 이상의 저장소들 내에 데이터를 분산하여 저장하는 장치 및 방법이 개시된다.An apparatus and method for distributing and storing data in one or more repositories using an expandable distributed index is disclosed.
데이터 저장 용량을 증대시키기 위해, '수직 확장' 방법 및 '수평 확장' 방법이 사용될 수 있다. 수직 확장은, 데이터를 저장하기 위해 좀 더 사양이 좋은 기기를 사용하는 방법을 의미한다. 수평 확장은, 데이터를 저장하는 기기를 추가함으로써 데이터 저장 용량의 확대를 꾀하는 방법이다. 수직 확장은 기기가 처리할 수 있는 용량을 초과한 데이터를 처리할 수 없다. 따라서, 일반적으로, 인터넷 기업과 같은 대용량의 데이터를 처리해야 하는 다수의 기업들은 수평 확장을 사용하여 대용량의 데이터를 처리한다.In order to increase the data storage capacity, the 'vertical expansion' method and the 'horizontal expansion' method may be used. Vertical expansion refers to the use of more specialized equipment to store data. Horizontal expansion is a method of enlarging the data storage capacity by adding a device for storing data. Vertical expansion can not handle data that exceeds the capacity that the device can handle. Thus, in general, many companies that need to process large amounts of data, such as Internet companies, use horizontal scaling to process large amounts of data.
관계형 데이터베이스 관리 시스템(Relational DataBase Management System; RDBMS)은 그 특성상 수평으로 확장될 수 없다. 따라서, RDBMS를 대용량의 데이터를 위해 사용할 경우, 샤딩(sharding)(또는, 데이터 분할(data partitioning))을 통해 RDBMS의 전체 용량이 확장될 수 있다. 즉, 동일한 스키마(schema)를 사용하여 상이한 데이터를 저장하는 하나 이상의 RDBMS 기기들이 사용될 수 있다.The Relational DataBase Management System (RDBMS) can not be horizontally extended due to its nature. Therefore, when an RDBMS is used for a large amount of data, the entire capacity of the RDBMS can be expanded through sharding (or data partitioning). That is, one or more RDBMS devices may be used that store different data using the same schema.
하나 이상의 RDBMS 기기들이 사용되는 경우에는, 어떤 RDBMS 기기들이 있는지를 알고 있는 어플리케이션 서버(application server)가 사용될 수 있으며, 별도의 미들웨어(middleware)에 의해 실제 데이터 위치가 은닉될 수 있다.When one or more RDBMS devices are used, an application server that knows which RDBMS devices are available may be used, and the actual data location may be hidden by a separate middleware.
샤딩(또는, 데이터 분할)이 사용될 경우, 더 큰 용량의 데이터를 처리하기 위해 RDBMS 기기가 추가될 때, 하나 이상의 RDBMS 기기들 간에 데이터가 재분배되어야 하는 문제가 발생할 수 있다. 이러한 데이터의 재분배는 RDBMS 기기들의 운영 중에 이루어질 수 있다. 그러나, 데이터의 재분배가 빠르게 수행될 수 없기 때문에 즉시성이 떨어질 수 있다.데이터를 분산하여 저장하기 위해, 분산 키-값(key-value) DB가 사용될 수 있다. 분산 키-값 DB는 일관된(consistent) 해슁(hashing) 방식을 사용함으로써 데이터를 분산하여 저장할 수 있다. 일관된 해슁 방식은 데이터 확장에 있어서 구조적인 이점을 가질 수 있다. 즉, 일관된 해슁 방식을 사용하는 데이터 저장 시스템은 서버를 추가함으로써 처리 가능한 전체 데이터 양을 증가시킬 수 있다. 그러나, 이러한 해슁 방식은 대소 개념을 지원하지 못하기 때문에, 범위 검색에 취약하며, 2 차원 이상의 데이터를 처리할 수 없다.When sharding (or data partitioning) is used, the problem may arise that data is redistributed between one or more RDBMS devices when an RDBMS device is added to process a larger amount of data. Redistribution of such data can be done during operation of RDBMS devices. However, instant redemption may be slow because the redistribution of data can not be performed quickly. To distribute and store data, a distributed key-value DB can be used. The distributed key-value DB can distribute and store data by using a consistent hashing scheme. Consistent hashing schemes can have structural advantages in data expansion. That is, a data storage system using a coherent hashing scheme can increase the total amount of data that can be processed by adding a server. However, since this hashing scheme does not support the concept of size, it is vulnerable to range retrieval and can not process data more than two dimensions.
분산 키-값 DB를 사용하는 시스템 내의 데이터는 해슁에 의해 분산된다. 따라서, 범위 검색을 위해 순차적(sequential)으로 검색 결과가 획득될 수 없고, 검색 범위 내의 키들이 각각 조회되어야 한다.Data in a system using a distributed key-value DB is distributed by hashing. Therefore, the search results can not be obtained sequentially for the range search, and the keys within the search range must be inquired individually.
예컨대, A 라는 필드의 값이 1에서 10 사이인 데이터들을 찾는 경우, RDBMS에서는 범위 검색을 위해 'select * from foo where A >= 1 and A <= 10'와 같은 질의어가 사용될 수 있다. 반면, 키-값 DB는 1부터 10까지의 데이터를 일일이 조회해야 한다.For example, in the RDBMS, a query such as' select * from foo where A '= 1 and A < = 10' may be used to search for ranges where the value of the field A is between 1 and 10. On the other hand, the key-value DB needs to inquire data from 1 to 10 one by one.
따라서, 해슁을 사용하는 키-값 DB는 2 차원 이상의 데이터를 처리하는 공간적 인덱스(spatial index)를 가질 수 없다. 즉, 특정 공간 내에 있는 어떤 데이터가 처리되어야 할 때, 상기 공간 내에 있는 데이터는 키-값 DB의 여러 노드들(즉, 서버들)에 분산되어 저장되어 있기 때문에, 상기의 여러 노드들 중 어떤 노드에서도 온전한 인덱스가 갖추어질 수 없다.Therefore, a key-value DB using hashing can not have a spatial index for processing data of two or more dimensions. That is, when data in a specific space is to be processed, since data in the space is distributed and stored in a plurality of nodes (i.e., servers) of the key-value DB, A complete index can not be prepared.
본 발명의 일 실시예는 트리 구조로 구성된 하나 이상의 저장소들을 사용하여 데이터를 저장하는 장치 및 방법을 제공할 수 있다.One embodiment of the present invention may provide an apparatus and method for storing data using one or more repositories configured in a tree structure.
본 발명의 일 실시예는 계층적인 키를 사용하여 데이터가 저장될 저장소를 결정하는 장치 및 방법을 제공할 수 있다.One embodiment of the present invention may provide an apparatus and method for determining a repository in which data will be stored using a hierarchical key.
본 발명의 일 측에 따르면, 트리 구조로 구성된 하나 이상의 저장소들을 포함하고 - 각 저장소는 상기 트리에서의 하나의 노드에 대응함 -, 상기 하나 이상의 저장소들 각각에게는 0 개 이상의 서브 키들을 갖는 계층적인 키가 할당되며, 상기 하나 이상의 저장소들 중 임의의 제1 저장소를 루트로한 서브 트리 내의 저장소들은 상기 제1 저장소의 제1 키에 대응하는 데이터를 저장하고, 상기 제1 키는 제2 키에 하나 이상의 서브 키들이 연쇄된 키이고, 상기 제2 키는 제2 저장소의 키이고, 상기 제2 저장소는 상기 제1 저장소의 부모 저장소인, 데이터 저장 장치가 제공된다.According to one aspect of the present invention there is provided a method for managing a tree, comprising: storing one or more stores in a tree structure, wherein each store corresponds to a node in the tree; each of the one or more stores has a hierarchical key Wherein the repositories in the subtree rooted at any one of the one or more repositories store data corresponding to a first key of the first repository and the first key is one Wherein the subkeys are a concatenated key, the second key is a key of a second repository, and the second repository is a parent repository of the first repository.
상기 하나 이상의 저장소들 각각은 관계형 데이터베이스 기기일 수 있다.Each of the one or more repositories may be a relational database device.
상기 하나 이상의 저장소들 각각은 상기 관계형 데이터베이스의 인덱스, 키 및 명령을 이해 및 처리하는 미들웨어를 포함할 수 있다.Each of the one or more repositories may include middleware that understands and processes indexes, keys, and instructions of the relational database.
상기 계층적인 키는 수문자 및 구분자로 조합된 문자열일 수 있다.The hierarchical key may be a string combined with a numeric character and a delimiter.
상기 제1 키에 대응하는 데이터는 데이터의 키의 접두어들 중 하나가 상기 제1 키와 동일한 데이터를 의미할 수 있다.The data corresponding to the first key may mean data one of the prefixes of the key of the data is the same as the first key.
상기 접두어는 상기 데이터의 키의 n 개의 서브 키들 중 앞의 i 개의 서브 키들일 수 있다.The prefix may be the first i subkeys among the n subkeys of the key of the data.
i는 1 이상 n 이하일 수 있다.i may be 1 or more and n or less.
데이터의 키의 접두어들 중 하나가 저장소의 키와 동일하면, 상기 데이터는 상기 저장소의 키에 대응할 수 있다.If one of the key prefixes of the data is the same as the key of the repository, the data may correspond to the key of the repository.
상기 제1 저장소는 상기 제1 저장소의 키에 대응하는 데이터 중 상기 제1 저장소의 자식 저장소의 키에 대응하지 않는 데이터를 저장할 수 있다.The first repository may store data that does not correspond to the key of the child repository of the first repository among the data corresponding to the key of the first repository.
상기 데이터 저장 장치에 제3 저장소를 추가하는 경우, 상기 제3 저장소의 제3 키에 대응하는 데이터를 상기 제1 저장소로부터 상기 제3 저장소로 이동시킬 수 있고, 상기 제3 저장소는 상기 제1 저장소의 자식 저장소일 수 있다.
Wherein the third storage is capable of moving data corresponding to a third key of the third storage from the first storage to the third storage when the third storage is added to the data storage device, Lt; / RTI >
상기 제1 저장소의 저장량이 미리 정의된 기준에 도달하였을 때, 상기 데이터 저장 장치는 상기 추가 및 상기 데이터 이동을 수행할 수 있다.When the amount of storage of the first storage reaches a predefined criterion, the data storage device may perform the addition and the data movement.
상기 제1 저장소는 상기 제1 저장소의 하나 이상의 자식 저장소들에게 검색 범위에 대응하는 키를 갖는 데이터의 제1 목록들을 요청할 수 있고, 상기 제1 저장소가 저장한 데이터 중 상기 검색 범위에 대응하는 데이터의 제2 목록을 상기 요청에 따라 반환된 상기 제1 목록들에 병합하여 상기 검색 범위에 대한 결과로서 반환할 수 있다.The first repository may request one or more child repositories of the first repository for a first list of data having a key corresponding to the retrieval scope, May be merged into the first lists returned according to the request and returned as a result for the search range.
본 발명의 다른 일 측에 따르면, 하나 이상의 저장소들을 트리 구조로 구성하는 단계 - 각 저장소는 상기 트리에서의 하나의 노드에 대응함 -, 상기 하나 이상의 저장소들 각각에게 0 개 이상의 서브 키들을 갖는 계층적인 키를 할당하는 단계 및 상기 하나 이상의 저장소들 중 임의의 제1 저장소를 루트로한 서브 트리 내의 저장소들 내에 상기 제1 저장소의 제1 키에 대응하는 데이터를 저장하는 단계를 포함하고, 상기 제1 키는 제2 키에 하나 이상의 서브 키들이 연쇄된 키이고, 상기 제2 키는 제2 저장소의 키이고, 상기 제2 저장소는 상기 제1 저장소의 부모 저장소인, 데이터 저장 방법이 제공된다.According to another aspect of the present invention there is provided a method of configuring one or more repositories in a tree structure, each repository corresponding to one node in the tree, And storing data corresponding to a first key of the first repository in repositories in a subtree rooted at any first one of the one or more repositories, Wherein the key is a key in which one or more subkeys are concatenated to a second key, the second key is a key of a second repository, and the second repository is a parent repository of the first repository.
상기 저장하는 단계는, 상기 제1 저장소의 키에 대응하는 데이터 중 상기 제1 저장소의 자식 저장소의 키에 대응하지 않는 데이터를 상기 제1 저장소에 저장하는 단계를 포함할 수 있다.The storing may include storing, in the first storage, data that does not correspond to a key of the child storage of the first storage among data corresponding to the key of the first storage.
상기 데이터 저장 방법은, 상기 제1 저장소의 자식 저장소로서 상기 하나 이상의 저장소들에 제3 저장소를 추가하는 단계 및 상기 제3 저장소의 제3 키에 대응하는 데이터를 상기 제1 저장소로부터 상기 제3 저장소로 이동시키는 단계를 더 포함할 수 있다.Wherein the data storage method further comprises: adding a third storage to the one or more stores as a child storage of the first storage and transferring data corresponding to a third key of the third storage from the first storage to the third storage To the mobile terminal.
상기 추가하는 단계 및 상기 이동시키는 단계는, 상기 제1 저장소의 저장량이 미리 정의된 기준에 도달하였을 때 수행될 수 있다.The adding and moving may be performed when the amount of storage in the first reservoir reaches a predefined criterion.
상기 제이터 저장 방법은 상기 제1 저장소 상기 제1 저장소의 하나 이상의 자식 저장소들에게 검색 범위에 대응하는 키를 갖는 데이터의 제1 목록들을 요청하는 단계, 상기 하나 이상의 자식 저장소들이 상기 제1 목록들을 반환하는 단계 및 상기 제1 저장소가 저장한 데이터 중 상기 검색 범위에 대응하는 데이터의 제2 목록을 상기 반환된 제1 목록들에 병합하여 상기 검색 범위에 대한 결과로서 반환하는 단계를 더 포함할 수 있다.Wherein the one or more child repositories of the first repository are requested by the first repository, the first repositories of the one or more child repositories of the first repository, And returning a second list of data corresponding to the search range out of the data stored in the first store to the returned first lists as a result for the search range have.
트리 구조로 구성된 하나 이상의 저장소들을 사용하여 데이터를 저장하는 장치 및 방법이 제공된다.An apparatus and method for storing data using one or more repositories configured in a tree structure are provided.
계층적인 키를 사용하여 데이터가 저장될 저장소를 결정하는 장치 및 방법이 제공된다.An apparatus and method for determining a repository for storing data using a hierarchical key is provided.
데이터가 저장됨에 따라 트리 구조로 저장소를 확장하고, 확장된 저장소로 데이터를 이동하는 장치 및 방법이 제공된다.An apparatus and method for extending a storage into a tree structure and moving data to an extended storage as data is stored are provided.
질의문을 자식 노드에 대응하는 자식 저장소로 전달하고, 자식 저장소로부터 반환된 데이터 목록을 질의문에 대한 검색 결과로서 병합하여 반환하는 장치 및 방법이 제공된다.There is provided an apparatus and method for delivering a query to a child store corresponding to a child node, and for merging and returning a list of data returned from the child store as a search result for a query.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 장치(100)를 나타낸다.
도 2는 본 발명의 일 예에 따른 장치(100)에 저장소를 추가하는 과정을 설명하는 도면이다.
도 3은 본 발명의 일 예에 따른 장치(100)에 대한 범위 검색을 설명한다.
도 4는 본 발명의 일 실시예에 따른 데이터 저장 방법의 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 장치(100)의 확장 방법의 흐름도이다.
도 6은 본 발명의 일 예에 따른 장치(100)의 범위 검색의 흐름도이다.1 shows a
2 is a diagram illustrating a process of adding a repository to the
FIG. 3 illustrates a range search for
4 is a flowchart of a data storage method according to an embodiment of the present invention.
5 is a flow diagram of a method of extending an
Figure 6 is a flow diagram of a range search of an
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
Hereinafter, an embodiment of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited to or limited by the embodiments. Like reference symbols in the drawings denote like elements.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 장치(100)를 나타낸다..Figure 1 illustrates a
데이터 저장 장치(100)(이하, 장치(100)로 약술한다.)는 하나 이상의 저장소들(110, 120, 130, 140 및 150)을 포함할 수 있다. 여기에서 "저장소"란 데이터를 저장하는 물리적 또는 논리적인 공간을 의미한다. 예를 들어, "저장소"는 하나의 관계형 데이터베이스 또는 파일 시스템, 혹은 동일한 데이터들에 대한 복제본(replica)들의 집합인 분산 클러스터 일 수 있다. The data storage device 100 (hereinafter abbreviated as device 100) may include one or
본 발명의 실시예에 따르면, 각 저장소들은 논리적으로 트리 형태의 계층적 구조를 갖는다. 다시 말해, 각 저장소들은 트리에서의 하나의 노드에 대응하며, 임의의 두 저장소들 간에는 상기 두 저장소에 대응하는 노드들 간의 관계에 따라 부모-자식 관계 또는 형제 관계 등이 성립할 수 있다. According to an embodiment of the present invention, each repository has a hierarchical structure logically in the form of a tree. In other words, each repository corresponds to one node in the tree, and between any two repositories, a parent-child relationship or sibling relationship may be established depending on the relationship between the nodes corresponding to the two repositories.
도 1을 참조하면, 제1 저장소(110)는 트리 구조의 루트 노드에, 제2 저장소(120) 및 제 3저장소(130)는 각각 제1 저장소(110)의 오른쪽 자식 노드 및 왼쪽 자식 노드에 대응한다. 제1 저장소(110)는 제2 저장소(120) 및 제3 저장소(130)의 부모 저장소이다. 제2 저장소(120)는 제1 저장소(110)의 (왼쪽) 자식 저장소이다. 제2 저장소(120)는 제3 저장소(130)의 형제 저장소이다. 제 4 저장소(140) 및 제 5 저장소(150)은 각각 제3 저장소(130)의 왼쪽 자식 노드 및 오른쪽 자식 노드에 대응한다.Referring to FIG. 1, the
저장소들(110, 120, 130, 140 및 150) 각각에는 각 저장소를 식별하기 위한 키(key)가 할당될 수 있다. 상기 키는 저장소들간의 계층 구조를 표현할 수 있는 형태로 구성된다. 예를 들어, 하나의 키는 하나 이상의 서브 키(sub-key) 및 이를 구분하는 구분자(separator)를 포함하여 구성될 수 있다. 여기에서 서브 키는 임의의 서브 트리 내의 모든 노드들을 대표하는 값이 된다. 도 1을 참조하면, "korea"는 제 1 저장소(110)를 루트로 하는 서브 트리를 대표하는 key 이고, "seoul"은 제 3 저장소(130)를 루트로 하는 서브 트리를 대표하는 key 이다. 도 1에서 "korea", "kyeonggi""seoul""kangbuk""kangnam" 등은 각각 하나의 서브 키가 되고, "."을 구분자로 사용하여 "korea.seoul.kangnam"과 같은 하나의 key를 구성하게 된다.Each of the
하기 수학식 1은 이와 같이 계층적인 키를 나타내는 정규식(regular expression)의 일 예 이다.Equation (1) is an example of a regular expression indicating such a hierarchical key.
여기서, key는 계층적인 키를 나타내고, key는 수문자(alphanumeric)와 구분자 "."으로 조합된 문자열(string)이 된다. Here, key represents a hierarchical key, and key is a string combined with alphanumeric and delimiter "."
일반적인 영문자, 숫자 및 구분자 "."를 이용하는 경우 키는 수학식 1과 같이 나타낼 수 있으나, 본 발명이 이에 한정되는 것은 아니며 다른 문자를 포함하거나, 또는 다른 형태의 구분자를 사용할 수 있다. 또한, 키가 반드시 하나의 문자열로 구성될 필요는 없으며, 예를 들어 연결 리스트(linked list)와 같은 형태로 구성할 수도 있다. 이하에서는 구분자 등으로 구분된 서브 키들을 차례로 제1 서브 키, 제2 서브키, ··· 및 제n 서브키라고 한다. 루트 노드의 레벨(level)을 1이라고 할 때, 레벨 n에 위치한 노드에 대응하는 저장소를 식별하는 키는 n개의 서브키를 포함하게 된다.In the case of using a normal alphabetic character, a number, and a delimiter ". &Quot;, the key can be expressed as Equation (1), but the present invention is not limited thereto and other characters may be used or other types of delimiters may be used. Also, the key does not necessarily have to be composed of a single string, but may be configured in the form of, for example, a linked list. Hereinafter, sub keys divided by delimiters are referred to as a first sub key, a second sub key, ..., and an nth sub key, respectively. Assuming that the level of the root node is 1, the key identifying the repository corresponding to the node located at level n will contain n subkeys.
한편, 루트 노드에 대응하는 저장소의 키는 공백(null)일 수 있다. 이러한 경우 루트 노드는 0개의 서브키를, 레벨 n에 위치한 노드에 대응하는 저장소를 식별하는 키는 n-1개의 서브키를 포함하게 된다. 예를 들어, 계층적인 키는 상기의 수학식 1의 정규식에 의해 생성된 문자열 또는 공백 문자열일 수 있다.On the other hand, the key of the repository corresponding to the root node may be null. In this case, the root node includes 0 subkeys, and the key identifying the repository corresponding to the node located at level n includes n-1 subkeys. For example, the hierarchical key may be a string generated by the regular expression of Equation (1) or an empty string.
도 1에서, 제1 저장소(110)에게 할당된 키(115)는 "korea"이다. 상기의 키(115)는 제1 서브 키 "korea" 만을 갖는다.In Figure 1, the key 115 assigned to the
제2 저장소(120)에게 할당된 키(125)는 "korea.gyeonggi"이다. 상기의 키(125)는 제1 서브 키 "korea" 및 제2 서브 키 "gyeonggi"를 갖는다. 제3 저장소(130)에게 할당된 키(135)는 "korea.seoul"이다. 상기의 키(135)는 제1 서브 키 "korea" 및 제2 서브 키 "seoul"을 갖는다. 제4 저장소(140)에게 할당된 키(145)는 "korea.seoul.kangbuk"이다. 상기의 키(135)는 제1 서브 키 "korea", 제2 서브 키 "seoul" 및 제3 서브 키 "kangbuk"을 갖는다. 제5 저장소(150)에게 할당된 키(155)는 "korea.seoul.kangnam"이다. 상기의 키(155)는 제1 서브 키 "korea", 제2 서브 키 "seoul" 및 제3 서브 키 "kangnam"을 갖는다.The key 125 assigned to the
저장소에게 할당된 키는, 상기 저장소의 부모 저장소의 키에 하나 이상의 서브 키들이 연쇄된 키일 수 있다.The key assigned to the repository may be a key that is chained to one or more subkeys in the key of the repository's parent repository.
예컨대, 제4 저장소(140)에게 할당된 키는, 제4 저장소의 부모 저장소인 제3 저장소(130)의 키 "korea.seoul"에 서브 키 "kangbuk"이 연쇄된 키이다.For example, the key assigned to the
즉, 저장소 p 및 저장소 c 가 서로 부모 저장소-자식 저장소의 관계에 있을 경우, 저장소 p의 키 kp가 제1 서브 키 sk1 내지 제n 서브 키 skn을 포함하면(여기서, n은 1 이상의 정수이다.), 저장소 c의 키 kc는 제1 서브 키 sk1 내지 제n skn를 포함하고, 제 n+1 서브 키 sk(n+1) 내지 제m 서브 키 skm을 포함할 수 있다. 여기서, m는 n + 1 이상의 정수이다.
That is, the store p and store c parent store each other if the relationship between the child storage, if the storage p of the key k p a first sub-key sk 1) to (n includes sub key sk n (where, n is at least 1 an integer), the storage key k c a c a first sub-key sk 1 to the n can include sk n, and includes a first n + 1 sub-key sk (n + 1) to the m-th sub-key sk m have. Here, m is an integer of n + 1 or more.
본 발명의 일실시예에 따르면, 장치(100)는 데이터들을 각 저장소의 키에 따라 분류하여 저장할 수 있다. 데이터는 키를 갖는다. 데이터의 키는 데이터의 분류 체계에 이용되는 식별자이다. 데이터의 키는 데이터의 분류 체계 상 위치를 가리킬 수 있다. 장치(100) 내의 트리 구조가 분류 체계를 나타낼 경우, 데이터는 데이터의 키 값에 따라 특정한 저장소(또는, 저장소의 키)에 대응할 수 있다.According to one embodiment of the present invention, the
특정 저장소를 나타내는 노드를 루트로 한 서브 트리에서, 상기 서브 트리 내의 저장소들은 상기의 특정 저장소의 키에 대응하는 데이터를 저장한다.In a subtree rooted at a node representing a particular repository, repositories in the subtree store data corresponding to the key of the particular repository.
예컨대, 제3 저장소(130) 루트로 한 서브 트리(160)에서, 서브 트리(160) 내의 저장소들(130, 140 및 150)은 제3 저장소(130)의 키(135) "korea.seoul"에 대응하는 데이터를 저장한다.For example, in a
또한, 제4 저장소(140)를 루트로 한 서브 트리는 제4 저장소(140)만을 포함한다. 따라서, 제4 저장소(140)는 제4 저장소(140)의 키(145) "korea.seoul.kangbuk"에 대응하는 데이터를 저장할 수 있다.In addition, the subtree rooted at the
또한, 제5 저장소(150)를 루트로 한 서브 트리는 제5 저장소(150)만을 포함한다. 따라서, 제5 저장소(150)는 제5 저장소(150)의 키(155) "korea.seoul.kangnam"에 대응하는 데이터를 저장할 수 있다.In addition, the subtree rooted at the
여기서, 저장소의 키에 대응하는 데이터는, 데이터의 키의 접두어(prefix)들 중 하나가 상기의 저장소의 키와 동일한 데이터를 의미할 수 있다.Here, the data corresponding to the key of the repository may mean data in which one of the prefixes of the key of the data is the same as the key of the above-mentioned repository.
키 x의 접두어란, 계층적인 키 x가 n 개의 서브 키들 x1, x2, x3, ..., xn을 포함할 때, x의 서브 키들 중 앞의 i 개(i는 1 이상 n 이하)의 서브 키들을 포함하는 키를 의미한다. 예컨대, 계층적인 키 "a.b.c"의 접두어는 "a", "a.b" 및 "a.b.c"일 수 있다.The prefix of key x means that when the hierarchical key x contains n subkeys x 1 , x 2 , x 3 , ..., x n , the first i of the subkeys of x (Hereinafter referred to as " key "). For example, the prefixes of the hierarchical key "abc" may be "a "," ab ", and "abc ".
예컨대, 데이터의 키가 "korea.seoul.kangnam"이면, "korea.seoul"은 상기의 키의 접두어들 중 하나이다. 따라서, 상기의 데이터는 제1 저장소(110)의 키(115) 및 제3 저장소(130)의 키(135) "korea.seoul"에 대응하고, , 제4 저장소(140)의 키(145) 및 제5 저장소(150)의 키(155)에는 대응하지 않는다.For example, if the key of the data is "korea.seoul.kangnam" then "korea.seoul" is one of the prefixes of the above keys. The data thus corresponds to the key 115 of the
예컨대, 데이터의 키가 "korea.seoul.kangnam.shinsa"이면, 상기의 키의 접두어는 "korea", "korea.seoul", "korea.seoul.kangnam"을 포함한다. 상기의 데이터는 제1 저장소(110)의 키(115), 제3 저장소(130)의 키(135) 및 제5 저장소(150)의 키(155)에 대응한다.For example, if the key of the data is "korea.seoul.kangnam.shinsa ", the prefixes of the keys include" korea ", " korea.seoul ", and " korea.seoul.kangnam ". The above data corresponds to the key 115 of the
데이터는 자신의 키에 따라 장치(100)의 하나 이상의 저장소들(110, 120, 130, 140 및 150) 중 하나의 저장소 내에 저장될 수 있다.The data may be stored in a repository of one of the one or
예를 들어, 저장소는 1) 상기 저장소의 키에 대응하며, 2) 상기 저장소의 자식 저장소의 키에는 대응하지 않는, 데이터를 저장할 수 있다.For example, the repository may store data that 1) corresponds to the key of the repository, and 2) does not correspond to the key of the repository's child repository.
저장소 p에 대응하는 데이터는 상기 저장소 p의 자식 저장소 c에도 대응할 수 있다. 데이터가 저장소 p 및 저장소 c에 대응하는 경우, 상기 데이터는, 저장소 p가 아닌, 저장소 c를 루트로 한 서브 트리 내의 저장소들 중 하나의 저장소 내에 저장될 수 있다.The data corresponding to the repository p may correspond to the child repository c of the repository p. If the data corresponds to repository p and repository c, then the data may be stored in one of the repositories in the subtree rooted at repository c, rather than repository p.
데이터가 키가 "korea.seoul.kangnam.shinsa" 또는 "korea.seoul.kangnam.shinsa.1"이면, 상기 데이터는 제1 저장소(110), 제3 저장소(130) 및 제5 저장소(150)에 대응한다. 상기 데이터는 제5 저장소(150) 내에 저장될 수 있다.If the data is "korea.seoul.kangnam.shinsa" or" korea.seoul.kangnam.shinsa.1" ;, the data is stored in the
데이터의 키가 "korea.gangwon"이면, 상기 데이터는 제1 저장소(110)에 대응한다. 상기 데이터는 제1 저장소(110) 내에 저장될 수 있다.If the key of the data is "korea.gangwon ", the data corresponds to the
전술된 것과 같은 저장 방식이 사용될 경우, 계층적인 키에 의해, 실제 데이터가 위치한 저장소가 검색될 수 있다. 즉, 실제 데이터가 위치한 저장소는 계층적인 키 전체 또는 키의 접두어(prefix)에 의해 검색될 수 있다.When a storage method such as the one described above is used, the repository in which the actual data is located can be retrieved by the hierarchical key. That is, the repository where the actual data is located can be retrieved by the entire hierarchical key or the prefix of the key.
이하에서는, 데이터의 키가 "korea.seoul.kangnam.shinsa"인 데이터가 검색되는 경우의 예를 들어 설명한다. 루트 노드에 대응하는 제1 저장소(110)의 키(115)가 데이터의 키와 비교된다. 데이터의 키의 접두어들 중 하나인 "korea"는 제1 저장소(110)의 키(115)와 동일하다. 또한, 제3 저장소(130) 및 제1 저장소(110)는 서로 자식-부모의 관계에 있다. 데이터의 키의 접두어들 중 하나인 "korea.seoul"은 제3 저장소(130)의 키(135)와 동일하다. 제5 저장소(150) 및 제1 저장소(110)는 서로 자식-부모의 관계에 있다. 데이터의 키의 접두어들 중 하나인 "korea.seoul.kangnam"은 제5 저장소(150)의 키(155)와 동일하다. 따라서, 키가 "korea.seoul.kangnam.shinsa"인 데이터는 제1 저장소(110) 및 제3 저장소(130)를 거쳐, 제5 저장소(150) 내에서 검색될 수 있다.Hereinafter, an example in which data with a key of data "korea.seoul.kangnam.shinsa" is searched will be described. The key 115 of the
이하에서는, 데이터의 키가 "korea.jejudo"인 데이터가 검색되는 경우의 예를 들어 설명한다. 데이터의 키의 접두어들 중 하나인 "korea"는 제1 저장소(110)의 키(115)와 동일하다. 데이터의 키의 접두어들인 "korea" 및 "korea.jejudo"는 제2 저장소(120)의 키(125) 및 제3 저장소(130)의 키(135)와는 동일하지 않다. 따라서, 키가 "korea.jejudo"인 데이터는 제1 저장소(110) 내에서 검색될 수 있다.
Hereinafter, an example in which data having a key of "korea.jejudo" is searched will be described. One of the prefixes of the keys of the data, "korea" is the same as the key 115 of the
도 2는 본 발명의 일 예에 따른 장치(100)에 저장소를 추가하는 과정을 설명하는 도면이다.2 is a diagram illustrating a process of adding a repository to the
도 1을 참조하여 전술된 장치(100)는 저장소의 키 "korea"에 대응하는 데이터를 저장하기 위해, 저장소가 추가된 것으로 간주될 수 있다.The
초기 상태(210)에서, 장치(100)는 제1 저장소(110) 만을 갖는다.In the
제1 저장소(110)의 키(115)는 "korea"이다. 따라서, 키가 "korea"인 데이터, 키가 "korea.gyeonggi"로 시작하는 데이터 및 키가 "korea.seoul"로 시작하는 데이터는 모두 제1 저장소(110) 내에 저장될 수 있다.The key 115 of the
장치(100)가 운용됨에 따라, 특정한 접두어를 갖는(즉, 특정한 문자열로 시작하는) 키를 갖는 데이터(예컨대, "korea.seoul")가 많아지면, 장치(100)는 상기의 특정한 접두어를 키로 갖는 저장소를 추가할 수 있다. 상기의 추가는 장치(100)의 트리 구조가 확장됨을 의미한다. 즉, 상기의 확장은 장치(100)의 트리 구조에 새로운 저장소(또는, 새로운 저장소를 나타내는 노드)가 추가되는 것을 의미한다.As the
데이터가 저장된 상태(220)에서, 제1 저장소(110)는 키(115)에 대응하는 하나 이상의 데이터(260)를 저장한다.In the
제1 저장소(110)가 하나 이상의 데이터(260)를 모두 처리할 수 없는 경우, 새로운 저장소의 추가가 요구될 수 있다. 예를 들어, 장치(100)는 하기의 상태들(230, 240 및 250)을 거쳐 확장될 수 있다.If the
노드 생성 상태(230)에서 도시된 것과 같이, 장치(100)는 제1 저장소(110)의 자식 저장소인 제3 저장소(130)를 생성할 수 있다.The
즉, 제3 키(135)에 대응하는 데이터(즉, 데이터의 키가 "korea.seoul"로 시작하는 데이터)는 제3 저장소(130)로 별개로 분리될 수 있고, 분리 후 제3 저장소(130)에 의해 처리될 수 있다.That is, the data corresponding to the third key 135 (i.e., data whose data key starts with "korea.seoul ") can be separated separately from the
추가 알림 상태(240)에서, 새로 생성된 제3 저장소(130)는 자신의 부모 저장소인 제1 저장소(110)에게 자신이 처리할 키(즉, 제3 키(135))를 통지할 수 있다. 상기의 통지는 저장소의 추가를 알리는 것이다.In the
데이터 이동 상태(250)에서, 통지를 수신한 제1 저장소(110)는 자신이 저장한 데이터 중, 통지된 제3 키(135)에 대응하는 데이터(270)를 제3 저장소(130)로 이동시킬 수 있다. 예컨대, 통지를 수신한 제1 저장소(110)는 자신이 저장한 데이터 중, 통지된 제3 키(135)에 대응하는 데이터(270)를 제3 저장소(130)로 복사할 수 있다. 상기의 복사가 완료되면, 제1 저장소(110)는 자식 저장소(즉, 제3 저장소(130))가 보유한 데이터를 중복해서 가질 필요가 없다. 따라서, 1 저장소(110)는 자신이 저장한 데이터 중 제3 저장소(130)로 복사된 데이터를 삭제할 수 있다. 상기의 삭제 후, 제1 저장소(110)는 제1 키(115)에 대응하는 데이터 중 제3 키(135)에 대응하지 않는 데이터를 저장하게 된다.In the
제3 저장소의 제3 키(135)에 대응하는 데이터(270)를 제1 저장소(110)로부터 제3 저장소(130)로 이동함으로써 제1 저장소(110)의 저장량이 감소될 수 있다.The amount of storage in the
장치(100)는 제1 저장소(110)에 새로운 데이터가 삽입됨으로써 제1 저장소(110)의 저장량이 미리 정의된 기준에 도달하였을 때, 전술된 제3 저장소(130)의 생성 및 제3 저장소(130)로의 데이터의 이동을 수행할 수 있다.The
상기의 확장 중, 장치(100)는 (부분적 또는 전체적으로) 중단되지 않을 수 있다. 또한, 상기의 확장에 의해 데이터 또한 자동으로 복제(replication)될 수 있다.Of the above extensions, the
상기의 확장 중, 제3 키(135)에 대응하는 신규 유입 데이터는 확장에 의해 생성된 자식 노드에 대응하는 제3 저장소(130)에게 전달된다.Of the above extensions, new incoming data corresponding to the
장치(100)의 축소(즉, 트리의 노드가 삭제되는 것)는 전술된 장치(100)의 확장의 역순으로 진행될 수 있다.
The reduction of the device 100 (i.e., the nodes of the tree being deleted) may proceed in the reverse order of the expansion of the
도 3은 본 발명의 일 예에 따른 장치(100)에 대한 범위 검색을 설명한다.FIG. 3 illustrates a range search for
특정한 조건을 만족하는 데이터를 조회하기 위해 질의문이 사용될 수 있다. 질의문은 특정한 검색 범위에 대응하는 키를 갖는 데이터의 목록을 질의하는 문장일 수 있다.A query can be used to query data that meets a specific condition. A query may be a statement that queries a list of data having a key corresponding to a particular search scope.
장치(100)의 저장소들(110, 120, 130, 140 및 150)의 전부 또는 일부는 질의문에 대하여 데이터를 검색할 수 있다. 저장소들(110, 120, 130, 140 및 150)의 전부 또는 일부에 의해 검색된 결과를 병합(merge)함으로써, 특정한 저장소(110, 120, 130, 140 또는 150)에는 저장되지 않은 데이터도 검색될 수 있다.All or a portion of the
질의문 제공 상태(310)에서, 질의문은 임의의 저장소(110, 120, 130, 140 또는 150)에게 제공될 수 있다.In the
본 예에서는, 루트 노드에 대응하는 제1 저장소(110)에게 질의문이 제공된 경우를 설명한다.In this example, a case where a query is provided to the
제1 저장소(110)는 전달된 질의문을 분석함으로써 자신의 제1 키(115)가 질의문에 대응하는지 여부를 판단할 수 있다. 여기서, 제1 키(115)가 질의문에 대응한다는 것은, 제1 키에 대응하는 데이터 중 질의문의 검색 범위에 포함될 수 있는 데이터가 존재할 수 있다는 것을 의미할 수 있다.The
예컨대, 질의문의 검색 범위가 "usa.ar"로부터 "usa.ca"까지라면, 제1 키(115) "korea"에 대응하는 데이터는 상기의 검색 범위 내에는 포함될 수 없다. 따라서, 제1 키(115)는 질의문에 대응하지 않는다.For example, if the inquiry inquiry range is from "usa.ar" to "usa.ca", the data corresponding to the
만약, 질의문에 대응하는 데이터가 없다면, 제1 저장소(110)는 질의문에 대해 공백(null)을 반환할 수 있으며, 또는 더 이상의 처리를 수행하지 않을 수 있다.If there is no data corresponding to the query, the
질의문 전달 상태(320)에서, 제1 저장소(110)는 자신의 자식 저장소인 제2 저장소(120) 및 제3 저장소(130)에게 질의문을 전달할 수 있다. 즉, 제1 저장소(110)는 하나 이상의 자식 저장소들(즉, 제2 저장소(120) 및 제3 저장소(130))에게 검색 범위에 대응하는 키를 갖는 데이터의 목록들을 요청할 수 있다.In the
제2 저장소(120) 및 제3 저장소(130) 또한 자신의 자식 저장소에게 질의문을 전달할 수 있다. 즉, 질의문의 전달은 계층적으로 수행될 수 있다. (도시되지 않음)The
목록 반환 상태(330)에서, 제1 저장소(110)의 하나 이상의 자식 저장소들(예컨대, 제2 저장소(120) 및 제3 저장소(130))로부터 검색 범위에 대응하는 키를 갖는 데이터의 목록들이 반환될 수 있다.In the
또한, 질의문의 전달이 계층적으로 수행된 경우, 제2 저장소(120) 및 제3 저장소(130) 역시 각각 자신의 하나 이상의 자식 저장소들로부터 검색 범위에 대응하는 키를 갖는 데이터의 목록들을 반환 받을 수 있다.In addition, when the query transmission is performed hierarchically, the
목록 병합 및 검색 결과 반환 상태(340)에서, 제1 저장소(110)는 검색어의 검색 범위에 대한 결과로서 병합된 데이터의 목록을 반환할 수 있다.In the list merge and return
제2 저장소(120) 및 제3 저장소(130)가 반환한 데이터의 목록 또한 병합된 데이터의 목록일 수 있다. 즉, 병합된 데이터의 목록의 반환은 계층적으로 수행될 수 있다.The list of data returned by the
제1 저장소(110)는 제1 저장소(110)가 저장한 데이터 중 검색 범위에 대응하는 데이터의 제2 목록을 반환된 제1 목록들에 병합할 수 있고, 상기 병합에 의해 생성된 병합된 목록을 검색어의 검색 범위에 대한 결과로서 반환할 수 있다.The
전술된 것과 같이, 본 발명의 일 예에 의해, 키-값 DB 또는 해슁을 사용하지 않은 채, 범위 검색 및 공간적 인덱스가 지원될 수 있다.
As described above, according to an example of the present invention, range search and spatial index can be supported without using a key-value DB or hashing.
도 4는 본 발명의 일 실시예에 따른 데이터 저장 방법의 흐름도이다.4 is a flowchart of a data storage method according to an embodiment of the present invention.
단계(410)에서, 하나 이상의 저장소들이 트리 구조로 구성된다.At
하나 이상의 저장소들 각각은 RDBMS일 수 있다.Each of the one or more repositories may be an RDBMS.
단계(420)에서, 하나 이상의 저장소들 각각에게 계층적인 키가 할당된다. 계층적인 키는 0 개 이상의 서브 키들을 가질 수 있다.At
계층적인 키는 상기의 수학식 1의 정규식에 의해 생성된 문자열이거나, 공백 문자열일 수 있다.The hierarchical key may be a string generated by the regular expression of Equation (1) or an empty string.
단계(430)에서, 하나 이상의 저장소들 중 임의의 제1 저장소를 나타내는 제1 노드를 루트로 한 서버 트리 내의 저장소들 내에 제1 저장소의 제1 키에 대응하는 데이터가 저장된다.At
제1 키는 제1 노드의 부모 노드를 나타내는 제2 저장소의 제2 키에 하나 이상의 서브 키들이 연쇄된 키이다.The first key is a key in which one or more subkeys are cascaded to a second key of a second repository representing the parent node of the first node.
제1 키에 대응하는 데이터는 데이터의 키의 접두어들 중 하나가 제1 키와 동일한 데이터를 의미한다.The data corresponding to the first key means that one of the prefixes of the key of the data is the same as the first key.
데이터의 키의 접두어들 중 하나가 저장소의 키와 동일하면, 데이터는 저장소에 대응하는 것으로 볼 수 있다.If one of the prefixes of the key of the data is the same as the key of the repository, the data can be viewed as corresponding to the repository.
제1 저장소에 대응하는 데이터 중, 제1 노드의 자식 노드를 나타내는 제3 저장소에 대응하는 데이터는 제3 저장소에 저장되며, 제3 저장소에 대응하지 않는 데이터는 제1 저장소에 저장될 수 있다. 따라서, 단계(430)는 제1 저장소에 대응하는 데이터 중, 제1 노드의 자식 노드를 나타내는 저장소에 대응하지 않는 데이터를 제1 저장소에 저장하는 단계를 포함할 수 있다.The data corresponding to the third storage representing the child nodes of the first node among the data corresponding to the first storage is stored in the third storage and the data not corresponding to the third storage can be stored in the first storage. Thus, step 430 may include storing, in the first repository, data that does not correspond to the repository representing the child node of the first node, among the data corresponding to the first repository.
앞서 도 1 내지 도 3을 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents according to one embodiment of the present invention described above with reference to Figs. 1 to 3 can be applied to this embodiment as it is. Therefore, a more detailed description will be omitted below.
도 5는 본 발명의 일 실시예에 따른 장치(100)의 확장 방법의 흐름도이다.5 is a flow diagram of a method of extending an
후술된 단계들(510, 515, 520, 530 및 540)은 단계(430)에 포함될 수 있다.
단계(510)에서, 제1 저장소의 저장량이 미리 정의된 기준에 도달하였는지 여부가 검사된다.In
제1 저장소의 저장량이 미리 정의된 기준에 도달한 경우 단계(520)가 수행되고, 그렇지 않은 경우 절차가 종료한다.If the amount of storage in the first reservoir has reached a predefined criterion, then step 520 is performed, otherwise the procedure ends.
단계(520)에서, 제1 저장소의 자식 저장소인 제3 저장소가 생성된다.At
단계(530)에서, 제3 저장소는 제1 저장소에게 자신의 제3 키를 통지한다.In
단계(540)에서, 제3 저장소의 제3 키에 대응하는 데이터가 제1 저장소로부터 제3 저장소로 이동한다.At
단계(540)는, 1) 제3 저장소의 제3 키에 대응하는 데이터가 제1 저장소로부터 제3 저장소로 복사되는 단계 및 2) 제1 저장소의 데이터 중 제3 저장소로 복사된 데이터가 삭제되는 단계를 포함할 수 있다.Step 540 includes the steps of 1) copying the data corresponding to the third key of the third repository from the first repository to the third repository, and 2) copying the data of the first repository to the third repository Step < / RTI >
앞서 도 1 내지 도 4를 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents according to one embodiment of the present invention described above with reference to Figs. 1 to 4 can be directly applied to this embodiment as well. Therefore, a more detailed description will be omitted below.
도 6은 본 발명의 일 예에 따른 장치(100)의 범위 검색의 흐름도이다.Figure 6 is a flow diagram of a range search of an
단계(610)에서, 질의문이 제1 저장소에게 제공된다.At
질의문은 저장소에게 질의문 내의 검색 범위에 대응하는 키를 갖는 데이터를 요청하는 문장이다.The query is a statement that requests the repository to have data with a key corresponding to the scope of the query in the query.
단계(620)에서, 질의문이 제1 저장소의 자식 저장소들에게 전달된다. 즉, 제1 저장소는 하나 이상의 자식 저장소들에게 검색 범위에 대응하는 키를 갖는 데이터의 제1 목록들을 요청한다.At
단계(620)은 재귀적으로 수행될 수 있다. 질의문을 전달받은 제1 저장소의 자식 저장소는, 질의문을 자신의 하나 이상의 자식 저장소들에게 재전달할 수 있다.Step 620 may be performed recursively. The child repository of the first repository that has received the query may redirect the query to its one or more child repositories.
단계(630)에서, 하나 이상의 저장소들이 제1 목록들을 반환한다.In
단계(640)에서, 제1 저장소가 저장한 데이터 중 검색 범위에 대응하는 키를 갖는 데이터의 제2 목록이 반환된 제1 목록들에 병합됨으로써 병합된 목록이 생성된다.In
단계들(630 및 640)은 재귀적으로 수행될 수 있다. 제1 저장소의 자식 저장소는 자신의 하나 이상의 자식 저장소들로부터 검색 범위에 대응하는 데이터의 제3 목록들을 반환 받을 수 있다. 제1 저장소의 자식 저장소는, 받환 받은 제3 목록을 제1 목록과 병합할 수 있고, 병합된 제1 목록을 제1 저장소에게로 반환할 수 있다.
단계(650)에서, 병합된 목록이 검색 범위에 대한 결과로서 반환된다.At
앞서 도 1 내지 도 5를 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents according to one embodiment of the present invention described above with reference to Figs. 1 to 5 may be applied to this embodiment as it is. Therefore, a more detailed description will be omitted below.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment of the present invention can be implemented in the form of a program command which 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.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. This is possible.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined by the equivalents of the claims, as well as the claims.
100: 데이터 저장 장치
110: 제1 저장소
115: 제1 키100: Data storage device
110: First storage
115: First key
Claims (5)
상기 하나 이상의 저장소들 각각에게는 0 개 이상의 서브 키들을 갖는 계층적인 키가 할당되며,
상기 하나 이상의 저장소들 중 임의의 제1 저장소를 루트로 하는 서브 트리 내의 저장소들은 상기 제1 저장소의 제1 키에 대응하는 데이터를 저장하고,
상기 제1 키는 제2 키에 하나 이상의 서브 키들이 연쇄된 키이고, 상기 제2 키는 제2 저장소의 키이고, 상기 제2 저장소는 상기 제1 저장소의 부모 저장소인, 데이터 저장 장치.Comprising one or more repositories organized in a tree structure, each repository corresponding to one node in the tree,
Each of the one or more repositories is assigned a hierarchical key with zero or more subkeys,
Wherein the repositories in the subtree rooted at any of the one or more repositories store data corresponding to the first key of the first repository,
Wherein the first key is a key in which one or more subkeys are cascaded to a second key, the second key is a key of a second repository, and the second repository is a parent repository of the first repository.
상기 하나 이상의 저장소들 각각은 관계형 데이터베이스 기기인, 데이터 저장 장치.The method according to claim 1,
Wherein each of the one or more repositories is a relational database device.
상기 하나 이상의 저장소들 각각은 상기 관계형 데이터베이스의 인덱스, 키 또는 명령을 처리하는 미들웨어를 포함하는, 데이터 저장 장치.3. The method of claim 2,
Wherein each of the one or more repositories includes middleware that processes indexes, keys, or instructions of the relational database.
상기 하나 이상의 저장소들 각각에게 0 개 이상의 서브 키들을 갖는 계층적인 키를 할당하는 단계; 및
상기 하나 이상의 저장소들 중 임의의 제1 저장소를 루트로 하는 서브 트리 내의 저장소들 내에 상기 제1 저장소의 제1 키에 대응하는 데이터를 저장하는 단계
를 포함하고,
상기 제1 키는 제2 키에 하나 이상의 서브 키들이 연쇄된 키이고, 상기 제2 키는 제2 저장소의 키이고, 상기 제2 저장소는 상기 제1 저장소의 부모 저장소인, 데이터 저장 방법.Configuring one or more repositories in a tree structure, each repository corresponding to one node in the tree;
Assigning a hierarchical key with zero or more subkeys to each of the one or more repositories; And
Storing data corresponding to a first key of the first repository in repositories in a subtree rooted at any one of the one or more repositories
Lt; / RTI >
Wherein the first key is a key in which one or more sub keys are concatenated to a second key, the second key is a key of a second repository, and the second repository is a parent repository of the first repository.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140094932A KR20140108618A (en) | 2014-07-25 | 2014-07-25 | Apparatus and method for storing data using scalable distributed index |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140094932A KR20140108618A (en) | 2014-07-25 | 2014-07-25 | Apparatus and method for storing data using scalable distributed index |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110075026A Division KR101477672B1 (en) | 2011-07-28 | 2011-07-28 | Apparatus and method for storing data using scalable distributed index |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140108618A true KR20140108618A (en) | 2014-09-12 |
Family
ID=51755618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140094932A KR20140108618A (en) | 2014-07-25 | 2014-07-25 | Apparatus and method for storing data using scalable distributed index |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20140108618A (en) |
-
2014
- 2014-07-25 KR KR1020140094932A patent/KR20140108618A/en not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106663056B (en) | Metadata index search in a file system | |
US11068439B2 (en) | Unsupervised method for enriching RDF data sources from denormalized data | |
US9336227B2 (en) | Selective synchronization in a hierarchical folder structure | |
JP6006267B2 (en) | System and method for narrowing a search using index keys | |
US8738572B2 (en) | System and method for storing data streams in a distributed environment | |
US8700683B2 (en) | Method and apparatus for providing a key-value based storage interface | |
US8706710B2 (en) | Methods for storing data streams in a distributed environment | |
US9183267B2 (en) | Linked databases | |
CN106708996B (en) | Method and system for full text search of relational database | |
CN108959538B (en) | Full text retrieval system and method | |
US9459969B1 (en) | Method and system for enhanced backup database indexing | |
US9659023B2 (en) | Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system | |
US9229960B2 (en) | Database management delete efficiency | |
US11216516B2 (en) | Method and system for scalable search using microservice and cloud based search with records indexes | |
US20170277747A1 (en) | Modifying a database query | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
US20140244794A1 (en) | Information System, Method and Program for Managing the Same, Method and Program for Processing Data, and Data Structure | |
Siddiqa et al. | SmallClient for big data: an indexing framework towards fast data retrieval | |
CN110807028B (en) | Method, apparatus and computer program product for managing a storage system | |
CN107408239B (en) | Architecture for managing mass data in communication application through multiple mailboxes | |
KR102253841B1 (en) | Apparatus for Processing Transaction with Modification of Data in Large-Scale Distributed File System and Computer-Readable Recording Medium with Program | |
CN103136294B (en) | File operating method and device | |
CN105843809B (en) | Data processing method and device | |
CN115918110A (en) | Spatial search using key-value store | |
US20140280244A1 (en) | Locale-based sorting on mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
N231 | Notification of change of applicant | ||
WITN | Withdrawal due to no request for examination |