rustembeddedsqlitetime-synchronizationrefactoring

[Telemetry Data Transmitter] Target-Specific Cursor Management and Timestamp Normalization

1 min read

센서 데이터를 수집하는 엣지 디바이스 간의 타임스탬프 규격(초 단위 vs 밀리초 단위)이 상이하여, 중앙 서버 동기화 시 테이블 매칭 오류와 데이터 누락 버그가 지속적으로 발생하였다. 더불어 다수의 센서 타겟이 단일 커서 데이터베이스를 공유함으로써 트랜잭션 충돌 위험이 내재되어 있었다. 이를 해결하기 위해 타겟별로 독립된 커서 관리 구조를 확립하고, 이기종 센서 간의 타임스탬프 정규화 로직을 도입하였다.

[Rust / TargetConfig] 센서 타겟별 독립 커서 DB 격리 아키텍처

  • 다수의 센서 타겟이 독립적인 경로의 커서 데이터베이스를 관리할 수 있도록 TargetConfigcursor_db_path 속성을 추가함.
  • 개별 타겟 설정에 커서 DB 경로가 명시된 경우 전역 설정을 덮어쓰도록(Override) 구현하여 격리성을 확보함.
  • 시스템 서비스(systemd) 등록 환경에서의 백그라운드 로깅 가시성을 높이기 위해 env_logger의 기본 필터 레벨을 ‘info’로 고정함.

[Rust / DB Handler] 이기종 센서 간 1e12 임계값 기반 타임스탬프 정규화

  • 초 단위 타임스탬프를 사용하는 고해상도 센서(RTK 등)와 밀리초 단위 기반인 시스템 내부 커서 간의 매칭 오류를 수정함.
  • DB 핸들러에서 특정 자리수 임계값을 기준으로 초 단위를 식별하고, 이를 밀리초 단위로 자동 변환하는 방어 로직을 추가함.
  • 외부 소스의 커서 업데이트용 테이블 이름 생성 과정에서 밀리초를 다시 초 단위로 역변환하여 테이블 스위칭 및 조인 오류를 해결함.