KR102006283B1 - 패스트맵을 이용한 데이터셋의 m-트리 적재방법 - Google Patents

패스트맵을 이용한 데이터셋의 m-트리 적재방법 Download PDF

Info

Publication number
KR102006283B1
KR102006283B1 KR1020190022540A KR20190022540A KR102006283B1 KR 102006283 B1 KR102006283 B1 KR 102006283B1 KR 1020190022540 A KR1020190022540 A KR 1020190022540A KR 20190022540 A KR20190022540 A KR 20190022540A KR 102006283 B1 KR102006283 B1 KR 102006283B1
Authority
KR
South Korea
Prior art keywords
group
points
tree
dimensional
space
Prior art date
Application number
KR1020190022540A
Other languages
English (en)
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 KR1020190022540A priority Critical patent/KR102006283B1/ko
Application granted granted Critical
Publication of KR102006283B1 publication Critical patent/KR102006283B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 패스트맵을 이용한 데이터셋의 M-트리 적재방법에 관한 것으로, 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계; k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계; 상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계; 상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계; 를 포함하여 상기 데이터셋을 M-트리에 BulkLoading한다. 이로 인해, 데이터 객체간 유사성이 유클리디안 공간에서 두 점 간의 Lp 거리로 정의되지 않는 데이터셋을 대량으로 M-트리에 효율적으로 적재할 수 있고, 이의 인덱싱 및 검색 효율이 기존의 M-트리에서의 검색 성능보다 향상되는 효과가 있다.

Description

