← 이슈 기록 목록

LTE와 5G를 하나로 합치기까지

PostgreSQLMaterialized ViewData Modeling

01이슈 및 현상

기지국 조회 함수들이 LTE·5G의 서로 다른 원천 테이블 구조를 각자 cell_type 분기와 UNION ALL로 떠안아 비대해졌고, '전체' 조회는 매번 두 뷰를 UNION해 느렸습니다.

02원인 파악

LTE와 5G는 상위/하위 장비 식별자, 주파수 컬럼, 조인 키가 모두 달랐습니다. 이 차이를 각 조회 함수가 개별적으로 흡수하다 보니, 같은 분기가 함수마다 반복됐고 이는 두 계열을 하나로 보는 추상화가 빠져 있다는 신호였습니다.

03해결 방안

두 계열을 동일 스키마로 정규화한 Materialized View(mv_t_cell_all)를 신설했습니다. cell_id를 '장비ID:셀번호'로 통일 생성하고 cell_type으로 계열을 구분, DISTINCT ON으로 중복을 제거하고 주소 컬럼명을 맞췄으며 PostgREST용 web_anon 롤에 권한을 부여했습니다. 이후 기존 함수들이 이 뷰를 쓰도록 반영했습니다.

04결과 및 성과

조회 함수에서 계열 분기가 사라져 구조가 단순해지고 전체 조회 성능이 개선됐습니다. 다만 Materialized View는 스냅샷이라 REFRESH 운영이 전제되는데, 기지국 정보가 자주 바뀌지 않아 감수할 만한 트레이드오프였습니다.