rustembeddedsqlitemultithreadingperformance
[Telemetry Data Transmitter] Telemetry Relay System Architecture and Multi-Source Sync Pipeline
• 2 min read
임베디드 환경(aarch64)에서의 원활한 데이터 수집을 위한 Telemetry Sender 시스템의 초기 아키텍처를 구축함. 엣지 디바이스의 로컬 DB와 통신 서버 간의 비동기 동기화 파이프라인을 구현하여 안정적인 데이터 전송 환경을 확보함.
[SQLite / Storage] 파티셔닝 기반 Dual-DB 아키텍처 및 자동 테이블 스위칭
- 이벤트, 시스템 상태, 객체 인식 데이터를 각각 분리된 로컬 DB 파일에 일자별 동적 테이블 단위로 생성하도록 아키텍처를 개선함.
DBHandler를 도입하여Cursor.db에table_name,last_processed_row,is_completed상태를 기록하는 영구 커서 트래킹 메커니즘을 구축.- 동적 테이블 접두사를 활용하여 더 최신 테이블 생성 시 빈 테이블을 즉시 완료 처리하는 스위칭 로직을 구현함.
[Rust / Threading] 파이프라인 물리 격리 및 논블로킹 네트워크 복구 워치독
- 통신 음영 지역에서의 네트워크 지연이 메인 SVM 프로그램 및 CAN 수신 버퍼 처리에 간섭하지 않도록, ECU 수집 모듈과 데이터 전송 모듈의 스레드를 완전히 물리적으로 격리함.
- 임베디드 장치의 볼륨 마운트 지연 시 메인 DB 파일이 없더라도 지정된 간격으로 워커 스레드가 재시도하도록 수정하여 복원력을 강화함.
- 네트워크 단절 후 재연결 시
last_processed_row를 기준으로 밀린 데이터를 배치 전송하는 논블로킹 복구 알고리즘을 적용함.
[Rust / Pipeline] 다중 소스 데이터 조인 로직 및 동적 태그(Tag Suffix) 병합
- 메인 센서 데이터와 외부 GPS 데이터를 조인하기 위한
external_sources동기화 로직 구현. - InfluxDB에서 동일 타임스탬프를 지닌 다중 객체 프레임 데이터가 덮어씌워지는(Upsert) 현상을 방지하기 위해
tag_suffix_column속성을 도입함. - 동적 태그 접미사를 결합한 임시 필드(
__tag_suffix__) 생성 후 페이로드 송신 직전 그룹화하여 전송 크기를 최적화함.
[Rust / Compiler] 임베디드 엣지 디바이스 호환을 위한 aarch64 정적 빌드 최적화
- 엣지 디바이스의 시스템 라이브러리 의존성 문제를 해결하기 위해 정적 빌드 환경 구축.
[profile.release]에lto = true,codegen-units = 1,strip = true설정을 적용하여 바이너리 크기를 최소화함.