패스트맵을 이용한 데이터셋의 M-트리 적재방법{DATASET LOADING METHOD IN M-TREE USING FASTMAP}
본 발명은 패스트맵을 이용한 데이터셋의 M-트리 적재방법에 관한 것으로, 패스트맵을 이용하여 대량의 데이터베이스 객체를 M-트리에 적재하는 기술에 관한 것이다.
M-트리는 임의의 두 객체간 거리가 정의된 공간인 metric space 내의 객체들에 대한 효율적인 검색을 위한 인덱스 구조로서, Euclidean 공간에서만 사용 가능한 R-트리와는 달리, M-트리는 metric space 뿐만 아니라 Euclidean 공간에서도 사용 가능하다는 장점이 있다.
특히, 동일한 데이터셋에 대해 M-트리가 R-트리보다 데이터 검색 성능이 우수함이 연구로 입증되었다.
그리고, M-트리의 인덱스에 대량의 데이터 객체를 순차적으로 삽입함에 따른 비용 소모 및 비효율성의 한계점 개선을 위해, 대량의 데이터 객체를 대용량으로 업로드하는 bulk loading 알고리즘이 제안되고 있다.
한편, 음성, 이미지, 텍스트 등의 비정형 멀티미디어 데이터와 같이 용량이 크고 크기가 일정하지 않은 비정형 멀티미디어 데이터나, 도로 네트워크 상의 POI(point of interest)와 같이, 데이터 객체간 유사성을 Euclidean 공간 상에서 두 점 간의 Lp 거리로 정의하기 어려운 데이터를 데이터 검색 성능이 우수한 M-트리에 대용량으로 업로드하기 위한 알고리즘의 개발이 필요한 실정이다.
대한민국 공개특허공보 제10-2012-0096894(데이터베이스 검색방법, 네비게이션 장치 및 인덱스 구조 생성 방법)
본 발명이 이루고자 하는 기술적 과제는 데이터 객체간 유사성을 유클리디안 공간 상의 두 점 간의 Lp 거리를 정의하기 어려운 데이터셋을 검색 효율이 우수한 M-트리에 대용량 업로드하는 방법을 제시하여, 데이터셋의 데이터베이스 내 인덱스 생성 및 검색 성능을 향상하기 위한 것이다.
본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법은 데이터 객체를 M-트리에 적재 처리하는 처리장치에서 수행되고, 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계; k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계; 상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계; 그리고, 상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계; 를 포함하여 상기 데이터셋을 M-트리에 적재하는 것을 특징으로 한다.
상기 메트릭 스페이스 상의 데이터셋은 데이터 객체간 유사성이 유클리디안 공간에서 두 점 간의 Lp 거리로 정의되지 않는 데이터셋인 것을 특징으로 한다.
상기 메트릭 스페이스 상의 데이터셋은 비정형 멀티미디어 데이터 또는 도로 네트워크의 POI(point of interest)인 것을 특징으로 한다.
상기 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계는, 상기 메트릭 스페이스 상의 데이터의 객체간 간격이 상기 k-차원의 유클리디안 스페이스 상에서 유지되도록 매핑되도록 수행되는 것을 특징으로 한다.
상기 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계는 하기의 식 1로부터 수행되는 것을 특징으로 한다.
[식 1]
Figure 112019020160249-pat00001
(dij는 메트릭 스페이스 상의 두 객체 Oi, Oj간의 거리이고,
Figure 112019020160249-pat00002
는 유클리디안 스페이스로 매핑된 두 객체
Figure 112019020160249-pat00003
간의 거리이고, i 및 j는 1부터 N까지의 자연수임.)
상기 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계는 상기 데이터셋을 구성하는 복수 개의 객체들을 상기 유클리디안 스페이스 상에 BulkLoading으로 매핑하도록 수행되는 것을 특징으로 한다.
상기 k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계는 공간채움곡선을 이용하여 수행되는 것을 특징으로 한다.
상기 k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계는 공간채움곡선으로 Z curve(Morton curve), Hilbert curve, Gray-code curve 중 어느 하나를 이용하도록 수행되는 것을 특징으로 한다.
상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계는, 상기 1차원 시퀀스에 정렬된 연속하는 점들을 순차적으로 그룹으로 분할하되, 모든 그룹이 최대 객체를 포함하도록 균일하게 그룹화하는 풀페이지 방법을 이용하여 수행되는 것을 특징으로 한다.
상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계는, 상기 1차원 시퀀스에 정렬된 연속하는 점들을 순차적으로 그룹으로 분할하되, 그룹에 포함되는 점간 거리와 그룹에 포함된 점의 개수를 비교하여 그룹에 포함시킬 점의 개수를 산출하고 산출결과를 이용하여 그룹의 영역 크기가 확장되지 않는 범위로 그룹을 구성하는 휴리스틱 방법을 이용하여 수행되는 것을 특징으로 한다.
상기 휴리스틱 방법에서 상기 그룹에 포함되는 점간 거리는 실제 메트릭 스페이스 상의 점간 거리로 산출되거나, k-차원 유클리디안 공간 내의 두 점간의 거리로 대체하여 산출되도록 수행되는 것을 특징으로 한다.
상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계는, 상기 1차원 시퀀스에 정렬된 연속하는 점들을 순차적으로 그룹으로 분할하되, 후보 그룹들을 생성하고, 각 후보 그룹에 포함된 영역 크기의 반지름과 후보 그룹에 포함된 점의 개수를 산출하고 산출결과를 이용하여 그룹을 구성하는 리저러스 방법을 이용하여 수행되는 것을 특징으로 한다.
상기 리저러스 방법에서 상기 후보 그룹 영역의 반지름은 실제 메트릭 스페이스 상의 반지름으로 산출되거나, k-차원 유클리디안 공간 내의 두 점간의 거리로 대체하여 산출되도록 수행되는 것을 특징으로 한다.
상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계는 상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계에서 분할된 그룹에 포함된 점들에 대응되는 메트릭 스페이스 상의 객체를 포함하는 리프 노드를 생성하도록 수행되는 것을 특징으로 한다.
상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계는, k-차원의 유클리디안 스페이스 상의 점들을 이용하여 리프 노드의 대표 객체를 산출하도록 수행되는 것을 특징으로 한다.
상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계 이후에, 각 그룹에 대해 생성된 리프 노드에 대해 non-리프 엔트리를 생성하는 단계;를 수행하고, 상기 non-리프 엔트리의 개수에 따라, 상기 non-리프 엔트리를 엔트리 그룹으로 분할하는 단계;와 전체 엔트리를 하나의 루트 노드에 저장하는 단계; 중 어느 한 단계를 더 수행하는 것을 특징으로 한다.
상기 non-리프 엔트리를 엔트리 그룹으로 분할하는 단계는 풀페이지 방법, 휴리스틱 방법 또는 리저러스 방법으로 수행되는 것을 특징으로 한다.
상기 non-리프 엔트리를 엔트리 그룹으로 분할하는 단계에서 생성된 엔트리는 버퍼에 저장되도록 수행되고, 상기 버퍼가 가득 차면 상기 전체 엔트리를 하나의 루트 노드에 저장하는 단계를 수행하여 상기 엔트리를 메모리 디스크에 기록하는 것을 특징으로 한다.
본 발명의 한 실시예에 따른 컴퓨터 판독 가능한 기록매체는 상기 패스트맵을 이용한 데이터셋의 M-트리 적재방법을 수행하는 것을 특징으로 한다.
이러한 특징에 따르면, 본원 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법은 패스트맵과 공간채움곡선을 이용하여 대량의 데이터셋을 M-트리에 적재하는 구조를 가지므로, 데이터 객체간 유사성이 유클리디안 공간에서 두 점 간의 Lp 거리로 정의되지 않는 데이터셋을 대량으로 M-트리에 효율적으로 적재할 수 있고, 이의 인덱싱 및 검색 효율이 기존의 M-트리에서의 검색 성능보다 향상되는 효과가 있다.
도 1은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법의 흐름을 나타낸 순서도이다.
도 2는 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 1차원 시퀀스를 그룹으로 분할하는 과정의 여러 실시예를 나타낸 도면이다.
도 3은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 1차원 시퀀스를 휴리스틱 방법을 이용하여 그룹으로 분할하는 과정을 나타낸 순서도이다.
도 4는 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 1차원 시퀀스를 리저러스 방법을 이용하여 그룹으로 분할하는 과정을 나타낸 순서도이다.
도 5는 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 그룹에 대해 리프 노드를 생성하는 과정을 나타낸 순서도이다.
도 6은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 그룹에 대해 리프 노드를 생성하는 과정의 실시예를 나타낸 도면이다.
도 7은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 리프 노드에 대해 non-leaf 엔트리를 생성하는 과정에서의 non-리프 엔트리의 실시예를 나타낸 도면이다.
도 8은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법에 따른 데이터 검색 속도를 데이터 순차 삽입과 성능을 비교한 그래프이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법의 흐름을 나타낸 순서도이고, 도 2는 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 1차원 시퀀스를 그룹으로 분할하는 과정의 여러 실시예를 나타낸 도면이고, 도 3은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 1차원 시퀀스를 휴리스틱 방법을 이용하여 그룹으로 분할하는 과정을 나타낸 순서도이고, 도 4는 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 1차원 시퀀스를 리저러스 방법을 이용하여 그룹으로 분할하는 과정을 나타낸 순서도이고, 도 5는 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 그룹에 대해 리프 노드를 생성하는 과정을 나타낸 순서도이고, 도 6은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 그룹에 대해 리프 노드를 생성하는 과정의 실시예를 나타낸 도면이고, 도 7은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법 흐름 중 리프 노드에 대해 non-leaf 엔트리를 생성하는 과정에서의 non-리프 엔트리의 실시예를 나타낸 도면이고, 도 8은 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법에 따른 데이터 검색 속도를 데이터 순차 삽입과 성능을 비교한 그래프이다.
본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법은 비정형 멀티미디어 데이터 또는 도로 네트워크의 POI와 같이 객체간 유사성이 유클리디안 공간 상에서 두 점 간의 Lp 거리를 정의되지 않는 데이터셋을 데이터베이스 구조인 M-트리에 적재하는 방법에 관한 것으로, 객체간 유사성이 유클리디안 공간 상에서 두 점 간의 Lp 거리로 정의되는 데이터셋에 대해서도 적용될 수 있으며, 이를 한정하지는 않아야 할 것이다.
본 발명의 일 실시예에서는 유클리디안 공간 상에서 두 점 간의 Lp 거리를 정의되지 않는 데이터셋을 M-트리에 적재하는 방법을 기준으로 설명하도록 한다.
또한, 본 발명의 한 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법은 데이터베이스를 포함하는 컴퓨팅장치, 서버, 또는 이를 포함하는 네트워크에서 수행될 수 있으며, 이를 한정하지는 않는다.
이하의 명세서에서는 본 실시예에 따른 알고리즘은 컴퓨터장치, 서버 또는 네트워크에서 데이터 객체를 M-트리에 적재 처리하는 처리장치, 즉, 프로세서에서 수행되는 것, 즉, 본 실시예에 따른 알고리즘을 저장하는 컴퓨터 판독 가능한 기록매체인 것을 기반으로 하여 설명하도록 하며, 본 알고리즘이 수행되는 주체를 한정하지는 않는다.
또한, 본 실시예에 따른 알고리즘을 수행하는 처리장치는 별도의 저장장치와 접속되어 저장장치에 저장된 데이터를 참조하거나, 처리결과를 저장장치에 저장할 수 있으며, 저장장치의 형태, 용량 또는 설치 위치 등을 한정하지는 않아야 할 것이다.
본 실시예에서, 패스트맵을 이용한 데이터셋의 M-트리 적재방법은 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑(S100)하는 단계, k-차원의 점들을 정렬하여 1차원 시퀀스를 생성(S200)하는 단계, 1차원 시퀀스를 분할하여 연속 그룹을 생성(S300)하는 단계, 각 그룹에 대해 leaf 노드를 생성(S400)하는 단계, 각 그룹에 대해 생성된 leaf 노드에 대해 non-leaf 엔트리를 생성(S500)하는 단계, non-leaf 엔트리 개수를 설정값 M과 비교(Q100)하는 단계, non-leaf 엔트리 개수가 설정값 M보다 큰 경우 수행되는 non-leaf 엔트리를 엔트리 그룹으로 분할(S610)하는 단계와 엔트리 그룹에 대해 non-leaf 노드, non-leaf 엔트리를 생성(S620)하는 단계, 그리고 , non-leaf 엔트리 개수가 설정값 M보다 작은 경우 수행되는 전체 엔트리를하나의 루트 노드에 저장(S700)하는 단계를 포함하여 이루어진다.
먼저, 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑(S100)하는 단계에서는 메트릭 스페이스(metric space) 상의 데이터셋 D 내의 각 객체가 k-차원의 유클리디안 스페이스(Euclidean space) 상에서 객체간 상대적인 거리를 가급적 유지하도록 매핑한다.
이 단계(S100)에서, k는 1 이상의 임의의 자연수로, 본 실시예에서는 메트릭 스페이스 상의 데이터셋의 객체들을 1차원의 유클리디안 스페이스 상에 매핑하는 것을 예로 들어 설명하도록 하나, 본 발명을 한정하지는 않아야 할 것이다.
이때, 메트릭 스페이스 상의 데이터셋 D는 객체 Oj(j는 1부터 N, N은 자연수임)를 포함한다.
그리고, 이 단계(S100)에서는 FastMap 기법을 통해 데이터셋의 객체들을 유클리디안 스페이스 상에 매핑하는데, 데이터셋에 포함된 객체들을 하나씩 업로드하는 것이 아닌, 복수 개의 객체를 한꺼번에 유클리디안 스페이스 상에 매핑, 즉, Bulkloading한다.
한 예에서, 메트릭 스페이스 상의 데이터셋의 객체들을 FastMap을 통해 유클리디안 스페이스 상으로 매핑함에 있어서, 메트릭 스페이스 상에서의 데이터셋의 객체간 거리가 유클리디안 스페이스 상에서도 유지되도록 매핑하기 위해, 메트릭 스페이스 상의 객체들이 다음의 식 1의 stress 함수를 만족하되, stress값을 최소화하도록 k-차원의 유클리디안 스페이스로 매핑한다.
[식 1]
Figure 112019020160249-pat00004
위의 식 1에서, dij는 메트릭 스페이스 상의 두 객체 Oi, Oj간의 거리이고,
Figure 112019020160249-pat00005
는 유클리디안 스페이스로 매핑된 두 객체
Figure 112019020160249-pat00006
간의 거리이고, i 및 j는 1부터 N까지의 자연수이다.
다음으로, k-차원의 점들을 정렬하여 1차원 시퀀스를 생성(S200)하는 단계에서는, 위 단계(S100)로부터 k-차원의 유클리디안 스페이스에 매핑된 점들을 1차원 시퀀스로 정렬한다.
이때, 공간채움곡선(Space-filling curve)을 이용하여 k-차원의 유클리디안 스페이스의 점들을 1차원 시퀀스로 정렬한다.
한 예예서, 공간채움곡선은 유클리디안 스페이스의 그리드(Grid, 격자) 상에 매핑된 모든 점, 즉, 객체(
Figure 112019020160249-pat00007
)들을 순차적으로 방문하고, 방문 순서에 따라 각 객체의 순번(order)을 부여하여, 순번에 따라 1차원 시퀀스로 정렬한다.
공간채움곡선은 Z curve(Morton curve), Hilbert curve, Gray-code curve를 이용할 수 있으나, 데이터 객체를 FastLoad하는 본 실시예에서는, 힐버트 곡선을 이용하여 k-차원 유클리디안 스페이스의 객체들을 1차원 시퀀스로 정렬한다.
그리고 이 단계(S200)에서 생성하는 1차원 시퀀스는, k-차원의 유클리디안 스페이스 상에서 두 점이 인접하도록 매핑되어 있는 데이터 객체가 1차원 시퀀스 상에 인접하는 순번으로 정렬되도록 한다.
다음으로, 1차원 시퀀스를 분할하여 연속 그룹을 생성(S300)하는 단계에서는 위 단계(S200)에서 생성한 1차원 시퀀스에서 순번에 따라 정렬된 점들을 그룹으로 분할한다.
이때, 1차원 시퀀스에서 분할된 그룹들은, 1차원 시퀀스에 정렬된 연속하는 점들을 적어도 한 개, 바람직하게는 복수 개의 점을 포함하고, 1차원 시퀀스로부터 분할 생성되는 각 그룹들은 그룹 번호를 부여받을 수 있다.
한 예에서, 첫 번째 그룹이 1차원 시퀀스에 정렬된 첫 번째 점, 두 번째 점을 포함하도록 생성된 경우, 첫 번째 그룹에 연속하는 그룹인 두 번째 그룹은 1차원 시퀀스에 정렬된 세 번째 점부터 포함하도록 생성된다.
이 단계(S300)는, 1차원 시퀀스로부터 분할된 그룹이 1차원 시퀀스에 정렬된 μM~M개의 연속하는 점들을 포함하도록 이루어질 수 있으며, 이때, μ(0.0<μ≤1.0)는 최소 공간 활용 비율(minimum storage utilization)이고, M은 하나의 M-트리 단말 노드 내의 최대 객체 개수, 또는 M-트리 비단말 노드 내의 최대 엔트리 개수이다.
일 예에서, 이 단계(S300)는 1차원 시퀀스에 정렬된 연속된 점들 중 첫 번째 점부터 연속적으로 점들을 스캔하여 그룹에 포함시키고, 그룹으로 이미 포함된 점 이후에 연속으로 정렬된 점부터 스캔하여 새로운 그룹에 포함시키도록 반복적으로 수행되되, 시퀀스에 정렬된 점의 개수가 그룹으로 포함되지 않은 점이 μM 개 이하가 될 때까지 시퀀스의 점들을 스캔하여 그룹으로 분할하는 동작을 반복하도록 수행된다.
이 단계(S300)는 풀페이지(FULLPAGE) 방법, 휴리스틱(HEURISTIC) 방법, 리저러스(RIGOROUS) 방법 중 어느 한 방법을 이용하여 수행될 수 있다.
먼저, 풀페이지 방법을 이용하여 1차원 시퀀스의 점들을 그룹으로 분할하는 단계(S300)를 수행하는 일 예를 설명하면, 풀페이지 방법은 1차원 시퀀스에 정렬된 점을 M개씩 균일하게 그룹에 포함시키는 방법으로서, 1차원 시퀀스로부터 생성되는 모든 그룹이 M개의 점을 포함하도록 1차원 시퀀스를 그룹으로 분할한다.
풀페이지 방법을 이용하여 1차원 시퀀스를 그룹으로 분할하는 경우, M-트리의 공간 활용을 최대화할 수 있다.
그러나, 풀페이지 방법을 이용하여 1차원 시퀀스에 정렬된 점들을 단순히 M개의 점을 포함하는 그룹으로 분할하는 일 예는, 1차원 시퀀스 내에서 연속하는 두 점이 k-차원의 유클리디안 스페이스나 실제 메트릭 스페이스 상에서는 두 점에 해당하는 두 데이터셋 객체가 떨어져 위치하는 경우, 실제 스페이스 상에서 떨어진 두 객체를 포함하는 그룹이 생성되는 경우, 해당 그룹에 대한 region의 크기가 증가하여 M-트리에서의 검색 성능이 크게 저하되는 문제점이 발생할 수 있다.
도 2의 실시예를 참조로 하여 이를 자세히 비교 설명하면, 1차원 시퀀스에 연속 정렬된 객체들은 실제의 k-차원의 유클리디안 스페이스에서 힐버트 곡선 상에 도 2의 (a)와 같이 배치되고, 1차원 시퀀스에 연속 정렬된 O1부터 Ox에 이르는 객체가 한 그룹으로 분할되는 경우, 원 형상을 갖는 그룹의 최소 영역이 형성된다.
한편, 도 2의 (b)에 도시한 것처럼, 1차원 시퀀스에 정렬된 O1부터 Ox+1에 이르는 객체가 한 그룹으로서 분할되는 경우, Ox 객체와 Ox+1 객체는 1차원 시퀀스에서 연속하지만 실제 유클리디안 스페이스 상에서 두 객체는 서로 거리가 떨어져 위치하므로, 도 2의 (a)에 도시한 실시예보다 단지 Ox+1객체만을 더 포함하는 구조임에도, 객체들을 포함하는 그룹의 최소 영역은 도 2의 (a)에서 형성되는 최소 영역의 크기보다 크게 확장되며, 이와 같은 그룹의 영역(region) 크기 증가는 위에서 언급한 것처럼 객체 검색 성능 효율을 저하시키게 된다.
이에 따라, 휴리스틱 방법 및 리저러스 방법은 1차원 시퀀스에서 분할되는 그룹에 포함되는 점들에 해당하는 객체들이 실제 메트릭 스페이스 또는 유클리디안 스페이스 상에 분포되었을 때 이들 객체를 포함하는 최소 영역의 크기가 객체 검색 효율을 저하시키지 않는 크기의 범위로 형성되도록 그룹에 포함되는 점의 개수를 제한시킨다.
휴리스틱 방법을 이용하여 1차원 시퀀스의 점들을 그룹으로 분할하는 일 실시예를 도 3을 참고로 하여 설명하면, 먼저, 1차원 시퀀스에 정렬된 점들 중 첫 번째 점부터 μM번째 점에 이르는 μM개의 점을 첫 번째 그룹으로 생성(S210)한다.
그리고, 위 단계(S210)로부터 생성된 첫 번째 그룹에 포함된 μM개의 점들을 이용하여
Figure 112019020160249-pat00008
을 산출(S220)한다. 이때, d는 그룹에 포함되는 첫 번째 점과 그룹에 포함되는 마지막 점(μM번째 점) 간의 거리이고, n은 그룹에 포함된 점들의 개수이다.
그런 다음, 위 단계(S210)로부터 생성된 그룹에 포함된 마지막 점에 연속하는 점을 그룹에 추가로 포함시키고
Figure 112019020160249-pat00009
을 산출(S230)한다. 이때, 그룹에 추가되는 점은 위 단계(S210)에서 생성된 그룹에 기 포함된 마지막 점인 μM번째 점에 대해 연속하는 점, 즉, 1차원 시퀀스에 정렬된 (μM+1)번째 점이고, d'는 그룹 내의 첫 번째 점과 이 단계(S230)에서 새로 추가된 점 간의 거리이며, n'은 이 단계(S230)로부터 점이 추가된 그룹 내 포함된 점들의 개수이다.
위 비교 단계(Q200)에서
Figure 112019020160249-pat00010
Figure 112019020160249-pat00011
보다 큰 경우, 예 화살표 방향을 따라 이동하여 (n'-1)개의 점으로 그룹을 생성(S241)하는 단계를 수행하고,
Figure 112019020160249-pat00012
Figure 112019020160249-pat00013
보다 크지 않은 경우, 아니오 화살표 방향을 따라 이동하여 S230단계를 수행(S242)하도록 한다.
이때, 위의 비교단계(Q200)는 그룹 내 점들간 최대거리를 점들 개수로 나눈 값(
Figure 112019020160249-pat00014
,
Figure 112019020160249-pat00015
), 즉, 그룹의 영역 크기를 비교하는 단계로서, 위 단계(S230)에서 점이 추가된 그룹의 영역 크기가 최초 단계(S210)에서 생성된 그룹의 영역 크기보다 증가했는지의 여부를 판단하는 과정을 수행한다.
일 예에서,
Figure 112019020160249-pat00016
Figure 112019020160249-pat00017
보다 큰 경우, 위 단계(S230)에서 그룹에 점을 추가함에 따라 그룹의 영역 크기가 최초 단계(S210)에서 생성한 그룹의 영역 크기보다 증가한 것으로, 이와 같이 그룹의 영역 크기가 증가하는 경우 그룹 내 객체의 검색 효율이 저하될 수 있으므로, 이를 방지하기 위해, 최초 단계(S210)에서 생성한 그룹의 영역 크기가 확장되지 않는 범위를 유지하는 점들의 개수로 그룹을 구성하도록 한다. 따라서, 위 비교단계(Q200)로부터 그룹에 추가된 점에 의해 그룹 영역 크기가 확장된 것으로 판단되는 경우, 그룹에 마지막으로 추가된 n'번째 점을 포함하지 않도록, 즉, 그룹이 n'개의 점보다 1개 작은 (n'-1)개의 점을 포함하도록 그룹을 생성(S241)한다.
한편, 위의 비교단계(Q200)에서
Figure 112019020160249-pat00018
Figure 112019020160249-pat00019
보다 크지 않은 경우, 즉, 그룹에 점을 추가하였으나 그룹의 영역 크기가 확장되지 않은 경우, 최초 단계(S210)에서 생성한 그룹에 점을 추가하는 단계(S230)를 반복 수행(S242)한다. 이 단계(S242)를 수행함에 따라, 그룹의 영역 크기가 확장되지 않는 범위에서 그룹에 포함되는 점의 개수를 최대한으로 갱신할 수 있고, 이에 따라, 그룹 내 객체 검색 성능을 저하시키지 않는 범위에서 1차원 시퀀스에 정렬된 점을 그룹 내에 최대로 포함시킬 수 있어, 효율적으로 1차원 시퀀스를 그룹으로 분할할 수 있게 된다.
그리고, 리저러스 방법을 이용하여 1차원 시퀀스의 점들을 그룹으로 분할하는 일 실시예를 도 4를 참고로 하여 설명하면, 먼저, 1차원 시퀀스에 정렬된 점들로부터 μM~M개의 연속된 점들을 각각 포함하는 후보 그룹들을 생성(S310)한다.
이 단계(S310)에서 생성하는 후보 그룹들은 1차원 시퀀스에 정렬된 점들을 후보 그룹을 연속적으로 생성하는 것이 아니라, 첫 번째 점에서 μM번째 점까지 연속하는 점들을 제1 후보 그룹으로 생성하고, 첫 번째 점에서 M번째 점까지 연속하는 점들을 제2 후보 그룹으로 생성하는 방법으로서, 1차원 시퀀스에 정렬된 점들을 서로 다른 개수의 점을 포함하는 여러 후보 그룹으로 생성한다.
그리고, 위 단계(S310)에서 생성된 각 후보 그룹들에 대해
Figure 112019020160249-pat00020
을 각각 산출(S320)한다. 이때, r은 후보 그룹의 영역 크기의 반지름이고, n은 후보 그룹에 포함된 점의 개수이다.
그런 다음, 위 단계(S310)에서 생성한 후보 그룹들에 대해 산출된
Figure 112019020160249-pat00021
(S320)을 비교하여
Figure 112019020160249-pat00022
값이 가장 작은 후보 그룹을 선택(S330)한다.
한 예에서, 휴리스틱 방법에서 그룹에 포함되는 두 점간 거리 d를 구하거나 리저러스 방법에서 그룹 영역의 반지름인 r을 구함에 있어서, 두 점에 해당하는 메트릭 스페이스 상의 실제 데이터셋 객체간의 거리를 구하는 방법과, k-차원 유클리디안 공간 내의 두 점간의 거리
Figure 112019020160249-pat00023
로 대체하는 방법 중 어느 하나를 이용할 수 있으며, 이를 한정하지는 않는다.
이때, 두 점간 거리를 두 점에 대한 메트릭 스페이스 상의 실제 객체간 거리를 이용하여 구하는 경우, 점간 거리를 정확하게 구할 수 있다는 측면에서 효과가 있으나, 이 방법을 리저러스 방법을 통해 그룹 영역의 반지름 산출에 적용하는 경우, 1차원 시퀀스의 점들로부터 생성된 여러 후보 그룹들에 대해 그룹 영역의 반지름을 모두 산출해야 하므로 실제 메트릭 스페이스 상의 객체간 거리를 구하는 데 많은 시간이 소요된다는 문제점이 있을 수 있다.
한편, 두 점간 거리를 k-차원의 유클리디안 스페이스의 거리로 대체하는 방법을 이용하여 구하는 경우, 두 점간 거리의 정확성은 실제 메트릭 스페이스 상의 두 점간 거리를 구하는 방법보다는 다소 부정확하지만, 실제 객체 간 거리를 계산하는 데 소요되는 시간을 절약할 수 있어 그룹 영역의 반지름을 빠르게 구할 수 있다는 장점이 있다. 본 발명의 일 실시예에는 따른 두 점간 거리 d 또는 후보 그룹 영역의 반지름 r을 산출함에 있어서, k-차원의 유클리디안 스페이스 상에서의 두 점간 거리
Figure 112019020160249-pat00024
로 대체하는 방법을 적용하는 것을 기준으로 삼도록 한다.
그리고 이때, 1차원 시퀀스로부터 그룹을 생성하는 단계(S300)가 도 3을 참조로 하는 휴리스틱 방법 또는 도 4를 참조로 하는 리저러스 방법으로부터 수행되는 경우, 도 3 또는 도 4의 방법을 통해 1차원 시퀀스 상의 점들 일부를 하나의 그룹을 생성한 이후에, 생성한 그룹에 마지막으로 포함된 점의 이후에 연속하는 1차원 시퀀스 상의 점들에 대해 도 3 또는 도 4의 방법을 반복적으로 수행하여 1차원 시퀀스에 정렬된 점들을 그룹들로 분할한다.
즉, 1차원 시퀀스를 분할하여 연속 그룹을 생성(S300)하는 단계가 도 3 또는 도 4의 방법으로 수행되는 경우, 도면에 도시하지는 않았으나, 도 3 및 도 4의 방법이 1차원 시퀀스에 정렬된 모든 점이 그룹으로 분할될 때까지 반복적으로 수행된다.
다음으로, 다시 도 1을 참조하여 각 그룹에 대해 leaf 노드를 생성(S400)하는 단계를 설명하면, 이 단계(S400)에서는, 위 단계(S300)에서 생성된 각 그룹들에 대해 리프 노드를 생성한다.
리프 노드는 대표 객체 Op를 중심으로 하고, 반지름 r(Op)를 기준으로 형성되는 원형 region이며, region의 크기가 작을수록 불필요한 노드에의 액세스를 예방하여 리프 노드 내 검색 성능이 향상된다.
이때, 하나의 그룹에 대해 하나의 리프 노드를 생성하며, 리프 노드는 1차원 시퀀스로부터 분할 생성된 각 그룹에 포함된 적어도 하나의 점에 대응되는 메트릭 스페이스 내의 객체들을 포함하는 구성으로서 도 5의 단계로부터 생성된다.
자세하게는, 1차원 시퀀스에 포함된 점으로부터 생성된 그룹의 점들은 k-차원의 유클리디안 스페이스에 매핑된 점이므로, 해당 점이 유클리디안 스페이스에 매핑되기 이전에 메트릭 스페이스 상에 존재하던 데이터셋 객체를 리프 노드로서 생성한다.
그리고 이때, 위 단계들(S100, S200)로부터, 데이터셋 객체가 메트릭 스페이스 상에서의 상대적 거리가 유클리디안 스페이스 상에서 유지되도록 1차원 시퀀스가 생성되었으므로, 위 단계(S300)에서 생성한 각 그룹의 점들, 즉, 유클리디안 스페이스 상에 정렬된 1차원 시퀀스로부터 분할된 그룹에 포함된 점들은 메트릭 스페이스 상에서 인접하는 객체일 수 있다.
도 5 및 도 6을 참조하여, 그룹에 대한 리프노드 생성(S400)을 자세히 설명하면, 먼저, 그룹에 포함된 점들에 대한 객체들로부터 대표 객체 Op를 탐색(S410)한다.
이 단계(S410)는, 그룹의 점들에 해당하는 객체들을 포함하는 리프 노드에 대해, 리프 노드의 모든 객체들을 대표하는 parent 객체 Op를 탐색함에 있어서, 메트릭 스페이스 상에서는 영역의 중심이 존재하지 않으므로 리프 노드에 포함된 모든 객체간 거리 d()를 계산하여 대표 객체 Op를 탐색한다.
그러나 이때, 메트릭 스페이스에서 객체간 거리 d()는 그룹에 포함된 점들의 수 M에 대해 O(M2)의 거리 계산 복잡도를 가지므로, 본 단계(S410)의 일 실시예에서는, 객체간 거리 계산 복잡도가 메트릭 스페이스보다 상대적으로 간단한 값을 갖는 k-차원의 스페이스 상에서 객체간 거리
Figure 112019020160249-pat00025
를 계산하고 이를 이용하여 리프 노드의 대표 객체
Figure 112019020160249-pat00026
를 산출하고, 이로부터 메트릭 스페이스 상의 대표 객체 Op를 탐색하는 방법으로 대체한다.
이와 같이, 리프 노드에 포함된 객체들 중 대표 객체 Op를 탐색함에 있어서, 객체간 거리 계산을 k-차원의 유클리디안 스페이스에서 수행하도록 대체함으로써, 메트릭 스페이스에서 객체간 거리를 계산하는 데 소요되는 시간 및 비용을 감소시킬 수 있다.
그리고, 위 단계(S410)에서 리프 노드에 포함되는 객체들로부터 대표 객체를 산출함에 있어서, 두 객체 Oi, Oj간 거리 d()의 최대값(max{d()})이 가장 작은 값으로 형성되는 객체를 대표 객체로 산출하도록 다음의 식 2로부터 수행되며, 식 2의 개념으로부터, k-차원의 유클리디안 스페이스에 매핑된 점들에 적용하여, 점들간 거리
Figure 112019020160249-pat00027
의 최대값이 가장 작게 형성되는 객체를 대표 객체
Figure 112019020160249-pat00028
로 산출하도록 수행된다.
[식 2]
Figure 112019020160249-pat00029
위의 식 2를 이용하여 리프 노드의 대표 객체를 산출(S410)함에 따라, k-차원의 유클리디안 스페이스에 형성된 region에 대한 대표 객체
Figure 112019020160249-pat00030
를 선정할 수 있고, 이에 따라, 도 6에 도시한 것처럼 동일한 객체를 포함하더라도 대표 객체 선정 오류로 region이 확장되어 이로 인해 검색 성능이 저하되는 문제점을 예방할 수 있는 효과를 기대할 수 있다.
그런 다음, 위 단계(S410)로부터 산출된 리프 노드의 메트릭 스페이스 상의 대표 객체 Op로부터 리프 노드 region의 반지름
Figure 112019020160249-pat00031
을 산출(S420)한다. 이 단계(S420)는 다음의 식 3을 통해 수행된다.
[식 3]
Figure 112019020160249-pat00032
위의 식 3에서,
Figure 112019020160249-pat00033
은 리프 노드의 각 객체들 Oi와 메트릭 스페이스 상의 리프 노드 대표 객체 Op간의 거리이고, maxi{}는 i 값들에 따른 d()값 중 가장 큰 값을 추출하는 함수이다. 위의 식 3으로부터, 메트릭 스페이스 상의 리프 노드의 객체들 중 리프 노드의 대표 객체와 거리가 가장 크게 형성되는 값을 리프 노드의 region에 대한 반지름으로 산출한다.
마지막으로, 그룹에 대한 리프 노드를 생성(S430)하는 단계는 위의 단계(S410, S420)들로부터 산출된 리프 노드의 대표 객체 및 region 반지름을 이용하여 리프 노드를 생성한다.
도 5의 일 예에 따라 수행되는 리프 노드 생성 단계(S400)는 1차원 시퀀스로부터 연속 그룹을 생성(S300)하는 단계로부터 생성된 모든 그룹들에 대해 수행된다.
다시 도 1을 참고하여 다음 단계를 계속해서 설명하면, 위 단계(S400)에서 각 그룹에 대해 생성한 리프 노드(S400)에 대해 non-리프 엔트리를 생성(S500)하는 단계를 수행한다.
논-리프 엔트리는 리프 노드의 라우팅 객체 Or을 대표하는 특징(feature value)인 f(Or)과, 객체 Or을 중심으로 한 반지름 r(Or), 해당 엔트리에 대한 서브-트리(sub-tree)인 T(Or)을 가리키는 포인터인 ptr(T(Or)), 그리고 Or과 그 parent 객체, 즉, 리프 노드의 대표 객체 Op와의 거리인 d(Or, Op)를 포함하고, 일 예에서, 도 7의 구조를 갖는다.
다음으로, non-leaf 엔트리의 개수가 M보다 큰 지를 비교하는 단계(Q100)에서는, 위 단계(S500)로부터 생성된 non-리프 엔트리의 개수를 그룹에 포함되는 객체의 최대 개수 M과 비교한다.
위 비교 단계(Q100)에서, non-리프 엔트리 개수가 그룹에 최대 포함되는 객체의 개수인 M보다 큰 경우, 예 화살표 방향을 따라 이동하여, non-리프 엔트리를 엔트리 그룹으로 분할(S610)하는 단계를 수행한다. 한 예예서, 이 단계(S610)는, 위 단계(S300)에서 이미 설명한 바 있는 풀페이지, 휴리스틱 및 리저러스 방법 중 어느 하나를 이용하여 수행될 수 있다.
이때, 위 단계(S610)가 리저러스 방법으로부터 수행되는 일 예에서, non-리프 엔트리로부터 엔트리를 분할할 때, non-리프 엔트리에 포함된 엔트리들간 거리 d를 산출하는 경우, k-차원의 유클리디안 스페이스 상의 거리
Figure 112019020160249-pat00034
로 대체할 수 있다.
좀더 자세한 일 예로서, 위 단계(S610)가 리저러스 방법으로부터 수행됨에 있어서, 엔트리간 거리뿐만 아니라, 엔트리의 region의 반지름도 고려하여 non-리프 엔트리를 엔트리로 분할한다.
이때, k-차원의 유클리디안 스페이스 상의 임의의 두 엔트리 Ei, Ej간 거리인
Figure 112019020160249-pat00035
는 다음의 식 4로부터 도출될 수 있다.
[식 4]
Figure 112019020160249-pat00036
Figure 112019020160249-pat00037
위의 식 4에서, Ei.Or은 엔트리 객체 Ei의 라우팅 객체 Or이고, Ej.Or은 엔트리 객체 Ej의 라우팅 객체 Or이며, r(Ei.Or)은 Ei.Or은 엔트리 객체 Ei의 라우팅 객체 Or의 반지름이고, r(Ej.Or)은 엔트리 객체 Ej의 라우팅 객체 Or의 반지름이다.
그리고, 이 단계(S610)에서 분할된 엔트리 그룹에 대해, non-리프 노드와 non-리프 엔트리를 생성(S620)하는 단계를 각각 수행한다.
한 예에서, 위 단계(S610, S620)들의 수행하여 non-리프 엔트리의 개수가 줄어든 이후에도 non-리프 엔트리의 개수가 M개를 초과하는 지를 판단하여 엔트리 그룹 분할 단계를 계속해서 수행하기 위해서, 위 단계들(S610, S620)을 수행한 이후 위의 비교 단계(Q100)를 재수행하며, 비교 결과에 따라 위 단계들(S610, S620)을 반복적으로 수행하거나 또는 다른 단계(S700)를 수행한다.
위 단계들(S610, S620)의 반복적 수행에 따라, 위 비교 단계(Q100)의 판단 결과, non-리프 엔트리의 개수가 M을 초과하지 않는 경우, 예로써, non-리프 엔트리가 엔트리 그룹으로 분할되어 non-리프 엔트리의 개수가 M보다 작은 경우, 아니오 화살표 방향을 따라 이동하여, 전체 엔트리를 하나의 루트 노드에 저장(S700)하는 단계를 수행한다.
이때, 전체 엔트리를 하나의 루트 노드에 저장(S700)함에 따라, 엔트리가 하나씩 생성될때마다 이를 M-트리에 적재하는, 즉, 메모리 디스크에 기록하는 것이 아니라, 생성된 전체 엔트리를 한 번에 M-트리 상에 적재하게 되므로, 디스크의 반복적인 접속으로 소요하는 시간 및 비용을 절감하고, 디스크가 소모되는 것을 감소시킬 수 있는 효과가 있다.
한 예예서, 위 단계들(S610, S620)로부터 생성된 엔트리들은 버퍼에 저장될 수 있고, 위 단계(S700)는 버퍼가 가득 찬 시점에 수행될 수 있다.
도 1 내지 도 7을 참고로 하여 설명한 본 발명의 일 실시예에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법에 따라, 유클리디안 스페이스 상에서 거리가 정의되지 않는 대용량의 데이터셋을 패스트맵을 이용하여 M-트리에 적재함에 있어서, 메트릭 스페이스 상의 데이터셋 객체를 객체간 간격을 유지하도록 k-차원의 유클리디안 스페이스 상에 매핑하여 1차원 시퀀스를 생성하고, 생성된 1차원 시퀀스를 그룹으로 분할하여 leaf 노드를 생성하므로, k-차원의 유클리디안 스페이스 상에서 객체간 거리
Figure 112019020160249-pat00038
로 대체하므로 객체간 거리 계산 복잡도가 O(N)로 형성된다. 이는, 본 발명의 일 실시예를 적용한 경우, 대량의 데이터를 BulkLoading하는 기존의 FastLoad 방법에서의 객체간 거리 계산 복잡도가
Figure 112019020160249-pat00039
인 것에 비해, 객체간 거리 계산 복잡도가 현저히 낮으므로 대량의 데이터셋을 M-트리에 적재하는 데 소요되는 처리시간 및 처리비용을 감소시키는 효과가 있다.
또한, 본 실시예의 방법을 적용하여 대용량의 데이터셋을 M-트리에 적재하는 경우, 데이터셋을 순차적으로 그룹화하여 이를 M-트리에 적재하므로, 디스크에 랜덤 액세스로 데이터를 기록하는 경우보다 효율적으로 데이터를 기록할 수 있다.
그리고 본 실시예에 따른 단계들 중, 첫 번째 단계(S100)와 두 번째 단계(S200)는 각 객체들에 대해 독립적으로 수행될 수 있어, 다중코어를 사용하여 위 단계들(S100, S200)을 동시 쓰레드로 처리하여, 대용량의 데이터를 M-트리에 적재하는 시간을 효과적으로 단축할 수 있다.
또한, 위 단계들(S300, S400, S500)에서도 1차원 시퀀스로부터 분할된 그룹을 복수 개의 쓰레드에 각각 할당하여 병렬 처리할 수 있어, 대용량의 데이터를 M-트리에 적재하는 시간을 효과적으로 단축할 수 있다.
본 발명의 일 실시예를 이용하여 대용량의 데이터셋을 M-트리에 적재하는 경우의 데이터 크기에 따른 실행시간, 계산 거리의 수, 디스크 액세스를, 종래기술을 이용하였을 경우에서의 데이터 크기에 따른 실행시간, 계산 거리의 수, 디스크 액세스와 비교하면, 도 8의 성능 그래프에 도시한 것처럼, 본 발명의 실시예에 따른 FastLoad를 수행하는 경우(FastLoad-F, FastLoad-H, FastLoad-R)에서 데이터 크기가 4K에서 1M로 증가함에 따른 데이터 업로드 실행 시간(도 8의 (a)), 거리 계산의 수(도 8의 (b)), 디스크 액세스 수(도 8의 (c))에서 모두 종래의 단순 삽입 및 단순 BulkLoad 대비 우수함을 시뮬레이션을 통해 확인할 수 있다.
이때, 도 8의 (a) 내지 (c)에 도시한 FastLoad-F는 풀페이지 방법을 이용하는 경우이고, FastLoad-H는 휴리스틱 방법을 이용하는 경우이며, FastLoad-R은 리저러스 방법을 이용하는 경우에 관한 그래프이며, 도 8의 그래프는 2차원의 유클리디안 스페이스에서 4KB의 크기를 갖는 디스크 페이지에 대해 시뮬레이션 수행되었다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (19)

  1. 데이터 객체를 M-트리에 적재 처리하는 처리장치에서 수행되고,
    메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계;
    k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계;
    상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계; 그리고,
    상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계;
    를 포함하여 상기 데이터셋을 M-트리에 적재하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  2. 제1항에 있어서,
    상기 메트릭 스페이스 상의 데이터셋은 데이터 객체간 유사성이 유클리디안 공간에서 두 점 간의 Lp 거리로 정의되지 않는 데이터셋인 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  3. 제2항에 있어서,
    상기 메트릭 스페이스 상의 데이터셋은 비정형 멀티미디어 데이터 또는 도로 네트워크의 POI(point of interest)인 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  4. 제1항에 있어서,
    상기 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계는, 상기 메트릭 스페이스 상의 데이터의 객체간 간격이 상기 k-차원의 유클리디안 스페이스 상에서 유지되도록 매핑되도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  5. 제4항에 있어서,
    상기 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계는 하기의 식 1로부터 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
    [식 1]
    Figure 112019020160249-pat00040

    (dij는 메트릭 스페이스 상의 두 객체 Oi, Oj간의 거리이고,
    Figure 112019020160249-pat00041
    는 유클리디안 스페이스로 매핑된 두 객체
    Figure 112019020160249-pat00042
    간의 거리이고, i 및 j는 1부터 N까지의 자연수임.)
  6. 제1항에 있어서,
    상기 메트릭 스페이스 상의 데이터셋을 k-차원의 유클리디안 스페이스 상의 한 점으로 매핑하는 단계는 상기 데이터셋을 구성하는 복수 개의 객체들을 상기 유클리디안 스페이스 상에 BulkLoading으로 매핑하도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  7. 제1항에 있어서,
    상기 k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계는 공간채움곡선을 이용하여 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  8. 제7항에 있어서,
    상기 k-차원의 유클리디안 스페이스 상의 점들을 1차원 시퀀스로 정렬하는 단계는 공간채움곡선으로 Z curve(Morton curve), Hilbert curve, Gray-code curve 중 어느 하나를 이용하도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  9. 제1항에 있어서,
    상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계는, 상기 1차원 시퀀스에 정렬된 연속하는 점들을 순차적으로 그룹으로 분할하되,
    모든 그룹이 최대 객체를 포함하도록 균일하게 그룹화하는 풀페이지 방법을 이용하여 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  10. 제1항에 있어서,
    상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계는, 상기 1차원 시퀀스에 정렬된 연속하는 점들을 순차적으로 그룹으로 분할하되,
    그룹에 포함되는 점간 거리와 그룹에 포함된 점의 개수를 비교하여 그룹에 포함시킬 점의 개수를 산출하고 산출결과를 이용하여 그룹의 영역 크기가 확장되지 않는 범위로 그룹을 구성하는 휴리스틱 방법을 이용하여 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  11. 제10항에 있어서,
    상기 휴리스틱 방법에서 상기 그룹에 포함되는 점간 거리는 실제 메트릭 스페이스 상의 점간 거리로 산출되거나, k-차원 유클리디안 공간 내의 두 점간의 거리로 대체하여 산출되도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  12. 제1항에 있어서,
    상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계는, 상기 1차원 시퀀스에 정렬된 연속하는 점들을 순차적으로 그룹으로 분할하되,
    후보 그룹들을 생성하고, 각 후보 그룹에 포함된 영역 크기의 반지름과 후보 그룹에 포함된 점의 개수를 산출하고 산출결과를 이용하여 그룹을 구성하는 리저러스 방법을 이용하여 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  13. 제12항에 있어서,
    상기 리저러스 방법에서 상기 후보 그룹 영역의 반지름은 실제 메트릭 스페이스 상의 반지름으로 산출되거나, k-차원 유클리디안 공간 내의 두 점간의 거리로 대체하여 산출되도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  14. 제1항에 있어서,
    상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계는 상기 1차원 시퀀스의 점들을 연속하는 그룹으로 분할하는 단계에서 분할된 그룹에 포함된 점들에 대응되는 메트릭 스페이스 상의 객체를 포함하는 리프 노드를 생성하도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  15. 제14항에 있어서,
    상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계는, k-차원의 유클리디안 스페이스 상의 점들을 이용하여 리프 노드의 대표 객체를 산출하도록 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  16. 제1항에 있어서,
    상기 연속하는 그룹에 대해 리프 노드를 생성하는 단계 이후에,
    각 그룹에 대해 생성된 리프 노드에 대해 non-리프 엔트리를 생성하는 단계;를 수행하고,
    상기 non-리프 엔트리의 개수에 따라, 상기 non-리프 엔트리를 엔트리 그룹으로 분할하는 단계;와 전체 엔트리를 하나의 루트 노드에 저장하는 단계; 중 어느 한 단계를 더 수행하는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  17. 제16항에 있어서,
    상기 non-리프 엔트리를 엔트리 그룹으로 분할하는 단계는 풀페이지 방법, 휴리스틱 방법 또는 리저러스 방법으로 수행되는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  18. 제16항에 있어서,
    상기 non-리프 엔트리를 엔트리 그룹으로 분할하는 단계에서 생성된 엔트리는 버퍼에 저장되도록 수행되고,
    상기 버퍼가 가득 차면 상기 전체 엔트리를 하나의 루트 노드에 저장하는 단계를 수행하여 상기 엔트리를 메모리 디스크에 기록하는 것을 특징으로 하는 패스트맵을 이용한 데이터셋의 M-트리 적재방법.
  19. 제1항 내지 제18항 중 어느 한 항에 따른 패스트맵을 이용한 데이터셋의 M-트리 적재방법을 컴퓨터 상에서 실행할 수 있는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.

KR1020190022540A 2019-02-26 2019-02-26 패스트맵을 이용한 데이터셋의 m-트리 적재방법 KR102006283B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190022540A KR102006283B1 (ko) 2019-02-26 2019-02-26 패스트맵을 이용한 데이터셋의 m-트리 적재방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190022540A KR102006283B1 (ko) 2019-02-26 2019-02-26 패스트맵을 이용한 데이터셋의 m-트리 적재방법

Publications (1)

Publication Number Publication Date
KR102006283B1 true KR102006283B1 (ko) 2019-10-01

Family

ID=68207376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190022540A KR102006283B1 (ko) 2019-02-26 2019-02-26 패스트맵을 이용한 데이터셋의 m-트리 적재방법

Country Status (1)

Country Link
KR (1) KR102006283B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177410A (zh) * 2019-12-27 2020-05-19 浙江理工大学 基于进化R-tree的知识图谱存储和相似性检索方法
CN113343043A (zh) * 2021-06-29 2021-09-03 北京奇艺世纪科技有限公司 索引的构建方法、检索方法及相应的装置、终端、介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090075847A (ko) * 2006-10-05 2009-07-09 내셔널 아이씨티 오스트레일리아 리미티드 분산된 멀티유저 온라인 환경
KR20120096894A (ko) 2011-02-23 2012-08-31 하만 베커 오토모티브 시스템즈 게엠베하 데이터베이스 검색방법, 네비게이션 장치 및 인덱스 구조 생성 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090075847A (ko) * 2006-10-05 2009-07-09 내셔널 아이씨티 오스트레일리아 리미티드 분산된 멀티유저 온라인 환경
KR20120096894A (ko) 2011-02-23 2012-08-31 하만 베커 오토모티브 시스템즈 게엠베하 데이터베이스 검색방법, 네비게이션 장치 및 인덱스 구조 생성 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177410A (zh) * 2019-12-27 2020-05-19 浙江理工大学 基于进化R-tree的知识图谱存储和相似性检索方法
CN113343043A (zh) * 2021-06-29 2021-09-03 北京奇艺世纪科技有限公司 索引的构建方法、检索方法及相应的装置、终端、介质
CN113343043B (zh) * 2021-06-29 2023-06-23 北京奇艺世纪科技有限公司 索引的构建方法、检索方法及相应的装置、终端、介质

Similar Documents

Publication Publication Date Title
US9396512B2 (en) Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
Dohnal et al. D-index: Distance searching index for metric data sets
US7743013B2 (en) Data partitioning via bucketing bloom filters
KR101467589B1 (ko) 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체
US20150186471A1 (en) System and method for approximate searching very large data
CN105975587A (zh) 一种高性能的内存数据库索引组织与访问方法
CN103914483B (zh) 文件存储方法、装置及文件读取方法、装置
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
US11163831B2 (en) Organizing hierarchical data for improved data locality
CN112181991A (zh) 基于快速构建kd树的地球模拟***网格重映射方法
CN112035586A (zh) 基于可扩展学习索引的空间范围查询方法
Keivani et al. Improved maximum inner product search with better theoretical guarantees
Cho et al. A basis of spatial big data analysis with map-matching system
CN108334532B (zh) 一种基于Spark的Eclat并行化方法、***及装置
CN117608476A (zh) 矢量数据分块存储方法、装置、电子设备及介质
CN107077481B (zh) 信息处理装置、信息处理方法和计算机可读存储介质
CN110866088B (zh) 一种语料库之间的快速全文检索方法及***
KR101242860B1 (ko) 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치
Su et al. An auto-adaptive convex map generating path-finding algorithm: Genetic Convex A
JP2013127750A (ja) パーティション分割装置及び方法及びプログラム
KR20220099745A (ko) 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치
Yang et al. Workload-based ordering of multi-dimensional data
Loh Efficient Flexible M-Tree Bulk Loading Using FastMap and Space-Filling Curves
Waters et al. Isosurface extraction using fixed-sized buckets
KR101153966B1 (ko) 고차원 데이터의 색인/검색 시스템 및 그 방법