510 likes | 1.32k Views
10. 다차원 공간 파일. k-d(k-dimensional) tree / k-d-B tree / 격자 화일 / 사분 tree / R-tree, R * -tree, R + -tree. 다차원 데이터. 다차원 데이터 (multidimensional data) CAD (computer aided design), 지리정보시스템 (geographical information system) 에서 선 (line), 면 (plane), 위치 (location) 와 같은 다차원 정보 를 표현하는 데이터
E N D
10. 다차원 공간 파일 k-d(k-dimensional) tree / k-d-B tree / 격자 화일/ 사분 tree/ R-tree, R*-tree, R+-tree
다차원 데이터 • 다차원 데이터(multidimensional data) • CAD (computer aided design), 지리정보시스템(geographical information system)에서 선(line), 면(plane), 위치(location) 와 같은 다차원 정보를 표현하는 데이터 • 다차원 데이터를 나타내는 (x, y) 또는 (x, y, z)는 차원당 하나의 값으로 표현됨 • 다차원 데이터는 단일 키 파일 구조로 처리 불가 • 데이터 접근은 다차원 인덱스(multidimensional index)구조 필요
▶ 다차원 공간 파일이란? • 여러 개의 필드(차원)를 동시에 키로 사용하는 파일 • 다차원 공간 파일을 트리로 표현 • k-d 트리(´75) • k-d-B 트리(´81) • 격자 파일(Grid File) (´84) • 사분 트리(Quadtree) (´84) • R-트리(´84), R+-트리(´87), R*-트리(´90)
▶ 다차원 인덱스(multidimensional index) 기법 • PAM (Point Access Method) • 다차원 점 데이터 (multidimensional point data)를 공간에서 저장, 검색하는 점 접근 방법 • k-d 트리, k-d-B 트리, 격자 파일(grid file) • SAM (Spatial Access Method) • 선(line), 면(plane), 다각형(polygon), 다면체(polyhedron) 같은 다차원 공간 데이터(multidimensional spatial data)를 저장, 검색할 수 있는 공간 접근 방법 • R-트리, R+-트리,R*-트리
k-d 트리 • k-d(k-dimensional)트리 • k 차원의 점 데이터를 인덱스할 수 있는 기본적 구조 • data structure for associative search • 이원 탐색 트리를 다차원 공간 (multidimensional space)으로 확장한 것 • 다차원 이원 탐색 트리 (multidimensional binary search tree) • 기본 구조와 알고리즘은 이원 탐색 트리와 유사 • 분기 조건은 < 이 아니라 ≤ 비교에 의해 판단 처리함 • 트리의 레벨을 내려가면서 차원의 필드 값을 차례로 번갈아 비교 • 예) 3차원의 데이터(x,y,z)의 경우: x y z x y z ,,, • 특징 • 메인 메모리상에서 동작하는 인덱스 구조 • 소규모의 점 데이터(multidimensional point data) 표현에 적합(PAM) • 균형 트리가 아님
▶ k-d 트리에서의 데이터 삽입 • 다음과 같은 2차원 공간의 점(x,y) 데이터를 a, b, c, …j의 순서로 k-d 트리에 삽입하는 경우
(10,10) a a (5,4) (0,0) ▶ k-d 트리에서의 데이터 삽입 • 점 a(5,4)의 삽입 • 루트로 저장 :x 점 a가 삽입된 뒤의 2-d 트리
(10,10) a (5,4) b (2,7) a b (0,0) ▶ k-d 트리에서의 데이터 삽입 • 점 b(2,7)의 삽입 • 루트의 x 값과 비교, 작으므로 왼쪽 자식 노드에 삽입 :x :y
(10,10) a (5,4) b (2,7) c (9,5) a b c (0,0) ▶ k-d 트리에서의 데이터 삽입 • 점 c(9,5)의 삽입 • 루트의 x 값과 비교, 크므로 오른쪽 자식 노드에 삽입 :x :y
(10,10) a (5,4) b (2,7) c (9,5) a d (3,1) d b c (0, 0) ▶ k-d 트리에서의 데이터 삽입 • 점 d(3,1)의 삽입 • 루트의 x 값과 비교, 작으므로 왼쪽 자식 노드로 분기 • 점 b의 y값과 비교, 작으므로 왼쪽 자식 노드에 삽입 :x :y :x
(10,10) j f a e d c i g h b (0,0) ▶ k-d 트리에서의 데이터 삽입 • 삽입이 완료된 k-d 트리 a (5,4) :x Y축 :y b (2,7) c (9,5) :x d (3,1) j (4,8) e (7,2) f (8,7) i (8,2) :y g (1,4) h (4,3) X축
(10,10) j f a e d c i g h b (0,0) ▶ k-d 트리에서의 데이터 검색 • 위치 (4,8)의 검색 • 루트 a(5,4)에서 x값을 비교: 4 ≤ 5이므로 왼쪽 서브 트리로 분기 • 점 b에서 y값을 비교: 7 < 8이므로 오른쪽 서브 트리로 분기 • 점 j를 발견(검색 완료) a (5,4) :x :y b (2,7) c (9,5) :x d (3,1) j (4,8) e (7,2) f (8,7) g (1,4) i (8,2) :y h (4,3)
(10,10) g (1,4) :x :y d (3,1) j :x b (2,7) f b e (7,2) :y c :x a i (8,2) h (4,3) g h :y e i j (4,8) a (5,4) d :x f (8,7) :y c (9,5) (0,0) ▶ k-d 트리의 단점 • 균형 트리가 아니므로 데이터의 입력 순서나 분포에 따라 트리의 높이가 극단적으로 높아지면 검색 성능이 저하 • 예) g, d, b, e, h, a, f, c, i, j 의 순서로 입력된 예
k-d-B(k-dimensional B-tree) 트리 • k-d 트리와B-트리의 특성을 결합 • 디스크 기반 다차원 점 데이터를 검색, 저장하기 위한 구조 • 디스크 페이지 크기의 노드들로 구성된 다원 탐색 트리 (multiway search tree) • 균형 트리 • 루트에서 리프노드까지의 탐색 경로 길이가 모두 동일
필드 2 ( 몸무게 ) 70 60 필드 1( 키 ) 165 180 ▶k-d-B 트리 • 2개의 필드(차원)로 표현된 레코드의 예 • 키와 몸무게는 탐색을 위한 도메인 영역은 ([165, 180], [60, 70])
▶k-d-B 트리의 구조 • k-d-B 트리는루트 페이지와 자식 페이지로 구성 • 페이지는 영역 페이지와 점 페이지로 구분 • 영역 페이지(region page): <영역, 페이지-id> 쌍의 엔트리들을 포함하는 노드 • 점 페이지(point page) : <점, 주소> 쌍의 엔트리들을 포함하는 단말 노드. 주소는 점 데이터 레코드가 저장되어있는 주소. • 페이지 크기는 디스크 페이지 크기 • 엔트리 삽입으로 오버플로가 일어나면 분할 연산이 필요 • 엔트리삭제로 언더플로가 일어나면 합병 연산이 필요
--- 페이지에 포함된 영역(흰색) 페이지에 포함되지 않은 영역 (회색) --- --- 점 ▶ 2-d-B 트리의 예 root-id 영역 페이지 점 페이지
▶ 2-d-B 트리의 질의 영역 검색 예 root-id 2 1 3 질의 영역 1.1 1.2 3.2 3.1 1.3 1.4 3.3
격자 파일(Grid file) • 격자 파일 • 공간상의 점 데이터를 저장하는 다차원 인덱스 구조(multidimensional index structure) • 전체 공간을 격자(grid)로 분할하여 격자 단위로 데이터를 저장 • 격자의 크기는 데이터의 삽입에 따라 분할되어 작은 격자로 변환 • 특징 • 디스크 기반 • 대용량의 다차원데이터를 처리 • 해싱 기반 • 일반적으로 두 번의 디스크 접근으로 데이터 검색
▶ 격자 파일의 구성 • 격자 블록과 데이터 페이지 • 기본적으로 하나의 격자 블록당 하나의 데이터 페이지 • 두 개 이상의 격자 블록이 하나의 데이터 페이지를 공유 가능 • x 축과 y 축으로 표현되는 2차원 격자 파일 예 • x 축은 (0, 5, 10, 15, 20)의 선형 눈금자 • y 축은 (0, 5, 10) 의 선형 눈금자 • 격자 배열은 각 축의 선형 눈금자에 따라 구성 • 각 데이터 페이지는 최대 3개의 점 데이터를 저장
▶ 격자 파일의 구성 예 데이터페이지 공유 선형 눈금자 격자 배열 데이터 페이지
▶ 격자 파일의 레코드 삽입 예 • 예제 데이터
▶ 격자 파일의 레코드 삽입 예 • 점 a(2,4), b(4,6), c(16,2)를 삽입 • 하나의 격자 블록을 통해 페이지 P1에 저장되고 P1은 만원 SY SX
▶ 격자 파일의 레코드 삽입 예 • 점 d(7,2)를 삽입 • 페이지 P1이 오버플로가 되어 격자를 분할 • 각 축(axis)을 순환적으로 분할 • x=10으로 격자 블록을 분할하고 페이지 P2를 할당 • 분할된 두 페이지 P1과 P2를 트윈(twin)이라 함 • x>10인 레코드들은 P2로 이동 SY SX
▶ 격자 파일의 레코드 삽입 예 • 점 e(18,8), f(9,4)를 삽입 • f를 삽입 시 페이지 P1에 오버플로가 발생 • y=5로 격자를 분할하고 페이지 P3을 할당 • P1에 있는 y<5인 레코드들을 P3으로 이동 • P2는 원하지 않게 분할된 두 격자가 공용 SY SX
▶ 격자 파일의 레코드 삽입 예 • g(8,8), h(13,9), i(6,4)를 삽입 • i를 삽입 시 P3에 오버플로가 발생 • x=5로 격자를 분할하여 P4를 할당하고 레코드를 분할 SY SX
▶ 격자 파일의 레코드 삭제예 • 점 i(6,4)의 삭제 • 트윈 P3과 P4는 하나의 페이지 P3으로 합병 가능 • P3의 트윈 P1은 합병된 격자 블록만 사용 • x=5에 의한 분할을 제거 • 격자 블록 합병하고 선형 눈금자를 수정 SY SX
사분 트리 (Quadtree) • 공간 분해 방법 • 이미지 공간 계층(image space hierarchy) : 각 레벨마다 공간을 일정 크기의 동일한 소공간으로 분해 • 객체 공간 계층(object space hierarchy) : 입력 데이터 값에 따라 가변적 크기의 공간으로 분해 • 가장 많이 사용되는 사분 트리 • 영역 사분 트리(region quadtree):2차원의 영역 표현 • 점 사분 트리(point quadtree): 다차원 점 표현
▶ 영역 사분 트리(region quadtree) (1) • 2차원 영역 데이터 표현에 많이 사용 • 이미지를 표현하는 2진수의 배열을 동일한 크기의 사분면(quadrant)으로 연속 분할하는 방법 • 영역 사분트리 예 • 표현하려는 이미지 또는 영역(a) • 영역을 23 x 23크기의 이진 배열(b)로 표현 • 1은 영역에 포함된 그림 원소(picture element), 즉 화소(pixel)를 표현하고 0은 영역에 포함되지 않은 화소를 표현 • 이진 배열을 블록으로 표현(c) • 블록들을 사분 트리로 표현(d) – NW, NE, SW, SE 순서 트리
▶ 영역 사분 트리 (2) 영역 사분트리 예 중앙 A(root)를 기준으로 북서, 북동, 남서, 남동 방향에 해당하는 영역을 트리 레벨에 따라 세분화 함
▶ 점 사분 트리 (point quadtree) • 점 데이터를 표현 • 공간을 동일하지 않은 4개의 소공간(subspace)으로 분할 • 2차원 점 데이터에 대한 인덱스로 활용 • 단말 노드는버켓의 포인터를 저장하고 인덱스 역할 • 트리에는 비교하는 점 데이터만 저장하고 전체 레코드는 인덱스에 의해 참조되는 버킷에 저장 • 2차원 점 데이터 레코드는 • 데이터 필드, x 좌표, y 좌표, 4개(NW, NE, SW, SE )의 포인타 필드를 갖는 노드로 표현 • 다차원 데이터를 위한 이원 탐색 트리의 일반화
▶ 점 사분 트리의 표현 • 단말 노드가버켓의 포인터를 가질 때 인덱스 역할 • (예) 버켓1 : 0≤x<5와 45≤y<100의 값을 갖는 점 데이터 레코드들
R-트리 • R-트리 • B-트리를 다차원으로 확장시킨 완전 균형 트리 • 점, 선, 면, 도형 등 다양한 다차원 공간 데이터 객체를 저장하고 검색하기 위한 다차원 인덱스 구조 • SAM: spatial access method • R means rectangle? • 모양이 불규칙한 공간 데이터 객체를 저장하기 위하여 객체의 최소 경계 사각형 MBR (Minimum Bounding Rectangle)을 구하여 이 MBR을 인덱스 엔트리로 저장 • MBR대신 MBB (Minimum Bounding Box)로도표현
▶ MBR 예 불규칙 데이터 (x2max, y2max) (x1max, y1max) (x2min, y2min) (x1min, y1min) MBR 예
▶ 데이터 예 y r1 r13 r12 r2 r10 r14 r11 r6 r4 r9 r5 r7 r3 r8 x 2차원 공간 데이터 객체
▶ 시각적 MBR 예 R1 r1 R3 R2 r13 R5 r12 r2 r10 r14 r11 r6 r4 R4 R6 r9 r5 r7 r3 R7 r8 M=3, m=2
r1 r2 r4 r3 R5 r5 R3 R1 R4 r10 r6 r9 r13 r7 R6 R2 r8 r14 R7 r11 r12 ▶ R-트리 구성 예 R-트리 표현 a b c f g h d e
▶ 영역 검색 예 1 영역 검색 질의: Q1 영역과 중첩되는 모든 객체를 검색하라 영역 R1에만 포함 R1 r1 R3 Q1 R2 r13 R5 r12 r2 r10 r14 r11 r6 r4 R4 R6 r9 r5 r7 r3 R7 r8
r1 r2 r4 r3 R5 r5 R3 R1 R4 r10 r6 r9 r13 r7 R6 R2 r8 r14 R7 r11 r12 ▶ 영역 검색 예 1 a b c f g h d e r13을 최종 결과로 출력
▶ 영역 검색 예 2 영역 검색 질의: Q2 영역과 중첩되는 객체를 검색하라 영역 R1과 R2에 중첩 R1 r1 R3 R2 r13 R5 r12 r2 Q2 r10 r14 r11 r6 r4 R4 R6 r9 r5 r7 r3 R7 r8
r1 r2 r4 r3 R5 r5 R3 R1 R4 r10 r6 r9 r13 r7 R6 R2 r8 r14 R7 r11 r12 ▶ 영역 검색 예 2 영역 검색 질의: Q2 영역과 중첩되는 객체를 검색하라 영역 R1과 R2에 중첩 a b c d f g h e r4만 최종결과로 출력
▶ R-트리에서의 삽입 예 r15를 삽입하는 경우 R1 r1 R3 R2 r13 R5 r12 r2 r15 r10 r14 r11 r6 r4 R4 R6 r9 r5 r7 r3 R7 r8
R1 R3 r5 R5 r2 r1 r4 r3 r13 R4 R6 R2 r6 r7 r9 r10 r8 r12 r14 R7 r11 ▶ 삽입 전 R-트리 a b c f g d e h
▶ 객체 r15 삽입 결과 R1 r1 R3 R10 r13 R11 R5 r12 r2 r15 r10 r14 r11 r6 r4 R4 R6 r9 r5 r7 R9 r3 R8 r8
r4 r3 r11 r5 r2 r1 R8 R1 R5 R3 r10 R4 R9 r6 r13 r15 R10 r7 r9 R6 R11 r8 r14 r12 ▶ 객체 r15 삽입 결과 a j b c d e g h i f
R-트리의 변형 트리 • 성능 향상이나 다양한 응용 지원을위한 여러 가지 R-트리의 변형 트리들이 있음 • 대표적 R-트리 변형 트리 • R+-트리 • R-트리에서노드 간의 중첩 영역을 없앰 • k-d-B 트리의 특징을 접목 • R*-트리 • R-트리의 삽입, 삭제 알고리즘을 개선 • R-트리의 특성 유지와 비교적 간단 구현으로 널리 활용