토픽 72 / 201·인덱스 및 쿼리 최적화
다차원 색인 구조 (Multidimensional Index)
다차원 색인 구조 (Multidimensional Index)
2차원 이상의 다차원 공간 데이터를 효율적으로 저장·검색하기 위한 인덱스 구조로, 공간 질의(범위, 최근접, 교차 등)를 지원하는 공간 데이터베이스의 핵심 자료구조
목적: 다차원 공간 데이터의 효율적 검색, 공간 질의(교차/포함/인접/최근접) 지원, GIS·위치 기반 서비스의 성능 보장
특징: 다차원 키 지원, 공간 분할 또는 데이터 분할 기반, 범위/최근접 질의 최적화, 차원 증가 시 성능 저하(차원의 저주)
주요 구조
- •R-Tree: MBR(Minimum Bounding Rectangle)로 공간 객체를 감싸는 트리, B-Tree의 다차원 확장, 겹침(Overlap) 허용, 삽입/검색/삭제 O(log n), 가장 널리 사용
- •R*-Tree: R-Tree 개선, 삽입 시 겹침·면적·주변 길이 최소화, 강제 재삽입(Forced Reinsert), R-Tree 대비 검색 성능 향상, PostgreSQL/Oracle 채택
- •KD-Tree(K-Dimensional Tree): 각 레벨에서 하나의 차원을 교대로 분할하는 이진 트리, 포인트 데이터에 효과적, 구현 간단, 균형 유지 어려움, 저차원(2~3D)에 적합
- •Quadtree(쿼드트리): 2D 공간을 재귀적으로 4등분하여 분할, 균등 분할(공간 기반), 희소 데이터에 비효율, 이미지 처리·게임에 활용
- •Grid File(격자 파일): 다차원 공간을 격자(Grid)로 분할, 각 격자 셀이 버킷에 매핑, 2번의 디스크 접근으로 검색, 데이터 편중 시 공간 낭비
공간 연산
- •교차(Intersect): 두 공간 객체의 겹침 여부
- •포함(Contains/Within): 한 객체가 다른 객체를 포함하는지
- •인접(Adjacent/Touches): 경계가 접하는지
- •최근접(Nearest Neighbor): 주어진 점에서 가장 가까운 객체 탐색
- •범위 질의(Range Query): 주어진 영역 내 객체 검색
MBR (Minimum Bounding Rectangle): 공간 객체를 감싸는 최소 직사각형, R-Tree 계열의 기본 근사 단위, MBR 겹침이 검색 성능에 영향
장점: 다차원 데이터 효율적 검색, 공간 질의 최적화, 대규모 공간 데이터 처리 가능
단점: 차원의 저주(고차원 시 성능 저하), 구조별 데이터 특성 의존, 갱신 비용(R-Tree 재균형), MBR 겹침에 의한 성능 저하
적용사례: GIS(지리정보시스템, 지도 검색), 공간 데이터베이스(PostGIS, Oracle Spatial), 위치 기반 서비스(LBS, 주변 검색), CAD/CAM 설계, 게임(충돌 감지), 자율주행(장애물 탐지)
B-Tree와 비교: B-Tree(1차원 키/범위·동등 검색/범용 DBMS) vs R-Tree(다차원 키/공간 질의/공간 DB), B-Tree는 1차원 정렬 가능하나 다차원 데이터의 공간 근접성 표현 불가
연관: R-Tree, B-Tree, 공간 데이터베이스, GIS, PostGIS, 인덱스