센서 로그 저장과 조회

같은 Key로 다시 저장할 때 새 기록이 생기는지 기존 기록이 바뀌는지, 장치 로그의 구조로 확인합니다.

실습 전에

01 같은 측정값이 다시 도착하면 어떻게 저장할까요?

설명

장치·측정 시각을 Key로 두고 갱신·무시 등 중복 처리 규칙을 정합니다.

02 데이터가 없는 것과 요청이 잘못된 것은 같을까요?

설명

없는 구간은 빈 결과로, 해석할 수 없는 구간은 입력 오류로 구분합니다.

실행 조건

Python의 sqlite3를 사용하며 DB 서버·계정은 필요하지 않습니다.

실습

실습용 노트북 미리보기실습용 노트북 다운로드

1. 중복 측정은 한 번만 저장하기

시작 조건

장치 m1의 t∈{0,1,1,2}t\in\{0,1,1,2\} s 측정값은 20,21,22,23입니다. 같은 장치·시각은 최신 값으로 갱신합니다.

진행 방법

  1. SQLite의 복합 Primary Key를 확인하고 제공된 네 측정값을 저장하세요.
  2. 저장된 행 수와 t=1t=1의 값을 확인하고, 중복 처리 규칙이 맞는지 설명하세요.

남길 결과

기록 항목과 확인할 점
입력 수
저장 행 수
중복 Key
최종 값

확인할 점

  • 측정 시각과 수신 시각을 혼동하지 않았는가?
  • SQL 문자열에 값을 직접 붙이지 않고 Parameter를 사용했는가?

2. 시간 구간과 장치로 조회하기

시작 조건

m2 장치에 t∈{0,1,2}t\in\{0,1,2\}, 값 30,31,32를 추가합니다. m1의 1≤t≤2만 조회합니다.

진행 방법

  1. 장치·시작 시각·종료 시각을 인자로 받는 조회 함수를 작성하세요.
  2. 지정 구간과 값이 없는 구간을 한 번씩 시험하세요.
  3. 조회 결과를 시간–측정값 그래프로 그리세요.

남길 결과

기록 항목과 확인할 점
장치
조회 구간
행 수
값의 범위

확인할 점

  • 정렬 순서를 SQL에서 명시했는가?
  • 빈 결과를 오류나 값 0으로 바꾸지 않았는가?

3. 센서에서 API까지 연결하기

시작 조건

다음 단원의 HTTP API가 조회 함수를 호출한다고 가정합니다. 요청은 device=m1,start=0,end=2입니다.

진행 방법

  1. 조회 결과를 JSON으로 전달할 필드 구조를 정하세요.
  2. 없는 장치와 start>end를 구분해 응답 규칙을 정하세요.
  3. DynamoDB 등 외부 저장소로 바꾸어도 유지할 데이터·조회 규칙을 표시하세요.

남길 결과

기록 항목과 확인할 점
요청
검증 결과
응답 필드
예상 행 수

확인할 점

  • 외부 서비스 계정 없이도 저장·조회 원리를 확인했는가?
  • 장치 ID와 측정 시각의 의미를 API에서도 유지했는가?

공식 예제·데이터