데이터 파이프라인 · 멱등성과 재처리 · 퀴즈
퀴즈: 멱등성과 재처리
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
멱등한 적재의 출발점으로 가장 중요한 것은?
- 한 번에 넣는 배치 크기를 줄이는 것
- 각 행을 유일하게 식별하는 자연 키를 정하고 그것에 유일 제약을 거는 것
- 트랜잭션 격리 수준을 올리는 것
- 실패했을 때 재시도 횟수를 늘리는 것
ON CONFLICT DO UPDATE 에 IS DISTINCT FROM 조건을 붙이지 않으면 생기는 문제는?
- 같은 키로 중복 행이 생긴다
- 충돌 처리에서 오류가 발생한다
- 불필요한 비교가 없어져 적재 성능이 두 배 좋아진다
- 내용이 하나도 안 바뀐 재실행에서도 모든 행의 갱신 시각이 올라가 변경 추적이 불가능해진다
내용 해시(content hash)를 두는 이유는?
- 원본 값을 감춰 보안을 지키려고
- 원본 대신 해시만 두어 공간을 줄이려고
- 컬럼이 많아도 변경 여부를 한 번의 비교로 판단하기 위해
- 해시 기준 정렬을 빠르게 하기 위해
같은 전표가 한 배치 안에 두 번 들어 있을 때 upsert 만으로는 부족한 이유는?
- 한 문장 안에서 같은 키를 두 번 갱신하려 하면 오류가 나기 때문
- upsert 는 배치를 지원하지 않기 때문
- 해시 계산이 불가능하기 때문
- 트랜잭션이 롤백되기 때문
실행마다 삽입 건수와 갱신 건수를 로그로 남기면 얻는 것은?
- 건수를 미리 알아 적재 속도가 빨라진다
- 남긴 기록을 서로 대조해 중복이 자동으로 제거된다
- 원천의 스키마 변경이 방지된다
- 무변경 실행과 변경 반영 실행을 구분할 수 있어 파이프라인과 원천의 이상을 조기에 감지할 수 있다
재시도 블록 안에 외부 API 호출을 넣으면 안 되는 이유는?
- API 가 느려서
- 재시도할 때마다 그 부수 효과가 반복되기 때문
- 트랜잭션 안에서는 네트워크를 쓸 수 없어서
- API 응답이 캐시되기 때문