[Pilot Test Analysis System] 3D 벡터 연산 최적화 및 공간 도메인 정규화
• 2 min read
지난달 다중 세션 리포트 다운로드 시 발생한 서버 메모리 누수 및 응답 지연 문제를 해결하기 위해, 실시간 ZIP 아카이브 스트리밍 파이프라인으로 구조를 전환하는 최적화 작업을 진행했다. 해당 과정을 통해 대용량 데이터 처리와 분석 파이프라인 전반의 연산 효율성 확보가 필수적임을 확인했다. 이를 바탕으로, 이번 작업에서는 데이터 분석 전담 모듈의 성능을 극대화하기 위해 3D 공간 벡터 연산의 오버헤드를 감소시키고 시계열 데이터베이스 쿼리를 고도화하는 한편, 공간 도메인을 다대다 관계로 정규화하여 확장성을 확보했다.
[Rust / Kinematics] 3D 벡터 투영 연산 및 틸트 보정 최적화
- 기존의 복잡한 3D 회전 행렬 연산을 기반 좌표계 연산으로 간소화하여, Rust 워커 스레드의 연산 오버헤드를 대폭 감소시켰다.
- 센서 장착 각도 보정을 위한 삼각함수 연산을 벡터 곱셈으로 변환하는 고속 보정 로직을 적용했다.
- 불필요한 라디안 변환을 제거하고 연산 파이프라인을 정제하여 실시간 처리 효율을 극대화했다.
[InfluxDB / Database] 시계열 쿼리 고도화 및 파싱 무결성 확보
- 개별 필드 조회를 위해 다중 필터를 사용하던 비효율적인 Flux 쿼리 구조를 전면 개편했다.
- 기존 피벗(Pivot) 연산 방식에서 정규 표현식과 명시적 타입 캐스팅 기반의 그룹화(Group) 방식으로 전환하여 쿼리 효율성을 높였다.
- 누락된 데이터에 대해 실수형으로 안전하게 변환하는 캐스팅 백업 로직을 추가하여 파싱 무결성을 확보했다.
[React / Frontend] 텔레메트리 동적 오버레이 및 프리셋 시스템 구현
- 개별 uPlot 플러그인들을 단일 오버레이 플러그인으로 통합하고, Zustand 기반의 전역 상태 트리를 주입받아 조건부로 렌더링하도록 레이어를 재설계했다.
- 경보 수준(warning / danger)에 따른 보행자 인식 데이터 필터링 등 다중 조건에 따라 마커 필터링이 가능하도록 제어 로직을 구현했다.
- 차량의 가속, 조향, 특정 위험 시나리오에 맞는 설정을 한 번에 활성화할 수 있는 프리셋 시스템을 도입했으며, 렌더링에 사용되지 않는 잉여 축과 그리드 라인을 동적으로 숨겨 시각적 노이즈를 차단했다.
[PostgreSQL / Architecture] 다대다 관계 정규화를 통한 공간 도메인 설계 확장
- 단일 문자열로 저장되던 자치구 데이터를 독립적인 엔티티로 승격시키고, 하위 도메인이 외래 키를 통해 참조하도록 데이터베이스 스키마를 마이그레이션했다.
- 주행 세션이 여러 자치구를 가로지를 수 있는 도메인 특성을 반영하여 매핑 테이블을 생성하고, 다대다(N:M) 관계로 아키텍처를 확장했다.
- 정규화된 스키마에 맞춰 Repository 레벨의 조회를 내부 Join 연산 기반으로 일괄 리팩토링하고, 전용 공간 인덱스를 DDL에 추가하여 검색 성능을 향상시켰다.