KR102354343B1 - Spatial indexing method and apparatus for blockchain-based geospatial data - Google Patents
Spatial indexing method and apparatus for blockchain-based geospatial data Download PDFInfo
- Publication number
- KR102354343B1 KR102354343B1 KR1020190169541A KR20190169541A KR102354343B1 KR 102354343 B1 KR102354343 B1 KR 102354343B1 KR 1020190169541 A KR1020190169541 A KR 1020190169541A KR 20190169541 A KR20190169541 A KR 20190169541A KR 102354343 B1 KR102354343 B1 KR 102354343B1
- Authority
- KR
- South Korea
- Prior art keywords
- spatial data
- memory
- spatial
- region
- indexing
- 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
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/29—Geographical information databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치에 관한 것으로, 상기 공간 데이터 인덱싱 방법은 전체 공간 영역을 고정 크기를 갖는 복수의 셀(cell) 영역들로 분할하고 공간 데이터 객체를 메모리 상에서 정의되는 메모리 인덱스 영역에 저장하는 단계 및 상기 메모리 인덱스 영역에 저장된 데이터의 양이 상기 메모리의 가용범위를 초과하는 경우 상기 메모리 인덱스 영역에 저장된 공간 데이터 객체를 상기 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)하는 단계를 포함한다.The present invention relates to a method and apparatus for indexing spatial data for block chain-based geospatial data, wherein the method for indexing spatial data divides an entire spatial area into a plurality of cell areas having a fixed size, and a spatial data object storing in a memory index area defined in the memory, and if the amount of data stored in the memory index area exceeds the available range of the memory, the spatial data object stored in the memory index area is divided into quadrants, and flushing the multi-layered index area defined on the disk.
Description
본 발명은 공간 데이터 인덱싱 기술에 관한 것으로, 더욱 상세하게는 블록 체인 환경에서 발생하는 공간 데이터에 대한 효과적인 인덱싱을 제공할 수 있는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치에 관한 것이다.The present invention relates to spatial data indexing technology, and more particularly, to a spatial data indexing method and apparatus for blockchain-based geospatial data that can provide effective indexing for spatial data generated in a block chain environment. .
블록 체인 시스템에서 지리 정보 데이터를 포함하는 트랜잭션 로그에 대한 대표적인 검색 기술로는 Ethereum에서 개발하고 있는 오픈 프로토콜인 FOAM이 있다. FOAM은 도 5과 같이 기존의 트랜잭션 해쉬코드와 함께 데이터 좌표를 기준으로 생성된 Geohash 코드를 삽입하여 객체의 위치 정보를 나타낼 수 있다. Geohash 코드는 2차원 좌표계를 1차원 공간에 매핑시키는 기술로, key-value 데이터베이스인 LevelDB와 LSM 트리 등을 사용하여 검색 속도를 향상시킬 수 있다. As a representative search technology for transaction logs including geospatial data in the block chain system, there is FOAM, an open protocol being developed by Ethereum. FOAM may indicate location information of an object by inserting a geohash code generated based on data coordinates together with an existing transaction hash code as shown in FIG. 5 . Geohash code is a technology that maps a two-dimensional coordinate system to a one-dimensional space, and the search speed can be improved by using the key-value database LevelDB and LSM tree.
블록체인 시스템에서 발생하는 트랜잭션 로그의 특징은 주기적으로 대량의 업데이트가 발생한다는 것이다. 업데이트 속도만을 고려하면 LSM 트리를 활용한 검색은 충분히 좋은 선택이 될 수 있다. LSM 트리는 데이터 객체가 삽입될 때 이것을 메모리에 저장하며 메모리에 저장된 데이터에 대한 로컬 인덱스를 구축한다. 만약 메모리에 저장된 데이터가 일정 크기를 초과할 경우, 메모리에 저장된 데이터는 디스크로 옮겨지며 로컬 인덱스는 디스크 인덱스와 계층적으로 병합된다.A characteristic of the transaction log that occurs in the blockchain system is that a large number of updates occur periodically. Considering only the update rate, the search using the LSM tree can be a good enough choice. The LSM tree stores data objects in memory as they are inserted and builds a local index to the data stored in memory. If the data stored in the memory exceeds a certain size, the data stored in the memory is moved to the disk and the local index is hierarchically merged with the disk index.
LSM 트리는 디스크에 저장된 데이터를 순차적으로 읽고 쓰기 때문에 업데이트 속도가 매우 빠르다. 그러나 geohash 기법은 데이터 객체의 공간적 인접성을 완전히 보장하지는 못하기 때문에, geohash 코드 기반의 1차원적인 공간 데이터 검색은 검색 과정에서 대량의 긍정 오류(false positive)에 의한 검색 성능 저하가 발생할 수 있다.Because the LSM tree sequentially reads and writes data stored on the disk, the update rate is very fast. However, since the geohash method does not completely guarantee the spatial proximity of data objects, one-dimensional spatial data search based on geohash code may cause a decrease in search performance due to a large number of false positives in the search process.
기존에 공간 데이터를 다루는 대표적인 인덱스에는 트리 형태의 R-tree, Quad-tree 등의 기법이 있다. 그러나 이 기법들은 인덱스 노드의 분할 과정에서 많은 계산 시간을 소모하기 때문에 다수의 업데이트가 한번에 발생하는 블록체인 환경에서는 효과적이지 못하다. 이 밖에 빠른 업데이트 속도를 제공하는 기법으로는 Fixed grid가 있지만 이 기법은 전체 공간을 고정된 크기의 grid cell로 구분을 하여 각각의 cell에 대한 디렉토리에 데이터를 저장하는 방식이다. 고정된 크기의 격자식 분할로 인하여 데이터 객체는 삽입시 자신이 저장될 디렉토리의 주소를 빠르게 계산할 수 있지만, 이 기법은 객체의 분포가 편향될 경우 효과적인 인덱싱이 어려우며, 평면적인 구조의 인덱스이기 때문에 적절한 분할 크기를 결정하기 어렵다는 문제가 있다.Existing representative indexes that deal with spatial data include tree-type R-trees and quad-trees. However, these techniques are not effective in a blockchain environment where multiple updates occur at once because they consume a lot of computation time in the process of splitting index nodes. In addition, there is a fixed grid method that provides a fast update rate, but this method divides the entire space into grid cells of a fixed size and stores data in a directory for each cell. Due to the grid partition of a fixed size, data objects can quickly calculate the address of the directory where they will be stored upon insertion, but this technique makes effective indexing difficult when the object distribution is biased, and is appropriate because it is an index of a flat structure. There is a problem in that it is difficult to determine the partition size.
본 발명의 일 실시예는 블록 체인 환경에서 발생하는 공간 데이터에 대한 효과적인 인덱싱을 제공할 수 있는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치를 제공하고자 한다.An embodiment of the present invention is to provide a spatial data indexing method and apparatus for blockchain-based geospatial data that can provide effective indexing for spatial data generated in a block chain environment.
본 발명의 일 실시예는 삽입된 공간 데이터 객체에 대한 인덱스를 메모리에 적재하고 주기적으로 디스크에 플러시하는 방법을 통해 디스크에 저장된 계층적 구조의 공간 인덱스와 병합할 수 있는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치를 제공하고자 한다.An embodiment of the present invention is a block-chain-based geospatial data that can be merged with the spatial index of a hierarchical structure stored on the disk by loading the index for the inserted spatial data object into memory and periodically flushing it to the disk. To provide a spatial data indexing method and apparatus for
본 발명의 일 실시예는 전체 공간을 고정된 크기의 격자구조로 분할한 메모리 기반의 인덱스와 전체 공간을 사분할한 부분 공간에 대한 계층적 구조를 형성하는 디스크 기반의 인덱스를 통해 효과적인 업데이트와 데이터 탐색을 제공할 수 있는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치를 제공하고자 한다.An embodiment of the present invention provides effective update and data performance through a memory-based index in which the entire space is divided into a grid structure of a fixed size and a disk-based index that forms a hierarchical structure for the partial space in which the entire space is divided. To provide a spatial data indexing method and apparatus for blockchain-based geospatial data that can provide search.
실시예들 중에서, 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법은 전체 공간 영역을 고정 크기를 갖는 복수의 셀(cell) 영역들로 분할하고 공간 데이터 객체를 메모리 상에서 정의되는 메모리 인덱스 영역에 저장하는 단계 및 상기 메모리 인덱스 영역에 저장된 데이터의 양이 상기 메모리의 가용범위를 초과하는 경우 상기 메모리 인덱스 영역에 저장된 공간 데이터 객체를 상기 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)하는 단계를 포함한다.Among the embodiments, the spatial data indexing method for the blockchain-based geospatial data divides the entire spatial region into a plurality of cell regions having a fixed size and divides the spatial data object into a memory index region defined in the memory. When the amount of data stored in the memory index area exceeds the available range of the memory, the spatial data object stored in the memory index area is divided into quadrants and the multi-layered index area defined on the disk. flushing.
상기 메모리 인덱스 영역은 상기 복수의 셀 영역들 각각에 독립적으로 연결되는 복수의 버킷들로 구성될 수 있다.The memory index area may include a plurality of buckets independently connected to each of the plurality of cell areas.
상기 복수의 버킷들은 해당 셀 영역의 z-오더링 넘버(z-ordering number)를 구분자로 포함하고 상기 z-오더링 넘버에 따라 정렬될 수 있다.The plurality of buckets may include a z-ordering number of a corresponding cell region as a delimiter and may be arranged according to the z-ordering number.
상기 저장하는 단계는 상기 공간 데이터 객체의 위치정보를 기초로 상기 z-오더링 넘버를 산출하고 상기 z-오더링 넘버를 기초로 해당 공간 데이터 객체를 저장할 버킷을 결정하는 단계를 포함할 수 있다.The storing may include calculating the z-ordering number based on the location information of the spatial data object and determining a bucket in which to store the spatial data object based on the z-ordering number.
상기 다계층 인덱스 영역은 상기 사분할 된 각 사분면 영역마다 상기 복수의 셀 영역들로 분할되고 재귀적인 분할에 의해 계층적 구조를 형성하며, 상기 계층적 구조에 관한 정보는 상기 메모리 상에서 쿼드 트리(quad-tree) 형태로 관리될 수 있다.The multi-layered index area is divided into the plurality of cell areas for each quadrant area divided into quadrants, and a hierarchical structure is formed by recursive division, and information on the hierarchical structure is stored in a quad tree in the memory. -tree) can be managed.
상기 플러싱하는 단계는 상기 다계층 인덱스 영역에서 상기 메모리 인덱스 영역에 대응되는 셀 영역이 검출된 경우 해당 셀 영역에 연결된 공간 데이터 객체를 병합할 수 있다.In the flushing, when a cell area corresponding to the memory index area is detected in the multi-layered index area, spatial data objects connected to the corresponding cell area may be merged.
상기 플러싱하는 단계는 상기 병합에 따라 특정 사분면 영역에서 공간 데이터 객체의 개수가 임계값을 초과하는 경우 각 사분면 영역을 재-사분할하고 각 재-사분면 영역으로 공간 데이터 객체를 재배치하는 단계를 포함할 수 있다.The flushing may include re-partitioning each quadrant region and relocating spatial data objects to each re-quadrant region when the number of spatial data objects in a specific quadrant region exceeds a threshold according to the merging. can
상기 플러싱하는 단계는 각 재-사분면 영역을 고정 크기를 갖는 복수의 셀 영역들로 분할하고 특정 재-사분면 영역에서 공간 데이터 객체의 개수가 상기 임계값을 초과할 때마다 상기 재-사분할 과정을 반복 수행하는 단계를 포함할 수 있다.The flushing step divides each re-quadrant region into a plurality of cell regions having a fixed size and performs the re-quadrant process whenever the number of spatial data objects in a specific re-quadrant region exceeds the threshold value. It may include a step of repeatedly performing.
상기 공간 데이터 인덱싱 방법은 질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 상기 인덱스 영역과 상기 복수의 버킷들에 대한 탐색을 순차적으로 수행하여 질의 결과를 생성하는 단계를 더 포함할 수 있다.The spatial data indexing method may further include generating a query result by sequentially searching the index area and the plurality of buckets when a spatial query including a query point and a query radius is received.
실시예들 중에서, 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 장치는 전체 공간 영역을 고정 크기를 갖는 복수의 셀(cell) 영역들로 분할하고 공간 데이터 객체를 메모리 상에서 정의되는 메모리 인덱스 영역에 저장하는 메모리 인덱싱부, 상기 메모리 인덱스 영역에 저장된 데이터의 양이 상기 메모리의 가용범위를 초과하는 경우 상기 메모리 인덱스 영역에 저장된 공간 데이터 객체를 상기 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)하는 디스크 인덱싱부 및 질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 상기 다계층 인덱스 영역과 상기 메모리 인덱스 영역에 대한 탐색을 순차적으로 수행하여 질의 결과를 생성하는 공간 질의 처리부를 포함한다.Among the embodiments, the block chain-based spatial data indexing apparatus for geospatial data divides the entire spatial region into a plurality of cell regions having a fixed size and divides the spatial data object into a memory index region defined in the memory. A memory indexing unit to store, when the amount of data stored in the memory index area exceeds the available range of the memory, the spatial data object stored in the memory index area is divided into quadrants and a multi-layered index defined on the disk A disk indexing unit flushing a region and a spatial query processing unit generating a query result by sequentially searching the multi-layered index region and the memory index region when a spatial query including a query point and a query radius is received includes
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.The disclosed technology may have the following effects. However, this does not mean that a specific embodiment should include all of the following effects or only the following effects, so the scope of the disclosed technology should not be understood as being limited thereby.
본 발명의 일 실시예에 따른 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치는 삽입된 공간 데이터 객체에 대한 인덱스를 메모리에 적재하고 주기적으로 디스크에 플러시하는 방법을 통해 디스크에 저장된 계층적 구조의 공간 인덱스와 병합할 수 있다.A spatial data indexing method and apparatus for block chain-based geospatial data according to an embodiment of the present invention is a layer stored on a disk through a method of loading an index for an inserted spatial data object into a memory and periodically flushing it to the disk It can be merged with the spatial index of the enemy structure.
본 발명의 일 실시예에 따른 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치는 전체 공간을 고정된 크기의 격자구조로 분할한 메모리 기반의 인덱스와 전체 공간을 사분할한 부분 공간에 대한 계층적 구조를 형성하는 디스크 기반의 인덱스를 통해 효과적인 업데이트와 데이터 탐색을 제공할 수 있다.A spatial data indexing method and apparatus for block chain-based geospatial data according to an embodiment of the present invention is a memory-based index in which the entire space is divided into a grid structure of a fixed size and a partial space in which the entire space is divided into quadrants. Effective update and data search can be provided through disk-based indexes that form a hierarchical structure for
도 1은 본 발명의 일 실시예에 따른 공간 데이터 인덱싱 시스템을 설명하는 도면이다.
도 2는 도 1에 있는 공간 데이터 인덱싱 장치의 물리적 구성을 설명하는 도면이다.
도 3은 도 1에 있는 공간 데이터 인덱싱 장치의 기능적 구성을 설명하는 블록도이다.
도 4는 도 1에 있는 공간 데이터 인덱싱 장치에서 수행되는 공간 데이터 인덱싱 과정을 설명하는 순서도이다.
도 5는 geo-hash를 이용한 트랜잭션 해시 값을 설명하는 도면이다.
도 6은 본 발명의 일 실시예에 따른 인덱싱 구조를 설명하는 도면이다.
도 7은 공간 인덱스 간의 데이터 삽입 속도에 관한 실험 결과를 설명하는 도면이다.
도 8은 본 발명의 일 실시예에 따른 공간 질의 처리 알고리즘을 설명하는 도면이다.1 is a diagram illustrating a spatial data indexing system according to an embodiment of the present invention.
FIG. 2 is a diagram for explaining a physical configuration of the spatial data indexing apparatus shown in FIG. 1 .
FIG. 3 is a block diagram illustrating a functional configuration of the spatial data indexing apparatus shown in FIG. 1 .
FIG. 4 is a flowchart illustrating a spatial data indexing process performed in the spatial data indexing apparatus of FIG. 1 .
5 is a diagram for explaining a transaction hash value using geo-hash.
6 is a diagram for explaining an indexing structure according to an embodiment of the present invention.
7 is a diagram for explaining experimental results regarding data insertion speed between spatial indices.
8 is a diagram for explaining a spatial query processing algorithm according to an embodiment of the present invention.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.Since the description of the present invention is merely an embodiment for structural or functional description, the scope of the present invention should not be construed as being limited by the embodiment described in the text. That is, since the embodiment may have various changes and may have various forms, it should be understood that the scope of the present invention includes equivalents capable of realizing the technical idea. In addition, since the object or effect presented in the present invention does not mean that a specific embodiment should include all of them or only such effects, it should not be understood that the scope of the present invention is limited thereby.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.On the other hand, the meaning of the terms described in the present application should be understood as follows.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.Terms such as “first” and “second” are for distinguishing one component from another, and the scope of rights should not be limited by these terms. For example, a first component may be termed a second component, and similarly, a second component may also be termed a first component.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When a component is referred to as being “connected to” another component, it may be directly connected to the other component, but it should be understood that other components may exist in between. On the other hand, when it is mentioned that a certain element is "directly connected" to another element, it should be understood that the other element does not exist in the middle. Meanwhile, other expressions describing the relationship between elements, that is, "between" and "between" or "neighboring to" and "directly adjacent to", etc., should be interpreted similarly.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expression is to be understood as including the plural expression unless the context clearly dictates otherwise, and terms such as "comprises" or "have" refer to the embodied feature, number, step, action, component, part or these It is intended to indicate that a combination exists, and it should be understood that it does not preclude the possibility of the existence or addition of one or more other features or numbers, steps, operations, components, parts, or combinations thereof.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.In each step, identification numbers (eg, a, b, c, etc.) are used for convenience of description, and identification numbers do not describe the order of each step, and each step clearly indicates a specific order in context. Unless otherwise specified, it may occur in a different order from the specified order. That is, each step may occur in the same order as specified, may be performed substantially simultaneously, or may be performed in the reverse order.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The present invention can be embodied as computer-readable codes on a computer-readable recording medium, and the computer-readable recording medium includes all types of recording devices in which data readable by a computer system is stored. . Examples of the computer-readable recording medium include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like. In addition, the computer-readable recording medium is distributed in a computer system connected to a network, so that the computer-readable code can be stored and executed in a distributed manner.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.All terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs, unless otherwise defined. Terms defined in general used in the dictionary should be interpreted as having the meaning consistent with the context of the related art, and cannot be interpreted as having an ideal or excessively formal meaning unless explicitly defined in the present application.
도 1은 본 발명의 일 실시예에 따른 공간 데이터 인덱싱 시스템을 설명하는 도면이다.1 is a diagram illustrating a spatial data indexing system according to an embodiment of the present invention.
도 1을 참조하면, 공간 데이터 인덱싱 시스템(100)은 사용자 단말(110), 공간 데이터 인덱싱 장치(130) 및 데이터베이스(150)를 포함할 수 있다.Referring to FIG. 1 , the spatial
사용자 단말(110)은 공간 질의를 요청하고 그에 관한 질의 결과를 수신하여 확인할 수 있는 컴퓨팅 장치에 해당할 수 있고, 스마트폰, 노트북 또는 컴퓨터로 구현될 수 있으며, 반드시 이에 한정되지 않고, 태블릿 PC 등 다양한 디바이스로도 구현될 수 있다. 사용자 단말(110)은 공간 데이터 인덱싱 장치(130)와 네트워크를 통해 연결될 수 있고, 복수의 사용자 단말(110)들은 공간 데이터 인덱싱 장치(130)와 동시에 연결될 수 있다. The
공간 데이터 인덱싱 장치(130)는 공간 데이터에 관한 인덱싱을 통해 공간 데이터에 관한 데이터베이스를 구축할 수 있고 이를 기초로 공간 질의를 처리할 수 있는 컴퓨터 또는 프로그램에 해당하는 서버로 구현될 수 있다. 공간 데이터 인덱싱 장치(130)는 사용자 단말(110)과 블루투스, WiFi, 통신망 등을 통해 무선으로 연결될 수 있고, 네트워크를 통해 사용자 단말(110)과 데이터를 주고받을 수 있다.The spatial
일 실시예에서, 공간 데이터 인덱싱 장치(130)는 데이터베이스(150)와 연동하여 공간 데이터 인덱싱 과정에서 필요한 정보를 저장할 수 있다. 한편, 공간 데이터 인덱싱 장치(130)는 도 1과 달리, 데이터베이스(150)를 내부에 포함하여 구현될 수 있고, 사용자 단말(110)과 하나의 장치로 통합되어 구현될 수 있다. 공간 데이터 인덱싱 장치(130)는 프로세서, 메모리, 사용자 입출력부 및 네트워크 입출력부를 포함하여 구현될 수 있으며, 이에 대해서는 도 2에서 보다 자세히 설명한다.In an embodiment, the spatial
데이터베이스(150)는 공간 데이터 인덱싱 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 데이터베이스(150)는 공간 데이터에 관한 정보를 저장할 수 있고, 공간 데이터 인덱싱에 관한 정보를 저장할 수 있으며, 반드시 이에 한정되지 않고, 공간 데이터 인덱싱 장치(130)가 공간 데이터 인덱싱 과정에서 다양한 형태로 수집 또는 가공된 정보들을 저장할 수 있다.The
도 2는 도 1에 있는 공간 데이터 인덱싱 장치의 물리적 구성을 설명하는 도면이다.FIG. 2 is a diagram for explaining a physical configuration of the spatial data indexing apparatus shown in FIG. 1 .
도 2를 참조하면, 공간 데이터 인덱싱 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함하여 구현될 수 있다.Referring to FIG. 2 , the spatial
프로세서(210)는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 과정의 각 동작을 처리하는 프로시저를 실행할 수 있고, 그 과정 전반에서 읽혀지거나 작성되는 메모리(230)를 관리할 수 있으며, 메모리(230)에 있는 휘발성 메모리와 비휘발성 메모리 간의 동기화 시간을 스케줄할 수 있다. 프로세서(210)는 공간 데이터 인덱싱 장치(130)의 동작 전반을 제어할 수 있고, 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)와 전기적으로 연결되어 이들 간의 데이터 흐름을 제어할 수 있다. 프로세서(210)는 공간 데이터 인덱싱 장치(130)의 CPU(Central Processing Unit)로 구현될 수 있다.The
메모리(230)는 SSD(Solid State Drive) 또는 HDD(Hard Disk Drive)와 같은 비휘발성 메모리로 구현되어 공간 데이터 인덱싱 장치(130)에 필요한 데이터 전반을 저장하는데 사용되는 보조기억장치를 포함할 수 있고, RAM(Random Access Memory)과 같은 휘발성 메모리로 구현된 주기억장치를 포함할 수 있다.The
사용자 입출력부(250)는 사용자 입력을 수신하기 위한 환경 및 사용자에게 특정 정보를 출력하기 위한 환경을 포함할 수 있다. 예를 들어, 사용자 입출력부(250)는 터치 패드, 터치 스크린, 화상 키보드 또는 포인팅 장치와 같은 어댑터를 포함하는 입력장치 및 모니터 또는 터치스크린과 같은 어댑터를 포함하는 출력장치를 포함할 수 있다. 일 실시예에서, 사용자 입출력부(250)는 원격 접속을 통해 접속되는 컴퓨팅 장치에 해당할 수 있고, 그러한 경우, 공간 데이터 인덱싱 장치(130)는 서버로서 수행될 수 있다.The user input/
네트워크 입출력부(270)은 네트워크를 통해 외부 장치 또는 시스템과 연결하기 위한 환경을 포함하고, 예를 들어, LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 및 VAN(Value Added Network) 등의 통신을 위한 어댑터를 포함할 수 있다.The network input/
도 3은 도 1에 있는 공간 데이터 인덱싱 장치의 기능적 구성을 설명하는 블록도이다.FIG. 3 is a block diagram illustrating a functional configuration of the spatial data indexing apparatus shown in FIG. 1 .
도 3을 참조하면, 공간 데이터 인덱싱 장치(130)는 메모리 인덱싱부(310), 디스크 인덱싱부(330), 공간 질의 처리부(350) 및 제어부(370)를 포함할 수 있다.Referring to FIG. 3 , the spatial
메모리 인덱싱부(310)는 전체 공간 영역을 고정 크기를 갖는 복수의 셀(cell) 영역들로 분할하고 공간 데이터 객체를 메모리 상에서 정의되는 메모리 인덱스 영역에 저장할 수 있다. 여기에서, 전체 공간 영역은 공간 질의 대상이 되는 공간 영역으로서 공간 데이터가 위치 가능한 전체 영역에 해당할 수 있다. 또한, 메모리 인덱스 영역은 공간 데이터 객체에 관한 인덱스 정보가 저장되는 영역으로서 메모리의 특정 영역에 해당할 수 있다. 메모리 인덱싱부(310)는 전체 공간 영역을 고정 크기를 갖는 2n 개의 셀(cell) 영역들로 분할할 수 있고, 공간 데이터 객체를 각각의 셀 영역에 분산하여 저장할 수 있다.The
일 실시예에서, 메모리 인덱스 영역은 복수의 셀 영역들 각각에 독립적으로 연결되는 복수의 버킷들로 구성될 수 있다. 즉, 각 셀 영역은 특정 버킷과 직접 연결될 수 있고, 메모리 인덱싱부(310)에 의해 셀 영역으로 할당된 공간 데이터 객체는 해당 셀 영역과 연결된 버킷에 저장될 수 있다. 버킷은 메모리 상에서 정의되고 고정된 크기로 형성될 수 있다.In an embodiment, the memory index area may be configured with a plurality of buckets independently connected to each of the plurality of cell areas. That is, each cell region may be directly connected to a specific bucket, and the spatial data object allocated to the cell region by the
일 실시예에서, 복수의 버킷들은 해당 셀 영역의 z-오더링 넘버(z-ordering number)를 구분자로 포함하고 z-오더링 넘버에 따라 정렬될 수 있다. z-오더링 넘버는 셀 영역의 z-오더(z-order)에 따라 부여될 수 있고, 각 버킷은 연결된 셀 영역의 z-오더링 넘버를 포함함으로써 서로 식별될 수 있으며, z-오더링 넘버는 버킷들의 정렬 순서를 결정하는 기준으로서 활용될 수 있다.In an embodiment, the plurality of buckets may include a z-ordering number of a corresponding cell region as a delimiter and may be sorted according to the z-ordering number. A z-ordering number may be assigned according to the z-order of a cell region, and each bucket may be identified from each other by including the z-ordering number of a linked cell region, and the z-ordering number is the number of buckets. It may be used as a criterion for determining the sort order.
일 실시예에서, 메모리 인덱싱부(310)는 공간 데이터 객체의 위치정보를 기초로 z-오더링 넘버를 산출하고 z-오더링 넘버를 기초로 해당 공간 데이터 객체를 저장할 버킷을 결정할 수 있다. 메모리 인덱싱부(310)는 전체 공간 영역에서의 위도(latitude)와 경도(longitude)를 기초로 z-오더링 넘버를 산출할 수 있고, z-오더링 넘버를 구분자로 가진 버킷을 결정하여 공간 데이터 객체를 저장할 수 있다.In an embodiment, the
디스크 인덱싱부(330)는 메모리 인덱스 영역에 저장된 데이터의 양이 메모리의 가용범위를 초과하는 경우 메모리 인덱스 영역에 저장된 공간 데이터 객체를 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)할 수 있다. 여기에서, 다계층 인덱스 영역은 공간 데이터 객체에 관한 인덱스 정보가 저장되는 영역으로서 디스크의 특정 영역에 해당할 수 있다. 즉, 디스크 인덱싱부(330)는 메모리 인덱스 영역이 가득 찬 경우에만 디스크 접근을 시도하여 디스크 접근 횟수를 최소화할 수 있다. When the amount of data stored in the memory index area exceeds the available range of the memory, the
일 실시예에서, 다계층 인덱스 영역은 사분할 된 각 사분면 영역마다 복수의 셀 영역들로 분할되고 재귀적인 분할에 의해 계층적 구조를 형성할 수 있다. 여기에서, 계층적 구조에 관한 정보는 메모리 상에서 쿼드 트리(quad-tree) 형태로 관리될 수 있다. 다계층 인덱스 영역에 저장되는 사분면 영역은 쿼드 트리의 노드에 대응될 수 있고, 각 노드는 자신으로부터 분할된 사분면 영역에 대한 포인터를 포함할 수 있으며, 결과적으로 계층적인 구조를 갖는 쿼드 트리를 형성할 수 있다.In an embodiment, the multi-layered index area may be divided into a plurality of cell areas for each quadrant area divided into quadrants, and a hierarchical structure may be formed by recursive division. Here, the information about the hierarchical structure may be managed in the form of a quad-tree in the memory. The quadrant region stored in the multi-hierarchical index region may correspond to a node of the quad tree, and each node may include a pointer to the quadrant region divided from itself, and as a result, a quad tree having a hierarchical structure will be formed. can
일 실시예에서, 디스크 인덱싱부(330)는 다계층 인덱스 영역에서 메모리 인덱스 영역에 대응되는 셀 영역이 검출된 경우 해당 셀 영역에 연결된 공간 데이터 객체를 병합할 수 있다. 즉, 디스크 인덱싱부(330)는 동일 공간에 대한 인덱싱 정보가 중첩되는 경우 이를 하나로 병합하여 메모리의 내용을 디스크로 플러싱하는 과정에서 중복되는 셀 영역을 하나로 통합할 수 있다.In an embodiment, when a cell area corresponding to the memory index area is detected in the multi-layered index area, the
일 실시예에서, 디스크 인덱싱부(330)는 병합에 따라 특정 사분면 영역에서 공간 데이터 객체의 개수가 임계값을 초과하는 경우 해당 각 사분면 영역을 재-사분할하고 각 재-사분면 영역으로 공간 데이터 객체를 재배치할 수 있다. 임계값은 하나의 사분면 영역에 저장되는 공간 데이터 객체의 최대 개수로서 사전에 공간 데이터 인덱싱 장치(130)에 의해 설정될 수 있다.In one embodiment, when the number of spatial data objects in a specific quadrant region exceeds a threshold according to merging, the
즉, 디스크 인덱싱부(330)는 하나의 사분면 영역에 공간 데이터 객체가 과도하게 집중되는 것을 방지하기 위하여 적정 개수의 공간 데이터 객체가 모이면 각 사분면 영역을 4개의 재-사분면 영역으로 분할하는 재-사분할을 수행한 후 공간 데이터 객체를 분산 배치할 수 있다. 재-사분할 과정은 하나의 사분면 영역을 4개의 재-사분면 영역들로 분할하고 해당 사분면 영역에 저장되어 있던 공간 데이터 객체를 재-사분면 영역으로 재배치하는 과정에 해당할 수 있다.That is, the
일 실시예에서, 디스크 인덱싱부(330)는 각 재-사분면 영역을 고정 크기를 갖는 복수의 셀 영역들로 분할하고 분할된 특정 재-사분면 영역에서 공간 데이터 객체의 개수가 임계값을 초과할 때마다 재-사분할 과정을 반복 수행할 수 있다. 전체 공간 영역이 4개의 사분면 영역들로 분할된 경우라면, 디스크 인덱싱부(330)는 사분할 또는 재-사분할 된 영역들 각각을 2n 개의 셀 영역들로 분할할 수 있고, 특정 사분면 또는 재-사분면 영역에 대해 공간 데이터 객체의 재배치가 이루어지는 과정에서 다시 임계값을 초과하는 경우에는 각 사분면 또는 재-사분면 영역에 대한 재-사분할 동작이 반복적으로 수행될 수 있다.In one embodiment, the
공간 질의 처리부(350)는 질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 다계층 인덱스 영역과 메모리 인덱스 영역에 대한 탐색을 순차적으로 수행하여 질의 결과를 생성할 수 있다. 공간 질의 처리부(350)는 공간 데이터 객체에 대한 인덱싱 정보를 이용하여 공간 질의를 처리할 수 있으며, 공간 질의에 대한 질의 결과는 일반적으로 질의 포인트를 중심으로 질의 반경 내에 존재하는 공간 데이터 객체에 관한 정보에 해당할 수 있다. 공간 질의 처리부(350)는 1차적으로 디스크에 저장된 정보를 검색할 수 있고, 디스크 검색 과정에서 메모리에 새롭게 저장된 최신 정보를 반영하기 위해 2차적으로 메모리에 저장된 정보를 검색할 수 있다. When a spatial query including a query point and a query radius is received, the spatial
제어부(370)는 공간 데이터 인덱싱 장치(130)의 전체적인 동작을 제어하고, 메모리 인덱싱부(310), 디스크 인덱싱부(330) 및 공간 질의 처리부(350) 간의 제어 흐름 또는 데이터 흐름을 관리할 수 있다.The
도 4는 도 1에 있는 공간 데이터 인덱싱 장치에서 수행되는 공간 데이터 인덱싱 과정을 설명하는 순서도이다.FIG. 4 is a flowchart illustrating a spatial data indexing process performed in the spatial data indexing apparatus of FIG. 1 .
도 4를 참조하면, 공간 데이터 인덱싱 장치(130)는 메모리 인덱싱부(310)를 통해 전체 공간 영역을 고정 크기를 갖는 복수의 셀(cell) 영역들로 분할하고 공간 데이터 객체를 메모리 상에서 정의되는 메모리 인덱스 영역에 저장할 수 있다(단계 S410).Referring to FIG. 4 , the spatial
또한, 공간 데이터 인덱싱 장치(130)는 디스크 인덱싱부(330)를 통해 메모리 인덱스 영역에 저장된 데이터의 양이 메모리의 가용범위를 초과하는 경우 메모리 인덱스 영역에 저장된 공간 데이터 객체를 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)할 수 있다(단계 S430).In addition, when the amount of data stored in the memory index area through the
또한, 공간 데이터 인덱싱 장치(130)는 공간 질의 처리부(350)를 통해 질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 다계층 인덱스 영역과 메모리 인덱스 영역에 대한 탐색을 순차적으로 수행하여 질의 결과를 생성할 수 있다(단계 S450).In addition, when a spatial query including a query point and a query radius is received through the spatial
도 5는 geo-hash를 이용한 트랜잭션 해시 값을 설명하는 도면이다.5 is a diagram for explaining a transaction hash value using geo-hash.
도 5를 참조하면, 지리 정보를 데이터를 포함하는 블록 체인 시스템에서 트랜잭션의 해시 값은 기존의 트랜잭션 해시 코드(530)와 함께 위치 정보(latitude, longitude)를 기초로 생성된 지오해시(geohash) 코드(510)를 기초로 생성될 수 있다. 보다 구체적으로, 트랜잭션 해시 값은 지오해시 코드(510)와 트랜잭션 해시 코드(530)를 기초로 각각 생성된 값을 서로 연결하여 생성될 수 있다.Referring to FIG. 5 , the hash value of a transaction in a block chain system including geographic information data is a geohash generated based on location information (latitude, longitude) together with an existing
도 6은 본 발명의 일 실시예에 따른 인덱싱 구조를 설명하는 도면이다.6 is a diagram illustrating an indexing structure according to an embodiment of the present invention.
도 6을 참조하면, 공간 데이터 인덱싱 장치(130)는 블록 체인 환경에서 발생하는 공간 데이터에 대한 효과적인 인덱싱을 제공할 수 있다. 블록체인 환경에서 발생하는 데이터의 주요 특징은 일정 간격으로 대량의 데이터 업데이트가 발생할 수 있다는 것이다. 공간 데이터 인덱싱 장치(130)는 공간 데이터 객체에 대한 인덱스를 메모리에 1차적으로 저장하고 주기적으로 디스크에 플러시(flush)하는 방법을 통해 디스크에 저장된 계층적 구조의 공간 인덱스와 병합할 수 있다. Referring to FIG. 6 , the spatial
공간 데이터 인덱싱 장치(130)는 공간 데이터 객체가 삽입될 때마다 디스크에 저장된 대용량의 공간 인덱스를 업데이트하는 방식에 비해 디스크에 대한 임의 접근 횟수가 적어 업데이트 속도가 빠르고 계층적 구조의 인덱스를 탐색함으로써 질의 처리 과정에서의 긍정 오류(false positive)를 효과적으로 줄일 수 있다.The spatial
도 6에서, 공간 데이터 인덱싱 장치(130)에 의해서 구축된 인덱스는 전체 공간을 고정 크기의 격자(grid)로 분할한 메모리 기반의 인덱스와 디스크 기반의 다계층 인덱스로 구성될 수 있다. 여기에서, 메모리 기반의 인덱스는 메모리 인덱스 영역(610), 디스크 기반의 다계층 인덱스는 다계층 인덱스 영역(630)에 각각 대응될 수 있다. 메모리 인덱스는 전체 공간을 2n 개의 고정 크기 격자 셀로 분할한 후 각각의 영역에 속하는 데이터 객체들을 별도의 버킷에 저장할 수 있다. 데이터 객체가 삽입될 때, 삽입되는 데이터 객체의 위치정보를 바탕으로 z-ordering 넘버를 계산하여 저장될 버킷을 선택할 수 있다.In FIG. 6 , the index constructed by the spatial
또한, 반복적인 블록 삽입으로 인해 데이터의 양이 메모리의 가용범위를 초과하게 되면 공간 데이터 인덱싱 장치(130)는 모든 버킷에 축적된 정보를 디스크로 옮길 수 있다. 이때, 동일한 공간에 대한 인덱스 정보가 이미 디스크에 존재한다면 공간 데이터 인덱싱 장치(130)는 두 인덱스를 하나로 병합하는 작업을 수행할 수 있다.In addition, when the amount of data exceeds the usable range of the memory due to repetitive block insertion, the spatial
공간 데이터 인덱싱 장치(130)는 병합된 격자 인덱스가 포함하고 있는 데이터 객체의 수가 사전에 정의된 임계값 t를 초과한다면 격자 인덱스를 사분할하여 각각의 사분면에 대한 격자 인덱스를 생성할 수 있다. 이 때, 새로 생성된 사분면의 격자 인덱스는 분할된 사분면 공간을 다시 한번 2n 개의 고정 크기의 격자로 분할한 것에 해당할 수 있다. 이 작업은 각각의 격자 인덱스가 커버하는 데이터 객체의 양이 임계값 t를 초과할 때마다 반복적으로 진행될 수 있고, 각각의 격자 인덱스는 자신으로부터 분할된 격자 인덱스에 대한 포인터를 가지고 있기 때문에 결과적으로 계층적인 구조를 갖는 인덱스가 생성될 수 있다.If the number of data objects included in the merged grid index exceeds a predefined threshold t, the spatial
도 7은 공간 인덱스 간의 데이터 삽입 속도에 관한 실험 결과를 설명하는 도면이다.7 is a view for explaining experimental results regarding data insertion speed between spatial indices.
도 7을 참조하면, 디스크 상에서 구현된 각각의 공간 인덱스들, 예를 들어, Fixed grid, Grid file, R-tree 및 본 발명에 따른 인덱싱 방법(AMFG, Adaptive Multi-levels Fixed Grid) 각각에 따른 데이터 삽입 성능을 비교 평가한 결과를 확인할 수 있다. Referring to FIG. 7 , each spatial index implemented on the disk, for example, a fixed grid, a grid file, an R-tree, and data according to each of the indexing method (AMFG, Adaptive Multi-levels Fixed Grid) according to the present invention The results of comparative evaluation of insertion performance can be confirmed.
공간 데이터 객체는 geohash 코드에 의해 정렬되어 있기 때문에 격자 인덱스의 병합은 각 버킷의 병합 정렬을 통해 수행될 수 있다. 계층적 인덱스의 각 노드에 대한 병합 및 분할은 정렬된 버킷들에 대해 순차적으로 수행하기 때문에 순차적인 읽기 쓰기가 가능할 수 있다.Since spatial data objects are sorted by geohash code, merging of grid indices can be performed through merge sort of each bucket. Since merging and splitting of each node of the hierarchical index are sequentially performed on sorted buckets, sequential read/write may be possible.
기존의 Fixed grid 기법은 분할된 각 셀마다 고정 크기의 디렉토리를 유지하고 있기 때문에 비어 있는 셀의 디렉토리로 인한 공간적 낭비가 심할 뿐 아니라, 객체가 많이 포함된 디렉토리는 추가적인 디렉토리 체인을 갖게 되어 해당 셀에 대한 검색 및 업데이트시 디렉토리 체인에 대한 탐색을 필요로 하게 된다.The existing fixed grid technique maintains a directory of a fixed size for each divided cell, so space is wasted significantly due to the directory of an empty cell, and a directory containing a lot of objects has an additional directory chain, Searching and updating the directory requires searching through the directory chain.
반면, 공간 데이터 인덱싱 장치(130)에 의해 수행되는 인덱싱 방법은 부분 공간에 대한 정렬만을 필요로 하기 때문에 디스크 공간을 절약할 수 있을 뿐 아니라 삽입 속도 또한 빠를 수 있다.On the other hand, since the indexing method performed by the spatial
도 8은 본 발명의 일 실시예에 따른 공간 질의 처리 알고리즘을 설명하는 도면이다.8 is a diagram for explaining a spatial query processing algorithm according to an embodiment of the present invention.
도 8을 참조하면, 공간 데이터 인덱싱 장치(130)는 공간 질의 처리부(350)를 통해 질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 디스크 상의 다계층 인덱스 영역과 메모리 상의 메모리 인덱스 영역에 대한 탐색을 순차적으로 수행하여 공간 질의에 대한 질의 결과를 생성할 수 있다.Referring to FIG. 8 , when a spatial query including a query point and a query radius is received through the spatial
보다 구체적으로, 범위 질의 처리를 위한 인덱스 탐색은 루트 노드로부터 시작될 수 있다. 공간 데이터 인덱싱 장치(130)는 먼저 인덱스 노드가 커버하는 사분면과 질의 범위가 겹치는 부분이 있는지 검사할 수 있다. 겹치는 부분이 있다면 공간 데이터 인덱싱 장치(130)는 노드가 가진 격자 셀 중 질의 범위와 관련 있는 셀들을 탐색하여 해당 격자 셀에 위치한 오브젝트들을 검사할 수 있다. More specifically, index search for range query processing may be started from the root node. The spatial
이 때, 노드에 포함된 격자 셀은 고정된 크기를 갖기 때문에 공간 데이터 인덱싱 장치(130)는 모든 셀들을 검사할 필요없이 질의 영역과 격자 범위를 비교 계산하여 필요한 셀들을 사전에 검출할 수 있다. 만약 탐색한 노드가 자식 노드를 가지고 있다면, 공간 데이터 인덱싱 장치(130)는 자식 노드에 대한 탐색을 같은 방법으로 수행할 수 있다. At this time, since the grid cells included in the node have a fixed size, the spatial
공간 데이터 인덱싱 장치(130)는 디스크 상의 데이터에 대한 검색이 끝나면 메모리에서 아직 디스크로 플러시(Flush)되지 못한 최근 입력 데이터에 대한 탐색을 진행할 수 있다. 이 경우, 메모리에 저장된 격자 인덱스에 대한 탐색은 디스크 상에서의 탐색과 동일한 방법으로 수행될 수 있다.When the search for data on the disk is finished, the spatial
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to preferred embodiments of the present invention, those skilled in the art can variously modify and change the present invention within the scope without departing from the spirit and scope of the present invention as set forth in the claims below. You will understand that it can be done.
100: 공간 데이터 인덱싱 시스템
110: 사용자 단말 130: 공간 데이터 인덱싱 장치
150: 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: 메모리 인덱싱부 330: 디스크 인덱싱부
350: 공간 질의 처리부 370: 제어부
510: 지오해시 코드 530: 트랜잭션 해시 코드
610: 메모리 인덱스 영역 630: 다계층 인덱스 영역100: Spatial Data Indexing System
110: user terminal 130: spatial data indexing device
150: database
210: processor 230: memory
250: user input/output unit 270: network input/output unit
310: memory indexing unit 330: disk indexing unit
350: spatial query processing unit 370: control unit
510: geohash code 530: transaction hash code
610: memory index area 630: multi-layer index area
Claims (10)
상기 메모리 인덱스 영역에 저장된 데이터의 양이 상기 메모리의 가용범위를 초과하는 경우 상기 메모리 인덱스 영역에 저장된 공간 데이터 객체를 상기 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)하는 단계를 포함하고,
상기 다계층 인덱스 영역은 상기 사분할 된 각 사분면 영역마다 상기 복수의 셀 영역들로 분할되고 재귀적인 분할에 의해 계층적 구조를 형성하며,
상기 계층적 구조에 관한 정보는 상기 메모리 상에서 쿼드 트리(quad-tree) 형태로 관리되어 상기 다계층 인덱스 영역에 저장되는 사분면 영역은 쿼드 트리의 노드에 대응되고, 각 노드는 자신으로부터 분할된 사분면 영역에 대한 포인터를 포함하는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
dividing the entire spatial region into a plurality of cell regions having a fixed size and storing the spatial data object in a memory index region defined in a memory; and
When the amount of data stored in the memory index area exceeds the available range of the memory, the spatial data object stored in the memory index area is divided into quadrants and flushed into a multi-layered index area defined on the disk. comprising the steps of
The multi-layered index area is divided into the plurality of cell areas for each quadrant area divided into quadrants and forms a hierarchical structure by recursive division,
The information on the hierarchical structure is managed in the form of a quad-tree in the memory, and a quadrant region stored in the multi-layer index region corresponds to a node of the quad tree, and each node is a quadrant region divided from itself. A spatial data indexing method for block chain-based geospatial data, characterized in that it includes a pointer to
상기 복수의 셀 영역들 각각에 독립적으로 연결되는 복수의 버킷들로 구성되는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
The method of claim 1 , wherein the memory index area comprises:
A spatial data indexing method for a block chain-based geospatial data, characterized in that it consists of a plurality of buckets independently connected to each of the plurality of cell regions.
해당 셀 영역의 z-오더링 넘버(z-ordering number)를 구분자로 포함하고 상기 z-오더링 넘버에 따라 정렬되는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
3. The method of claim 2, wherein the plurality of buckets are
A spatial data indexing method for block chain-based geospatial data, comprising the z-ordering number of the corresponding cell region as a delimiter and sorting according to the z-ordering number.
상기 공간 데이터 객체의 위치정보를 기초로 상기 z-오더링 넘버를 산출하고 상기 z-오더링 넘버를 기초로 해당 공간 데이터 객체를 저장할 버킷을 결정하는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
The method of claim 3, wherein the storing comprises:
Calculating the z-ordering number based on the location information of the spatial data object and determining a bucket in which to store the spatial data object based on the z-ordering number. Spatial data indexing method for data.
상기 다계층 인덱스 영역에서 상기 메모리 인덱스 영역에 대응되는 셀 영역이 검출된 경우 해당 셀 영역에 연결된 공간 데이터 객체를 병합하는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
The method of claim 1, wherein the flushing comprises:
When a cell region corresponding to the memory index region is detected in the multi-layer index region, merging spatial data objects connected to the corresponding cell region Spatial data indexing for geospatial data based on blockchain Way.
상기 병합에 따라 특정 사분면 영역에서 공간 데이터 객체의 개수가 임계값을 초과하는 경우 각 사분면 영역을 재-사분할 하고 각 재-사분면 영역으로 공간 데이터 객체를 재배치하는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
The method of claim 6, wherein the flushing comprises:
According to the merging, when the number of spatial data objects in a specific quadrant region exceeds a threshold value, re-dividing each quadrant region and re-locating the spatial data objects to each re-quadrant region Block characterized in that it comprises the steps of: Spatial data indexing method for chain-based geospatial data.
각 재-사분면 영역을 고정 크기를 갖는 복수의 셀 영역들로 분할하고 특정 재-사분면 영역에서 공간 데이터 객체의 개수가 상기 임계값을 초과할 때마다 상기 재-사분할 과정을 반복 수행하는 단계를 포함하고,
상기 재-사분할 과정은 하나의 사분면 영역을 4개의 재-사분면 영역들로 분할하고 해당 사분면 영역에 저장되어 있던 공간 데이터 객체를 재-사분면 영역으로 재배치하는 과정에 해당하는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
The method of claim 7, wherein the flushing comprises:
dividing each re-quadrant region into a plurality of cell regions having a fixed size, and repeating the re-division process whenever the number of spatial data objects in a specific re-quadrant region exceeds the threshold value. including,
The re-division process is a block chain characterized in that it corresponds to a process of dividing one quadrant region into four sub-quadrant regions and relocating the spatial data object stored in the quadrant region to the re-quadrant region. Spatial data indexing method for the underlying geospatial data.
질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 상기 다계층 인덱스 영역과 상기 메모리 인덱스 영역에 대한 탐색을 순차적으로 수행하여 질의 결과를 생성하는 단계를 더 포함하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법.
According to claim 1,
When a spatial query including a query point and a query radius is received, sequentially performing a search for the multi-layered index area and the memory index area to generate a query result for block chain-based geospatial data Spatial data indexing method.
상기 메모리 인덱스 영역에 저장된 데이터의 양이 상기 메모리의 가용범위를 초과하는 경우 상기 메모리 인덱스 영역에 저장된 공간 데이터 객체를 상기 전체 공간 영역을 사분할 하고 디스크 상에서 정의되는 다계층 인덱스 영역에 플러싱(flushing)하는 디스크 인덱싱부; 및
질의 포인트와 질의 반경을 포함하는 공간 질의가 수신되면 상기 다계층 인덱스 영역과 상기 메모리 인덱스 영역에 대한 탐색을 순차적으로 수행하여 질의 결과를 생성하는 공간 질의 처리부를 포함하고,
상기 다계층 인덱스 영역은 상기 사분할 된 각 사분면 영역마다 상기 복수의 셀 영역들로 분할되고 재귀적인 분할에 의해 계층적 구조를 형성하며,
상기 계층적 구조에 관한 정보는 상기 메모리 상에서 쿼드 트리(quad-tree) 형태로 관리되어 상기 다계층 인덱스 영역에 저장되는 사분면 영역은 쿼드 트리의 노드에 대응되고, 각 노드는 자신으로부터 분할된 사분면 영역에 대한 포인터를 포함하는 것을 특징으로 하는 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 장치.
a memory indexing unit that divides the entire spatial region into a plurality of cell regions having a fixed size and stores spatial data objects in a memory index region defined in a memory;
When the amount of data stored in the memory index area exceeds the available range of the memory, the spatial data object stored in the memory index area is divided into quadrants and flushed into a multi-layered index area defined on the disk. a disk indexing unit; and
a spatial query processing unit configured to generate a query result by sequentially searching the multi-layered index area and the memory index area when a spatial query including a query point and a query radius is received;
The multi-layered index area is divided into the plurality of cell areas for each quadrant area divided into quadrants and forms a hierarchical structure by recursive division,
The information on the hierarchical structure is managed in the form of a quad-tree in the memory, and a quadrant region stored in the multi-layer index region corresponds to a node of the quad tree, and each node is a quadrant region divided from itself. A spatial data indexing device for block chain-based geospatial data, characterized in that it includes a pointer to
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190169541A KR102354343B1 (en) | 2019-12-18 | 2019-12-18 | Spatial indexing method and apparatus for blockchain-based geospatial data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190169541A KR102354343B1 (en) | 2019-12-18 | 2019-12-18 | Spatial indexing method and apparatus for blockchain-based geospatial data |
Publications (3)
Publication Number | Publication Date |
---|---|
KR20210077975A KR20210077975A (en) | 2021-06-28 |
KR102354343B1 true KR102354343B1 (en) | 2022-01-21 |
KR102354343B9 KR102354343B9 (en) | 2022-12-05 |
Family
ID=76608003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190169541A KR102354343B1 (en) | 2019-12-18 | 2019-12-18 | Spatial indexing method and apparatus for blockchain-based geospatial data |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102354343B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704350A (en) * | 2021-08-03 | 2021-11-26 | 西安交通大学 | Intelligent electric vehicle data storage method based on block chain multi-chain technology fusion |
KR20230096180A (en) * | 2021-12-22 | 2023-06-30 | 서강대학교산학협력단 | Spatial lsm tree apparatus and method for indexing blockchain based geospatial point data |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070754A1 (en) * | 2014-09-10 | 2016-03-10 | Umm Al-Qura University | System and method for microblogs data management |
US20180308277A1 (en) | 2017-04-24 | 2018-10-25 | Intel Corporation | Positional only shading pipeline (posh) geometry data processing with coarse z buffer |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140009860A (en) * | 2012-07-13 | 2014-01-23 | 삼성전자주식회사 | Method and apparatus for constructing histogram based on multi-dimensional index structure |
KR101784612B1 (en) | 2016-06-10 | 2017-10-12 | 인하대학교 산학협력단 | Geo-hash based indexing scheme for wban monitoring system based on the position |
KR102094497B1 (en) | 2017-08-16 | 2020-04-23 | 주식회사 케이티 | System and method for providing storage service based on block chain |
US11762839B2 (en) * | 2017-12-13 | 2023-09-19 | Sogang University Research Foundation | Search method using data structure for supporting multiple search in blockchain-based IoT environment, and device according to method |
KR102005343B1 (en) * | 2017-12-27 | 2019-10-01 | 서강대학교산학협력단 | Partitioned space based spatial data object query processing apparatus and method, storage media storing the same |
-
2019
- 2019-12-18 KR KR1020190169541A patent/KR102354343B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070754A1 (en) * | 2014-09-10 | 2016-03-10 | Umm Al-Qura University | System and method for microblogs data management |
US20180308277A1 (en) | 2017-04-24 | 2018-10-25 | Intel Corporation | Positional only shading pipeline (posh) geometry data processing with coarse z buffer |
Non-Patent Citations (1)
Title |
---|
"HIGH PERFORMANCE SPATIAL AND SPATIO-TEMPORAL DATA PROCESSING", https://tspace.library.utoronto.ca/bitstream/1807/71314/1/Ray_Suprio_201511_PhD_thesis.pdf* |
Also Published As
Publication number | Publication date |
---|---|
KR20210077975A (en) | 2021-06-28 |
KR102354343B9 (en) | 2022-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
US10102253B2 (en) | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices | |
US7734714B2 (en) | Spatial Sieve Tree | |
US10783115B2 (en) | Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset | |
US8868926B2 (en) | Cryptographic hash database | |
CN110168532B (en) | Data updating method and storage device | |
CN113535670B (en) | Virtual resource mirror image storage system and implementation method thereof | |
KR20190079354A (en) | Partitioned space based spatial data object query processing apparatus and method, storage media storing the same | |
US12013814B2 (en) | Managing snapshotting of a dataset using an ordered set of B+ trees | |
KR102354343B1 (en) | Spatial indexing method and apparatus for blockchain-based geospatial data | |
CN110888837A (en) | Object storage small file merging method and device | |
CN113297432B (en) | Method, processor-readable medium, and system for partition splitting and merging | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
Mao et al. | Comprehensive comparison of LSM architectures for spatial data | |
Petrov | Algorithms behind modern storage systems: Different uses for read-optimized b-trees and write-optimized lsm-trees | |
Zhong et al. | A novel method to manage very large raster data on distributed key-value storage system | |
Vu et al. | Incremental partitioning for efficient spatial data analytics | |
US11068514B2 (en) | System and method for indexing spatial data in a computer network using the least differential sum and binary decision tree | |
EP3995972A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium | |
KR20220099745A (en) | A spatial decomposition-based tree indexing and query processing methods and apparatus for geospatial blockchain data retrieval | |
KR20230096180A (en) | Spatial lsm tree apparatus and method for indexing blockchain based geospatial point data | |
KR20230092443A (en) | Method and Apparatus for Rapid Version Searching in MVCC Database Systems | |
CN116028675A (en) | Tree splitting method of billion-level tree structure record table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
G170 | Re-publication after modification of scope of protection [patent] |