KR20140108618A - Apparatus and method for storing data using scalable distributed index - Google Patents

Apparatus and method for storing data using scalable distributed index Download PDF

Info

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
Application number
KR1020140094932A
Other languages
Korean (ko)
Inventor
송기선
문종호
김수형
이현걸
Original Assignee
네이버비즈니스플랫폼 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버비즈니스플랫폼 주식회사 filed Critical 네이버비즈니스플랫폼 주식회사
Priority to KR1020140094932A priority Critical patent/KR20140108618A/en
Publication of KR20140108618A publication Critical patent/KR20140108618A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes

Abstract

A device and a method to distribute and store data in at least one storage by using an expandable distributed index are disclosed. The at least one storage constitutes a tree structure, and each storage has a hierarchical key. Each storage responds to its own key and stores data which does not correspond to a key of a sub-storage thereof.

Description

확장 가능한 분산 인덱스를 사용하여 데이터를 저장하는 장치 및 방법 {APPARATUS AND METHOD FOR STORING DATA USING SCALABLE DISTRIBUTED INDEX}[0001] APPARATUS AND METHOD FOR STORING DATA USING SCALABLE DISTRIBUTED INDEX [0002]

아래의 실시예들은 데이터를 저장하기 위한 장치 및 방법에 관한 것이다.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 &gt;

상기 제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 data storage device 100 according to an embodiment of the present invention.
2 is a diagram illustrating a process of adding a repository to the apparatus 100 according to an exemplary embodiment of the present invention.
FIG. 3 illustrates a range search for device 100 in accordance with one example of the present invention.
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 apparatus 100 in accordance with an embodiment of the present invention.
Figure 6 is a flow diagram of a range search of an apparatus 100 according to an example of the present invention.

이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
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 data storage device 100 according to one embodiment of the present invention.

데이터 저장 장치(100)(이하, 장치(100)로 약술한다.)는 하나 이상의 저장소들(110, 120, 130, 140 및 150)을 포함할 수 있다. 여기에서 "저장소"란 데이터를 저장하는 물리적 또는 논리적인 공간을 의미한다. 예를 들어, "저장소"는 하나의 관계형 데이터베이스 또는 파일 시스템, 혹은 동일한 데이터들에 대한 복제본(replica)들의 집합인 분산 클러스터 일 수 있다. The data storage device 100 (hereinafter abbreviated as device 100) may include one or more depots 110, 120, 130, 140 and 150. Here, "storage" means a physical or logical space for storing data. For example, a "repository" can be a relational database or file system, or a distributed cluster that is a collection of replicas for the same data.

본 발명의 실시예에 따르면, 각 저장소들은 논리적으로 트리 형태의 계층적 구조를 갖는다. 다시 말해, 각 저장소들은 트리에서의 하나의 노드에 대응하며, 임의의 두 저장소들 간에는 상기 두 저장소에 대응하는 노드들 간의 관계에 따라 부모-자식 관계 또는 형제 관계 등이 성립할 수 있다. 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 first storage 110 is connected to the root node of the tree structure, the second storage 120 and the third storage 130 are connected to the right child node and the left child node of the first storage 110, Respectively. The first storage 110 is the parent storage of the second storage 120 and the third storage 130. The second storage 120 is the (left) child storage of the first storage 110. The second storage 120 is a sibling store of the third storage 130. The fourth storage 140 and the fifth storage 150 correspond to the left child node and the right child node of the third storage 130, respectively.

