Core Insight
공간 데이터베이스(Spatial DB)는 단순 텍스트나 숫자가 아닌 기하학적 객체(Point, Line, Polygon)를 저장하며, 대용량 공간 쿼리의 성능 최적화를 위해 객체를 감싸는 최소 경계 사각형인 MBR(Minimum Bounding Box)과 이를 활용한 R-Tree 계열의 인덱싱 및 필터-정제(Filter-Refine) 2단계 처리 구조를 핵심 기술로 사용한다.
I. 공간 데이터 모델링의 기초: 기하 객체와 좌표계
공간 정보를 데이터베이스 내에서 표현하기 위한 표준 및 형식이다.
- Geometry 객체 (OGC 표준):
- Point: (x, y) 좌표.
- LineString: 점들의 연결.
- Polygon: 닫힌 선분으로 이루어진 면적.
- SRID (Spatial Reference Identifier):
- 좌표계 정보를 식별하는 ID (예: EPSG:4326 - 위경도 좌표계).
- WKT/WKB:
- WKT (Well-Known Text): 인간이 읽기 쉬운 텍스트 포맷.
- WKB (Well-Known Binary): 기계 효율적인 바이너리 포맷.
📢 섹션 요약 비유: 지도를 보고 위치를 말할 때 "저기 사거리 건너편 빌딩"이라고 하는 대신, 정확한 위도와 경도 수치로 이름을 붙여 관리하는 것과 같습니다.
II. MBR (Minimum Bounding Rectangle)과 인덱싱
복잡한 다각형의 연산량을 줄이기 위해 사용하는 근사치 기법이다.
- MBR의 정의:
- 특정 공간 객체를 완전히 포함하면서 각 변이 좌표축에 평행한 가장 작은 사각형.
(Min X, Min Y, Max X, Max Y)네 개의 값으로 표현 가능.
- R-Tree 인덱스:
- MBR들을 계층적으로 그룹화하여 트리 구조로 저장.
- ┌─────────────────────────────────────────┐ │ Root MBR ┬ Child MBR A -> [Leaf Objects]│ │ └ Child MBR B -> [Leaf Objects]│ └─────────────────────────────────────────┘
- 인덱스 활용: 트리 탐색을 통해 쿼리 영역과 겹치지 않는 MBR 가지를 빠르게 제거.
📢 섹션 요약 비유: 도서관에서 책을 찾을 때 모든 글자를 다 읽는 게 아니라, 책장(MBR)의 라벨을 보고 필요 없는 칸을 통째로 건너뛰는 것과 같습니다.
III. 공간 쿼리 처리 메커니즘: 필터-정제 (Filter-Refine)
복잡한 기하 연산을 효율적으로 수행하는 2단계 프로세스이다.
- Step 1: Filter Phase (필터 단계):
- 인덱스(R-Tree)를 사용하여 쿼리 영역 MBR과 겹치는 후보 객체들을 선별.
- 단순 사각형 겹침 연산이므로 매우 빠름.
- Step 2: Refine Phase (정제 단계):
- 필터 단계에서 남은 후보들에 대해서만 실제 다각형(Polygon) 연산을 수행.
ST_Intersects,ST_Contains등 정밀한 기하 함수 적용.
📢 섹션 요약 비유: 고운 체(Filter)로 굵은 돌맹이들을 먼저 걸러낸 뒤, 남은 알갱이들 중에서만 진짜 보석(Refine)을 하나하나 골라내는 과정입니다.
IV. 주요 공간 연산 및 근접 분석 (Proximity Analysis)
위치 기반 서비스(LBS)에서 빈번하게 사용되는 기술이다.
- Relationship Operators:
- Contains/Within: 포함 관계.
- Overlaps: 일부 겹침.
- Touches: 경계선 접촉.
- Distance/Proximity Operators:
- ST_Distance: 두 객체 간 최단 거리 계산.
- KNN (K-Nearest Neighbors): 특정 지점에서 가장 가까운 K개의 객체 찾기.
- Buffer Analysis:
- 특정 객체로부터 일정 거리 내의 영역(Buffer Zone)을 생성하여 분석.
📢 섹션 요약 비유: "내 위치에서 1km 이내에 있는 편의점 찾기"처럼 특정 구역을 설정하고 그 안에 들어온 대상을 골라내는 기술입니다.
V. 공간 데이터베이스 vs 일반 데이터베이스
| 구분 | 일반 관계형 DB (B-Tree) | 공간 데이터베이스 (R-Tree) |
|---|---|---|
| 데이터 형태 | 1차원 (숫자, 문자열) | 2차원/3차원 (Point, Polygon) |
| 인덱스 구조 | 값의 크기 순 정렬 | 공간적 포함 관계 (MBR) 계층 |
| 연산 방식 | =, >, < (단순 비교) | Contains, Distance (기하 연산) |
| 주요 활용 | 회계, 인사, 게시판 | 지도 서비스(GIS), 배달, 자율주행 |
📢 섹션 요약 비유: 숫자 순서대로 줄을 세우는 것과, 지도를 조각조각 잘라 상자에 담아 분류하는 방식의 차이입니다.
Concept Map
┌──────────────────────────────────────────────────────────┐ │ Spatial Data Query Engine │ └─────────────┬───────────────────────────────┬────────────┘ │ │ ┌────────▼────────┐ ┌─────────▼────────┐ │ Geometry Object │ │ Spatial Indexing │ │ (Point, Polygon)│ │ (R-Tree / MBR) │ └────────┬────────┘ └─────────┬────────┘ │ │ └───────────────┬───────────────┘ │ ┌───────────▼───────────┐ │ 2-Step Query Process │ ├───────────────────────┤ │ 1. Filter (MBR Match) │ │ 2. Refine (Exact Calc)│ └───────────┬───────────┘ │ ┌─────────▼─────────┐ │ Result Set (GIS) │ └───────────────────┘
Children's Analogy
지각 시간이라 교실에 있는 내 자리를 빨리 찾고 싶을 때를 생각해 봐요. 복도에서 교실 문(MBR)만 보고 "아, 여기는 1반이니까 내가 있는 2반은 아니네!" 하고 지나가는 게 '필터 단계'예요. 드디어 2반 문을 열고 들어가서 친구들 얼굴을 하나하나 확인하며 내 자리를 찾는 게 '정제 단계'랍니다. 처음부터 모든 교실의 모든 자리를 다 확인하지 않고, 큰 상자(MBR)부터 확인해서 시간을 아끼는 방법이에요.