1 / 84

File Structures 강의

File Structures 강의. File Structures. 강의 내용 직접 화일 (Ch. 8 in “ 파일 구조” ) 다중키 화일 (Ch. 9 in “ 파일 구조” ) 다차원 공간 화일 (Ch. 10 in “ 파일 구조” ) 텍스트를 위한 화일 (Ch. 11 in “ 파일 구조” ) 데이타베이스 (Ch.12 in “ 파일구조” ). 다차원 공간 파일 ( 다차원 색인 ) (1/2). Multidimensional Index Structures.

ciel
Download Presentation

File Structures 강의

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. File Structures 강의 File Structures • 강의 내용 • 직접 화일 (Ch. 8 in “파일 구조”) • 다중키 화일 (Ch. 9 in “파일 구조”) • 다차원 공간 화일 (Ch. 10 in “파일 구조”) • 텍스트를 위한 화일 (Ch. 11 in “파일 구조”) • 데이타베이스 (Ch.12 in “파일구조”)

  2. 다차원 공간 파일 (다차원 색인) (1/2) Multidimensional Index Structures • 여러 개의 필드(애트리뷰트)를 동시에 키로 사용하는 색인 구조(파일) • k-d 트리(’75) • k-d-B 트리(’81) • 격자 파일(Grid File) (’84) • 사분 트리(Quadtree) (’84), MLGF (’85) • R-트리(’84), R+-트리(’87), R*-트리(’90) • 응용 분야: 단일 키 파일 구조로 처리가 어려운 위치 정보와 같은 다차원 데이터의 저장 및 검색에 활용 • (x, y) 또는 (x, y, z)는 차원당 하나의 값 • CAD (Computer Aided Design) • GIS (Geographical Information System) • (M)OLAP, Data Mining 등의 데이터베이스 응용 분야

  3. 다차원 공간 파일 (다차원 색인) (2/2) Multidimensional Index Structures • PAM (Point Access Method) • 다차원의 점(point) 데이터를 저장 및 검색 • 예) k-d 트리, k-d-B 트리, Grid File, MLGF • SAM (Spatial Access Method) • 선, 면 등과 같은 크기를 갖는 다차원 데이터를 저장 및 검색 • 예) R-tree, R+-트리, R*-트리

  4. k-d 트리 Multidimensional Index Structures • k-d (k-dimensional) 트리 • Binary Search Tree를 다차원 공간으로 Straightforward하게 확장한 것 • 기본 구조와 알고리즘은 Binary Search Tree와 유사 • 트리의 레벨에 따라 차원을 번갈아 가며 비교 • 예) 2차원의 경우: x  y  x  y  ,,, • 특징 • 주기억 장치 상에서 동작 (In-memory structure) • 소규모의 다차원 점 데이터를 인덱싱할 때 적합(PAM) • 균형 트리가 아님

  5. j f b c g a h e i d k-d 트리의 삽입 예 (1/6) Multidimensional Index Structures 다음과 같은 10개의 2차원 점을 a부터 j까지 순서대로 k-d트리에 삽입하는 경우 (10,10) (0,0)

  6. (10,10) a (0,0) k-d 트리의 삽입 예 (2/6) Multidimensional Index Structures • 점 a 삽입 • 루트에 저장 a (5,4) :x

  7. (10,10) a (5,4) b (2,7) a b (0,0) k-d 트리의 삽입 예 (3/6) Multidimensional Index Structures • 점 b 삽입 • 루트와 x 축의 값을 비교, b의 x 값이 a의 x 값보다 작으므로 왼쪽 자식 노드에 삽입 :x :y

  8. (10,10) a (5,4) b (2,7) c (9,5) a b c (0,0) k-d 트리의 삽입 예 (4/6) Multidimensional Index Structures • 점 c 삽입 • 루트와 x 축의 값을 비교, c의 x 값이 a의 x 값보다 작으므로 오른쪽 자식 노드에 삽입 :x :y

  9. (10,10) a (5,4) b (2,7) c (9,5) a d (3,1) d b c (0, 0) k-d 트리의 삽입 예 (5/6) Multidimensional Index Structures • 점 d 삽입 • 루트와 x 축의 값을 비교, d의 x 값이 a의 x 값보다 작으므로 왼쪽 자식 노드로 이동 • d의 y 값이 b의 y 값보다 작으므로 왼쪽 자식 노드에 삽입 :x :y :x

  10. (10,10) j f a e d c i g h b (0,0) k-d 트리의 삽입 예 (6/6) Multidimensional Index Structures 삽입에 의한 최종 k-d 트리 a (5,4) :x :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)

  11. (10,10) j f a e d i g h c b (0,0) k-d 트리의 검색 예 Multidimensional Index Structures • (4, 8)을 검색 • a(루트)와 x값 비교: 4 < 5이므로 왼쪽 서브 트리로 이동(traverse) • 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) h (4,3) g (1,4) i (8,2) :y

  12. (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 트리의 단점 Multidimensional Index Structures • 균형 트리가 아님  데이터 입력 순서 및 분포에 따라 Skew 될 수 있음 • Skew가 발생할 경우, 검색 성능이 크게 떨어짐 • 예)  g, d, b, e, h, a, f, c, i, j 의 순서로 입력된 예

  13. k-d-B 트리 Multidimensional Index Structures • B-트리와 k-d 트리의 결합 • 디스크 기반: 디스크 페이지 크기의 노드들로 구성  B-트리 특성 • 다차원 점 데이터 저장, 검색  k-d 트리 특성 • 완전 균형 트리  B-트리 특성

  14. k-d-B 트리의 구조 Multidimensional Index Structures • 다중키 레코드 검색을 위한 인덱스 레코드: (key0, key1, …, keyK-1, 주소) • 점: 도메인0×도메인1×…도메인K-1의 한 원소 • 영역 • 다차원 공간에서 크기를 가지는 객체 • 같은 성질을 가지고 있는 점들의 집합 (mini≤keyi≤maxi , 0≤i≤ k-1) • 노드는 루트 페이지와 페이지의 집합 • 영역 페이지(region page) : <영역, 페이지 ID>, 내부 노드(internal node) • 점 페이지(point page) : <점, (레코드) 주소>, 단말 노드(leaf node)

  15. k-d-B 트리의 특성 Multidimensional Index Structures 각 페이지를 노드로 갖고, 페이지 식별자(ID)를 노드 포인터로 갖는 다원 탐색 트리 모든 단말 페이지까지의 경로 길이는 동일 모든 영역은 분리/분할(disjoint)  서로 겹치는 영역이 없음을 의미함 루트 페이지가 영역 페이지이면, 이들 영역의 합은 전체 영역을 나타냄

  16. --- 페이지에 포함된 영역(흰색) --- 페이지에 포함되지 않은영역 (회색) --- 점 2-d-B 트리의 예 Multidimensional Index Structures

  17. k-d-B 트리의 연산 (검색) Multidimensional Index Structures • 영역은 각 차원들의 간격(interval)의 Cartesian Product (예: Ix × Iy) • 부분 범위 질의(partial range query): 모든 차원이 범위로 제시된 질의 (범위 질의) • 부분 일치 질의(partial match query): 일부는 범위로 일부는 점으로 제시된 질의 • 완전 일치 질의(exact match query): 모든 차원이 점으로 제시된 질의 (점 질의) • 질의 처리 알고리즘 ① Root-ID가 Null이면 종료, 그렇지 않으면 변수 page는 루트 페이지를 가리키게 한다. ② 변수 page가 점 페이지를 가리키면 질의 영역에 속하는 <점, 주소>에 대해 주소에 있는 레코드를 검색하여 출력한다. ③ 영역 페이지인 경우는 <영역, 자식>에 대해 변수 page가 자식 ID에 의해 참조되는 페이지를 가리키게 하고 ②에서 반복한다.

  18. k-d-B 트리의 질의 영역 검색의 예 Multidimensional Index Structures root-id 2 1 3 질의 영역 1.1 1.2 3.2 3.1 1.3 1.4 3.3

  19. 분할 원소 분할 전 분할 후 왼쪽 페이지 오른쪽 페이지 k-d-B 트리의 연산 (삽입) (1/3) Multidimensional Index Structures 노드에서 오버플로우가 발생할 경우, (적절한) 분할 축을 선택하여 두 개의 노드로 분할 점 페이지의 분할 원래 페이지 내의 모든 <점, 주소>쌍을 분할 축의 X'의 값에 따라 좌우 페이지로 이동한 후 원래 페이지는 삭제

  20. 분할 원소 * * 분할 전 * 표시된 부분이 분할된다 분할 후 k-d-B 트리의 연산 (삽입) (2/3) Multidimensional Index Structures 영역 페이지의 분할

  21. k-d-B 트리의 연산 (삽입) (3/3) Multidimensional Index Structures <점, 주소>쌍을 삽입하는 알고리즘 ① Root-ID가 Null이면, <점, 주소>를 포함하는 점 페이지 생성 ② 점이 첨가될 페이지 탐색(완전 일치 질의) ③ 점 페이지에 삽입하고 종료, 오버플로우가 발생하면 분할을 수행

  22. k-d-B 트리의 연산 (삭제) Multidimensional Index Structures • 완전 일치 질의로 탐색, 제거 • 공간 이용률을 높이기 위해 재구성 • 합병(merge): 두 영역의 정보가 한 페이지로 합병 • 언더플로우: 두 영역간에 재분배(redistribution) • 두 영역의 합이 표현 가능한 영역(hyper-rectangle)이면 합병가능 • 합병이 불가능한 경우

  23. 격자 파일 (Grid File) Multidimensional Index Structures • 격자 파일 • 전체 공간을 하나 이상의 격자(grid)로 분할 • 데이터 추가에 따라 기존 격자를 분할하여 새로운 격자 구성 • 특징 • 디스크 기반  대용량 데이터 처리 가능 • 해시 기반  일반적으로 두 번의 디스크 접근으로 데이터 검색

  24. 격자 파일의 구성 (1/3) Multidimensional Index Structures • d-차원의 격자 파일 • 격자 디렉터리(grid directory) • d개의 선형 눈금자(liner scale) • 격자 디렉토리를 구성하는 각 차원별 눈금 정보 • 주기억 장치에 유지 • d차원의 격자 배열(grid array) • 선형 눈금자에 의해 분할된 격자로서, 하나의 이상의 격자 블록으로 구성 • 각 격자 블록은 해당 데이터 페이지 번호를 저장 • 디스크에 저장 (메모리에는 저장이 안되나???) • 데이터 페이지 • 실제 데이터(다차원 레코드)가 저장되는 장소 • 디스크에 저장

  25. 격자 파일의 구성 (2/3) Multidimensional Index Structures • 격자 블록과 데이터 페이지 • 기본적으로 하나의 격자 블록당 하나의 데이터 페이지 • 두 개 이상의 격자 블록이 하나의 데이터 페이지에 대한 공유 가능

  26. 격자 파일의 구성 (3/3) Multidimensional Index Structures 선형눈금자 격자 배열 데이터 페이지

  27. 격자 파일의 레코드 삽입 예 (1/5) Multidimensional Index Structures 예제 데이터 하나의 페이지가 최대 3개의 점 저장한다고 가정

  28. 격자 파일의 레코드 삽입 예 (2/5) Multidimensional Index Structures a, b, c 삽입

  29. 격자 파일의 레코드 삽입 예 (3/5) Multidimensional Index Structures d 삽입 (격자 분할)

  30. 격자 파일의 레코드 삽입 예 (4/5) Multidimensional Index Structures e, f 삽입 (f 삽입 시, 격자 분할)

  31. 격자 파일의 레코드 삽입 예 (5/5) Multidimensional Index Structures g, h, i 삽입 (i 삽입 시, 격자 분할)

  32. 격자 파일의 질의 예 Multidimensional Index Structures • Find (7, 2), i.e., x=7 and y=2. • 선형 눈금자(SX, SY) 사용 • 주기억 장치 액세스 • x=7: 두 번째 범위(SX), y=2: 첫번째 범위(SY) • 격자 배열 인덱스 = (2, 1) • 격자 배열(G) 접근 • 디스크 액세스 • G(2, 1) • 데이터 페이지 번호 = 3 • 데이터 페이지(P) 접근 • 디스크 • P3 • 데이터 d 검색 • 두 번의 디스크 접근 (7, 2) SX(0, 5, 10, 20) SY(0, 5, 10) 1 2 1 2 3 G 1 2 3 2 1 P3

  33. 격자 파일의 레코드 삭제 예 Multidimensional Index Structures • 점 i의 삭제 • P3, P4는 하나의 페이지 P3로 합병 가능 • P1은 두 개의 격자 블록이 공용 하다가 하나가 사용 • x=5 분할 제거 • 격자 블록 합병 • 선형 눈금자 수정 SY SX

  34. 사분트리 (Quadtree) Multidimensional Index Structures • 공간을 순환적으로 분해하는 계층적(hierarchical) 자료 구조 (Note: Quadtree는 객체가 나타내는 공간을 분해하여 표현한다.) • 사분트리의 분류 기준 • 표현하고자 하는 자료의 유형 (점, 영역 등) • 공간 분해 과정의 원칙 (예: x  y  x  …) • 해상도(resolution) – 분해 과정의 횟수를 고정 또는 가변 (얼마나 자세히 나타내나…) • 사분트리로 표현하는 자료의 유형 • 점(point), 영역(region), 곡선(curve), 표면(surface), 볼륨(volume) • 개체의 경계를 표현하는 경우: 곡선, 표면 데이터 • 개체의 내부를 표현하는 경우: 영역, 볼륨 데이터

  35. 영역 사분트리 (Region Quadtree) (1/2) Multidimensional Index Structures • 이차원 영역 데이터 표현에 많이 사용 • 이미지를 표현하는 2진수의 배열을 연속적으로 동일한 크기의 사분면들로 분할: 가변 해상도의 자료 구조 • 영역 사분트리의 예 (Refer the next page) • 차수가 4인 트리 • 루트 노드는 전체 배열에 대응 • 자식 노드들은 각 영역의 사분면 표현(NW, NE, SW, SE순) • 단말 노드: 영역의 내부 표현(1, 흑색 노드) 또는 영역의 외부 표현(0, 백색 노드) • 내부 노드(단말이 아닌 노드): 회색 노드(0과 1 모두 가짐)

  36. 영역 사분트리 (Region Quadtree) (2/2) Multidimensional Index Structures 영역 사분트리의 예 (계속)

  37. 점 사분트리 (Point Quadtree) Multidimensional Index Structures 점 데이터를 표현 공간을 (크기가) 동일하지 않은 4개의 부속 공간으로 분할 이차원 점 데이터에 대한 인덱스로 활용 다차원 데이터를 위한 Binary Search Tree의 일반화 이차원 점 데이터를 나타내는 노드 표현 <데이터 필드, x 좌표, y 좌표, 네 개(NW, NE, SW, SE )의 포인터 필드>

  38. 도시 데이터 레코드 Multidimensional Index Structures

  39. 점 사분트리의 표현 Multidimensional Index Structures 단말 노드가 버켓의 포인터를 가진다면 인덱스 역할 가능 (예) 버켓 1 : 0≤x<5와 45≤y<100의 값을 갖는 점 데이터들

  40. 점 사분트리에서의 삽입 (1/2) Multidimensional Index Structures • Binary Search Tree에 대한 삽입과 유사한 방법 • 삽입할 레코드의 위치를 x, y 좌표 값을 바탕으로 탐색 • 노드의 좌표 값과 삽입할 데이터의 좌표 값을 비교하여 Traverse • 이 과정을 반복한 후, 도착한 단말 노드에 레코드 삽입 • 점 사분트리의 구축 비용 = 트리의 총 경로 길이 • 평균 삽입 비용(실험적): O(Nlog4N) ( Sorting의 복잡도와 유사) • 한 노드의 탐색 비용: O(log4N)

  41. 점 사분트리에서의 삽입 (2/2) Multidimensional Index Structures • 최적 점 사분트리 구성 방법 (a kind of bulk loading) • 임의 노드의 어떤 서브트리도 전체 노드 수의 반 이상을 갖지 않는 트리로 정의한다. • 이를 위해, 모든 점 데이터들을 하나의 좌표축(x) 값으로 정렬하고 다른 좌표축(y) 값은 보조 키로 사용한다. • 루트는 정렬 파일의 중간 값을 갖고, 나머지는 4개 부속 그룹으로 나누어 루트의 네 서브트리가 되도록 한다.

  42. 점 사분트리의 삽입 예 (1/2) Multidimensional Index Structures

  43. 점 사분트리의 삽입 예 (2/2) Multidimensional Index Structures

  44. 점 사분트리에서의 검색 (1/2) Multidimensional Index Structures • 탐색 공간을 좁혀 나가는 기법 • 한 레벨 아래로 갈수록 탐색 공간은 1/4로 감소 • 단말 노드가 가리키는 버킷에서 원하는 데이터(점 레코드) 검사 • 예) “(95, 8)에 위치한 도시를 검색하라” • 대전(35, 40)의 SE 진주(85, 15)의 SE  부산(90, 5)의 NE에 속하므로 버킷 23을 조사

  45. 대전 서울 속초 전주 진주 강릉 경주 부산 (1) (2) (3) (4) (5) (6) (7) (12) (13) (14) (15) (16) (21) (8) (9) (10) (11) (17) (18) (19) (20) (22) (23) (24) (25) 점 사분트리에서의 검색 (2/2) Multidimensional Index Structures • 범위 탐색, 근접 탐색에도 적합 • 예) “좌표 값 (83, 10)에서 거리 8이내에 존재하는 모든 도시를 검색하라” • 대전(35, 40)의 SE를 검색하고, 진주 (50, 10)의 NE와 SE만 검색하면 됨

  46. R-트리 Multidimensional Index Structures • R-트리란? • B-트리를 다차원으로 확장시킨 완전 균형 트리 • 선, 면, 도형 등 다양한 다차원 공간 데이터의 저장이 가능(SAM) • 특징 • 루트 노드가 아닌 노드는 최소 m, 최대 M개의 엔트리를 포함한다.(m  M/2) • 루트노드는 단말이 아닌 경우 최소 2개의 엔트리를 포함한다. • 완전 균형트리(모든 단말 노드는 같은 레벨)이다.

  47. MBR (Minimum Bounding Rectangle) Multidimensional Index Structures 복잡한 형태의 공간 도형을 저장하기 위하여, 다차원 색인에서는 많은 경우에 MBR(Minimum Bounding Rectangle) 개념을 이용 다차원 공간의 도형은 두 개의 점으로 표현되는 MBR에 포함됨 (x2max, y2max) (x1max, y1max) (x2min, y2min) (x1min, y1min)

  48. MBR의 예 (2차원 공간) Multidimensional Index Structures y r1 r13 r12 r2 r10 r14 r11 r6 r4 r9 r5 r7 r3 r8 x

  49. R-트리에 의한 공간 분할의 예 Multidimensional Index Structures R1 r1 R3 R2 r13 R5 r12 r2 r10 r14 r11 r6 r4 R4 R6 r9 r5 r7 r3 R7 r8

  50. R1 r5 R3 r2 R5 r4 r1 r3 R2 R4 R6 r9 r6 r7 r10 r13 R7 r11 r12 r8 r14 R-트리 노드 구성 Multidimensional Index Structures 내부 노드 = <(mbr1, pointer1), (mbr2, pointer2), …> 단말 노드 = <(mbr1, object1), (mbr2, object2), …> R-트리 노드 구성의 예 (R-tree for the example in the previous slide) 노드 a 노드 b 노드 c 노드 f 노드 g 노드 h 노드 d 노드 e

More Related