저장소들(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 repositories 110, 120, 130, 140 and 150 may be assigned a key for identifying each repository. The key is configured in a form capable of expressing a hierarchical structure between the stores. For example, one key may comprise one or more sub-keys and a separator for separating the sub-keys. Here, the subkey is a value representing all the nodes in an arbitrary subtree. Referring to FIG. 1, "korea" is a key representing a subtree rooted at the first storage 110, and "seoul " is a key representing a subtree rooted at the third storage 130. 1, "korea", "kyeonggi", "seoul", "kangbuk" and "kangnam" are each a sub key, and one key such as "korea.seoul.kangnam" is used as a delimiter Respectively.

하기 수학식 1은 이와 같이 계층적인 키를 나타내는 정규식(regular expression)의 일 예 이다.Equation (1) is an example of a regular expression indicating such a hierarchical key.

Figure pat00001
Figure pat00001

여기서, 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 first storage 110 is "korea ". The key 115 has only the first sub key "korea ".

제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 second storage 120 is "korea.gyeonggi ". The key 125 has a first sub key "korea" and a second sub key "gyeonggi ". The key 135 assigned to the third store 130 is "korea.seoul ". The key 135 has a first sub key "korea" and a second sub key "seoul ". The key 145 assigned to the fourth store 140 is "korea.seoul.kangbuk ". The key 135 has a first sub key "korea", a second sub key "seoul", and a third sub key "kangbuk". The key 155 assigned to the fifth repository 150 is "korea.seoul.kangnam ". The key 155 has a first sub key "korea", a second sub key "seoul", and a third sub key "kangnam".

저장소에게 할당된 키는, 상기 저장소의 부모 저장소의 키에 하나 이상의 서브 키들이 연쇄된 키일 수 있다.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 fourth storage 140 is a key in which the subkey "kangbuk" is cascaded to the key "korea.seoul" of the third storage 130, which is the parent storage of the fourth storage.

즉, 저장소 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 device 100 may classify and store data according to the key of each repository. The data has a key. The key of the data is the identifier used in the classification scheme of the data. The key of the data may indicate the location on the classification system of the data. If the tree structure within the device 100 represents a classification scheme, the data may correspond to a particular repository (or a key of the repository) according to the key value of the data.

특정 저장소를 나타내는 노드를 루트로 한 서브 트리에서, 상기 서브 트리 내의 저장소들은 상기의 특정 저장소의 키에 대응하는 데이터를 저장한다.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 subtree 160 that is the root of the third repository 130, the repositories 130, 140, and 150 in the subtree 160 are associated with the key 135 "korea.soul" As shown in FIG.

또한, 제4 저장소(140)를 루트로 한 서브 트리는 제4 저장소(140)만을 포함한다. 따라서, 제4 저장소(140)는 제4 저장소(140)의 키(145) "korea.seoul.kangbuk"에 대응하는 데이터를 저장할 수 있다.In addition, the subtree rooted at the fourth storage 140 includes only the fourth storage 140. Thus, the fourth storage 140 may store data corresponding to the key 145 "korea.seoul.kangbuk" of the fourth storage 140. [

또한, 제5 저장소(150)를 루트로 한 서브 트리는 제5 저장소(150)만을 포함한다. 따라서, 제5 저장소(150)는 제5 저장소(150)의 키(155) "korea.seoul.kangnam"에 대응하는 데이터를 저장할 수 있다.In addition, the subtree rooted at the fifth storage 150 includes only the fifth storage 150. Thus, the fifth storage 150 may store data corresponding to the key 155 "korea.seoul.kangnam" of the fifth storage 150.

여기서, 저장소의 키에 대응하는 데이터는, 데이터의 키의 접두어(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 &quot;). For example, the prefixes of the hierarchical key "abc" may be "a &quot;," ab &quot;, and "abc &quot;.

예컨대, 데이터의 키가 "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 first store 110 and the key 135 of the third store 130 and the key 145 of the fourth store 140, And the key 155 of the fifth storage 150.

예컨대, 데이터의 키가 "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 first storage 110, the key 135 of the third storage 130 and the key 155 of the fifth storage 150.

데이터는 자신의 키에 따라 장치(100)의 하나 이상의 저장소들(110, 120, 130, 140 및 150) 중 하나의 저장소 내에 저장될 수 있다.The data may be stored in a repository of one of the one or more repositories 110, 120, 130, 140 and 150 of the device 100 according to its key.

예를 들어, 저장소는 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&quot ;, the data is stored in the first storage 110, the third storage 130, . The data may be stored in the fifth storage 150.

데이터의 키가 "korea.gangwon"이면, 상기 데이터는 제1 저장소(110)에 대응한다. 상기 데이터는 제1 저장소(110) 내에 저장될 수 있다.If the key of the data is "korea.gangwon ", the data corresponds to the first storage 110. The data may be stored in the first storage 110.

전술된 것과 같은 저장 방식이 사용될 경우, 계층적인 키에 의해, 실제 데이터가 위치한 저장소가 검색될 수 있다. 즉, 실제 데이터가 위치한 저장소는 계층적인 키 전체 또는 키의 접두어(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 first storage 110 corresponding to the root node is compared with the key of the data. One of the prefixes of the keys of the data, "korea" is the same as the key 115 of the first store 110. Also, the third storage 130 and the first storage 110 are in a child-parent relationship with each other. &Quot; korea.seoul ", which is one of the prefixes of the keys of the data, is the same as the key 135 of the third storage 130. The fifth storage 150 and the first storage 110 are in a child-parent relationship with each other. One of the prefixes of the keys of the data, "korea.seoul.kangnam" is the same as the key 155 of the fifth storage 150. Thus, the data whose key is "korea.seoul.kangnam.shinsa" can be retrieved in the fifth storage 150 via the first storage 110 and the third storage 130. [

이하에서는, 데이터의 키가 "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 first store 110. The prefixes of the keys of the data, "korea" and "korea.jejudo", are not the same as the keys 125 of the second storage 120 and the keys 135 of the third storage 130. Thus, data with the key "korea.jejudo" can be retrieved in the first storage 110.

도 2는 본 발명의 일 예에 따른 장치(100)에 저장소를 추가하는 과정을 설명하는 도면이다.2 is a diagram illustrating a process of adding a repository to the apparatus 100 according to an exemplary embodiment of the present invention.

도 1을 참조하여 전술된 장치(100)는 저장소의 키 "korea"에 대응하는 데이터를 저장하기 위해, 저장소가 추가된 것으로 간주될 수 있다.The device 100 described above with reference to Figure 1 may be considered to have added storage to store data corresponding to the key "korea" of the store.

초기 상태(210)에서, 장치(100)는 제1 저장소(110) 만을 갖는다.In the initial state 210, the device 100 has only the first storage 110.

제1 저장소(110)의 키(115)는 "korea"이다. 따라서, 키가 "korea"인 데이터, 키가 "korea.gyeonggi"로 시작하는 데이터 및 키가 "korea.seoul"로 시작하는 데이터는 모두 제1 저장소(110) 내에 저장될 수 있다.The key 115 of the first store 110 is "korea ". Thus, data whose key is "korea ", data whose key starts with " korea.gyeonggi ", and data whose key starts with" korea.seoul "

장치(100)가 운용됨에 따라, 특정한 접두어를 갖는(즉, 특정한 문자열로 시작하는) 키를 갖는 데이터(예컨대, "korea.seoul")가 많아지면, 장치(100)는 상기의 특정한 접두어를 키로 갖는 저장소를 추가할 수 있다. 상기의 추가는 장치(100)의 트리 구조가 확장됨을 의미한다. 즉, 상기의 확장은 장치(100)의 트리 구조에 새로운 저장소(또는, 새로운 저장소를 나타내는 노드)가 추가되는 것을 의미한다.As the device 100 is operated, as more data (e.g., "korea.seoul") with a particular prefix (i.e., starting with a particular string) You can add a repository that you have. This addition means that the tree structure of the apparatus 100 is expanded. That is, the above expansion means that a new storage (or a node representing a new storage) is added to the tree structure of the device 100.

데이터가 저장된 상태(220)에서, 제1 저장소(110)는 키(115)에 대응하는 하나 이상의 데이터(260)를 저장한다.In the state 220 where the data is stored, the first storage 110 stores one or more data 260 corresponding to the key 115.

제1 저장소(110)가 하나 이상의 데이터(260)를 모두 처리할 수 없는 경우, 새로운 저장소의 추가가 요구될 수 있다. 예를 들어, 장치(100)는 하기의 상태들(230, 240 및 250)을 거쳐 확장될 수 있다.If the first storage 110 can not process all of the one or more data 260, the addition of new storage may be required. For example, the device 100 may be extended via the following states 230, 240, and 250.

노드 생성 상태(230)에서 도시된 것과 같이, 장치(100)는 제1 저장소(110)의 자식 저장소인 제3 저장소(130)를 생성할 수 있다.The device 100 may create a third storage 130 that is a child storage of the first storage 110, as shown in the node creation state 230. [

즉, 제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 third storage 130, 130).

추가 알림 상태(240)에서, 새로 생성된 제3 저장소(130)는 자신의 부모 저장소인 제1 저장소(110)에게 자신이 처리할 키(즉, 제3 키(135))를 통지할 수 있다. 상기의 통지는 저장소의 추가를 알리는 것이다.In the additional notification state 240, the newly created third repository 130 may notify the first repository 110, which is its parent repository, of the key to be processed (i.e., the third key 135) . The above notification informs the addition of the repository.

데이터 이동 상태(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 data movement state 250, the first storage 110 receiving the notification moves the data 270 corresponding to the notified third key 135 among the data stored therein to the third storage 130 . For example, the first storage 110 receiving the notification can copy the data 270 corresponding to the notified third key 135 among the data stored in the first storage 110 to the third storage 130. When the above copying is completed, the first storage 110 does not need to duplicate the data held by the child storage (i.e., the third storage 130). Accordingly, the first storage 110 may delete the data copied to the third storage 130 among the data stored therein. After the deletion, the first storage 110 stores data not corresponding to the third key 135 among the data corresponding to the first key 115.

제3 저장소의 제3 키(135)에 대응하는 데이터(270)를 제1 저장소(110)로부터 제3 저장소(130)로 이동함으로써 제1 저장소(110)의 저장량이 감소될 수 있다.The amount of storage in the first storage 110 may be reduced by moving data 270 corresponding to the third key 135 of the third storage from the first storage 110 to the third storage 130. [

장치(100)는 제1 저장소(110)에 새로운 데이터가 삽입됨으로써 제1 저장소(110)의 저장량이 미리 정의된 기준에 도달하였을 때, 전술된 제3 저장소(130)의 생성 및 제3 저장소(130)로의 데이터의 이동을 수행할 수 있다.The device 100 may be configured to generate the third storage 130 and the third storage 130 when the amount of storage in the first storage 110 reaches a predefined criterion by inserting new data into the first storage 110 130 in accordance with the present invention.

상기의 확장 중, 장치(100)는 (부분적 또는 전체적으로) 중단되지 않을 수 있다. 또한, 상기의 확장에 의해 데이터 또한 자동으로 복제(replication)될 수 있다.Of the above extensions, the device 100 may not be interrupted (partially or entirely). In addition, data can also be automatically replicated by the above extension.

상기의 확장 중, 제3 키(135)에 대응하는 신규 유입 데이터는 확장에 의해 생성된 자식 노드에 대응하는 제3 저장소(130)에게 전달된다.Of the above extensions, new incoming data corresponding to the third key 135 is delivered to the third storage 130 corresponding to the child node generated by the extension.

장치(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 device 100 described above.

도 3은 본 발명의 일 예에 따른 장치(100)에 대한 범위 검색을 설명한다.FIG. 3 illustrates a range search for device 100 in accordance with one example of the present invention.

특정한 조건을 만족하는 데이터를 조회하기 위해 질의문이 사용될 수 있다. 질의문은 특정한 검색 범위에 대응하는 키를 갖는 데이터의 목록을 질의하는 문장일 수 있다.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 repositories 110, 120, 130, 140 and 150 of the device 100 may retrieve data for the query. By merging the results retrieved by all or a portion of the repositories 110, 120, 130, 140 and 150, the unsaved data can also be retrieved from the particular repository 110, 120, 130, 140 or 150 have.

질의문 제공 상태(310)에서, 질의문은 임의의 저장소(110, 120, 130, 140 또는 150)에게 제공될 수 있다.In the query provisioning state 310, a query may be provided to any of the repositories 110, 120, 130, 140 or 150.

본 예에서는, 루트 노드에 대응하는 제1 저장소(110)에게 질의문이 제공된 경우를 설명한다.In this example, a case where a query is provided to the first storage 110 corresponding to the root node will be described.

제1 저장소(110)는 전달된 질의문을 분석함으로써 자신의 제1 키(115)가 질의문에 대응하는지 여부를 판단할 수 있다. 여기서, 제1 키(115)가 질의문에 대응한다는 것은, 제1 키에 대응하는 데이터 중 질의문의 검색 범위에 포함될 수 있는 데이터가 존재할 수 있다는 것을 의미할 수 있다.The first storage 110 can determine whether or not its first key 115 corresponds to the query statement by analyzing the transmitted query statement. Here, the correspondence of the first key 115 to the query may mean that there may be data that can be included in the search range of the query query among the data corresponding to the first key.

예컨대, 질의문의 검색 범위가 "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 first key 115 "korea" can not be included in the above search range. Therefore, the first key 115 does not correspond to the query statement.

만약, 질의문에 대응하는 데이터가 없다면, 제1 저장소(110)는 질의문에 대해 공백(null)을 반환할 수 있으며, 또는 더 이상의 처리를 수행하지 않을 수 있다.If there is no data corresponding to the query, the first store 110 may return null for the query statement or may not perform any further processing.

질의문 전달 상태(320)에서, 제1 저장소(110)는 자신의 자식 저장소인 제2 저장소(120) 및 제3 저장소(130)에게 질의문을 전달할 수 있다. 즉, 제1 저장소(110)는 하나 이상의 자식 저장소들(즉, 제2 저장소(120) 및 제3 저장소(130))에게 검색 범위에 대응하는 키를 갖는 데이터의 목록들을 요청할 수 있다.In the query delivery state 320, the first store 110 may pass a query to the second store 120 and the third store 130, which are its child repositories. That is, the first repository 110 may request one or more child repositories (i.e., the second repository 120 and the third repository 130) with a list of data having a key corresponding to the search scope.

제2 저장소(120) 및 제3 저장소(130) 또한 자신의 자식 저장소에게 질의문을 전달할 수 있다. 즉, 질의문의 전달은 계층적으로 수행될 수 있다. (도시되지 않음)The second store 120 and the third store 130 may also pass query messages to their child repositories. That is, the transfer of the query can be performed hierarchically. (Not shown)

목록 반환 상태(330)에서, 제1 저장소(110)의 하나 이상의 자식 저장소들(예컨대, 제2 저장소(120) 및 제3 저장소(130))로부터 검색 범위에 대응하는 키를 갖는 데이터의 목록들이 반환될 수 있다.In the list return state 330, lists of data having keys corresponding to the search ranges from one or more child stores (e.g., second store 120 and third store 130) of the first store 110 Can be returned.

또한, 질의문의 전달이 계층적으로 수행된 경우, 제2 저장소(120) 및 제3 저장소(130) 역시 각각 자신의 하나 이상의 자식 저장소들로부터 검색 범위에 대응하는 키를 갖는 데이터의 목록들을 반환 받을 수 있다.In addition, when the query transmission is performed hierarchically, the second storage 120 and the third storage 130 also receive lists of data having a key corresponding to the search range from their respective one or more child repositories .

목록 병합 및 검색 결과 반환 상태(340)에서, 제1 저장소(110)는 검색어의 검색 범위에 대한 결과로서 병합된 데이터의 목록을 반환할 수 있다.In the list merge and return search results state 340, the first store 110 may return a list of merged data as a result of the search term's search scope.

제2 저장소(120) 및 제3 저장소(130)가 반환한 데이터의 목록 또한 병합된 데이터의 목록일 수 있다. 즉, 병합된 데이터의 목록의 반환은 계층적으로 수행될 수 있다.The list of data returned by the second storage 120 and the third storage 130 may also be a list of merged data. That is, the return of the list of merged data can be performed hierarchically.

제1 저장소(110)는 제1 저장소(110)가 저장한 데이터 중 검색 범위에 대응하는 데이터의 제2 목록을 반환된 제1 목록들에 병합할 수 있고, 상기 병합에 의해 생성된 병합된 목록을 검색어의 검색 범위에 대한 결과로서 반환할 수 있다.The first storage 110 may merge a second list of data stored in the first storage 110 corresponding to the search range into the first lists returned and the merged list generated by the merge As a result for the search range of the search term.

전술된 것과 같이, 본 발명의 일 예에 의해, 키-값 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 step 410, one or more repositories are organized into a tree structure.

하나 이상의 저장소들 각각은 RDBMS일 수 있다.Each of the one or more repositories may be an RDBMS.

단계(420)에서, 하나 이상의 저장소들 각각에게 계층적인 키가 할당된다. 계층적인 키는 0 개 이상의 서브 키들을 가질 수 있다.At step 420, a hierarchical key is assigned to each of the one or more repositories. A hierarchical key may have zero or more subkeys.

계층적인 키는 상기의 수학식 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 step 430, data corresponding to the first key of the first repository is stored in repositories in the server tree rooted at the first node representing any of the one or more repositories.

제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 apparatus 100 in accordance with an embodiment of the present invention.

후술된 단계들(510, 515, 520, 530 및 540)은 단계(430)에 포함될 수 있다.Steps 510, 515, 520, 530, and 540, described below, may be included in step 430.

단계(510)에서, 제1 저장소의 저장량이 미리 정의된 기준에 도달하였는지 여부가 검사된다.In step 510, it is checked whether the amount of storage in the first reservoir has reached a predefined criterion.

제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 step 520, a third repository is created which is a child repository of the first repository.

단계(530)에서, 제3 저장소는 제1 저장소에게 자신의 제3 키를 통지한다.In step 530, the third repository notifies the first repository of its third key.

단계(540)에서, 제3 저장소의 제3 키에 대응하는 데이터가 제1 저장소로부터 제3 저장소로 이동한다.At step 540, the data corresponding to the third key of the third repository moves from the first repository to the third repository.

단계(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 &lt; / RTI &gt;

앞서 도 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 apparatus 100 according to an example of the present invention.

단계(610)에서, 질의문이 제1 저장소에게 제공된다.At step 610, a query is provided to the first repository.

질의문은 저장소에게 질의문 내의 검색 범위에 대응하는 키를 갖는 데이터를 요청하는 문장이다.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 step 620, the query statement is passed to the child repositories of the first repository. That is, the first repository requests one or more child repositories for a first list of data having a key corresponding to the search scope.

단계(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 step 630, one or more repositories return the first listings.

단계(640)에서, 제1 저장소가 저장한 데이터 중 검색 범위에 대응하는 키를 갖는 데이터의 제2 목록이 반환된 제1 목록들에 병합됨으로써 병합된 목록이 생성된다.In step 640, a merged list is generated by merging a second list of data having a key corresponding to the search range out of the stored data of the first repository into the first lists returned.

단계들(630 및 640)은 재귀적으로 수행될 수 있다. 제1 저장소의 자식 저장소는 자신의 하나 이상의 자식 저장소들로부터 검색 범위에 대응하는 데이터의 제3 목록들을 반환 받을 수 있다. 제1 저장소의 자식 저장소는, 받환 받은 제3 목록을 제1 목록과 병합할 수 있고, 병합된 제1 목록을 제1 저장소에게로 반환할 수 있다.Steps 630 and 640 may be performed recursively. The child repository of the first repository may be returned a third list of data corresponding to the retrieval scope from its one or more child repositories. The child repository of the first repository may merge the third list with the first list and return the merged first list to the first repository.

단계(650)에서, 병합된 목록이 검색 범위에 대한 결과로서 반환된다.At step 650, the merged list is returned as a result of the search range.

앞서 도 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.
제1항에 있어서,
상기 하나 이상의 저장소들 각각은 관계형 데이터베이스 기기인, 데이터 저장 장치.
The method according to claim 1,
Wherein each of the one or more repositories is a relational database device.
제2항에 있어서,
상기 하나 이상의 저장소들 각각은 상기 관계형 데이터베이스의 인덱스, 키 또는 명령을 처리하는 미들웨어를 포함하는, 데이터 저장 장치.
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 &gt;
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.
제4항의 데이터 저장 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.A computer-readable recording medium storing a program for performing the data storing method of claim 4.
KR1020140094932A 2014-07-25 2014-07-25 Apparatus and method for storing data using scalable distributed index KR20140108618A (en)

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)

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