센서 로그 저장과 조회
같은 Key로 다시 저장할 때 새 기록이 생기는지 기존 기록이 바뀌는지, 장치 로그의 구조로 확인합니다.
실습 전에
01 같은 측정값이 다시 도착하면 어떻게 저장할까요?
설명
장치·측정 시각을 Key로 두고 갱신·무시 등 중복 처리 규칙을 정합니다.
02 데이터가 없는 것과 요청이 잘못된 것은 같을까요?
설명
없는 구간은 빈 결과로, 해석할 수 없는 구간은 입력 오류로 구분합니다.
실행 조건
Python의 sqlite3를 사용하며 DB 서버·계정은 필요하지 않습니다.
1. 중복 측정은 한 번만 저장하기
시작 조건
장치 m1의 s 측정값은 20,21,22,23입니다. 같은 장치·시각은 최신 값으로 갱신합니다.
진행 방법
- SQLite의 복합 Primary Key를 확인하고 제공된 네 측정값을 저장하세요.
- 저장된 행 수와 의 값을 확인하고, 중복 처리 규칙이 맞는지 설명하세요.
남길 결과
기록 항목과 확인할 점
- 입력 수
-
- 저장 행 수
-
- 중복 Key
-
- 최종 값
-
확인할 점
- 측정 시각과 수신 시각을 혼동하지 않았는가?
- SQL 문자열에 값을 직접 붙이지 않고 Parameter를 사용했는가?
2. 시간 구간과 장치로 조회하기
시작 조건
m2 장치에 , 값 30,31,32를 추가합니다. m1의 1≤t≤2만 조회합니다.
진행 방법
- 장치·시작 시각·종료 시각을 인자로 받는 조회 함수를 작성하세요.
- 지정 구간과 값이 없는 구간을 한 번씩 시험하세요.
- 조회 결과를 시간–측정값 그래프로 그리세요.
남길 결과
기록 항목과 확인할 점
- 장치
-
- 조회 구간
-
- 행 수
-
- 값의 범위
-
확인할 점
- 정렬 순서를 SQL에서 명시했는가?
- 빈 결과를 오류나 값 0으로 바꾸지 않았는가?
3. 센서에서 API까지 연결하기
시작 조건
다음 단원의 HTTP API가 조회 함수를 호출한다고 가정합니다. 요청은 device=m1,start=0,end=2입니다.
진행 방법
- 조회 결과를 JSON으로 전달할 필드 구조를 정하세요.
- 없는 장치와 start>end를 구분해 응답 규칙을 정하세요.
- DynamoDB 등 외부 저장소로 바꾸어도 유지할 데이터·조회 규칙을 표시하세요.
남길 결과
- 두 정상·오류 요청의 응답 예와 저장소 교체 시 유지할 규칙.
기록 항목과 확인할 점
- 요청
-
- 검증 결과
-
- 응답 필드
-
- 예상 행 수
-
확인할 점
- 외부 서비스 계정 없이도 저장·조회 원리를 확인했는가?
- 장치 ID와 측정 시각의 의미를 API에서도 유지했는가?
공식 예제·데이터