kcg-monitoring/database/migration/002_aircraft_positions.sql

41 lines
1.5 KiB
SQL

-- 002: 항공기 위치 이력 테이블 (PostGIS)
-- 리플레이 기능을 위한 시계열 위치 데이터 저장
SET search_path TO kcg, public;
-- PostGIS 확장 활성화
CREATE EXTENSION IF NOT EXISTS postgis;
-- 항공기 위치 이력 테이블
CREATE TABLE IF NOT EXISTS aircraft_positions (
id BIGSERIAL PRIMARY KEY,
icao24 VARCHAR(6) NOT NULL,
callsign VARCHAR(16),
position geometry(Point, 4326) NOT NULL,
altitude DOUBLE PRECISION,
velocity DOUBLE PRECISION,
heading DOUBLE PRECISION,
vertical_rate DOUBLE PRECISION,
on_ground BOOLEAN DEFAULT FALSE,
category VARCHAR(16),
typecode VARCHAR(16),
type_desc VARCHAR(128),
registration VARCHAR(16),
operator VARCHAR(128),
squawk VARCHAR(4),
source VARCHAR(16) NOT NULL,
region VARCHAR(16) NOT NULL,
collected_at TIMESTAMP NOT NULL DEFAULT NOW(),
last_seen TIMESTAMP
);
-- GiST 공간 인덱스
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_geom ON aircraft_positions USING GIST (position);
-- 시간 기반 인덱스 (리플레이 쿼리 최적화)
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_collected ON aircraft_positions (collected_at);
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_region_time ON aircraft_positions (region, collected_at);
-- 개별 항공기 추적
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_icao24 ON aircraft_positions (icao24, collected_at);