ACK 전에 꺼진 간식 자판기 · 새 학기 재고를 어제 번호로 읽지 않는다 · 퀴즈
퀴즈: 새 학기 재고를 어제 번호로 읽지 않는다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
day-A의 last=800을 저장한 복제본에 허용된 day-B의 last=0 스냅샷이 왔다. 판단은?
- 0은 800보다 작으므로 언제나 오래된 스냅샷이다
- day-A의 801번으로 바꾸어 새 재고에 이어 붙인다
- 다른 허용 세대이므로 새 상태로 원자적으로 교체한다
- 두 세대의 재고를 더하고 더 큰 커서를 유지한다
expected_epoch를 검증 대상 snapshot['epoch']에서 그대로 꺼내 전달했다. 부족한 것은?
- 어느 원본 세대를 허용했는지 독립적으로 대조할 기준
- 숫자 last를 문자열로 바꾸어 정렬하는 처리
- epoch 문자열을 더 긴 문자열로 확장하는 처리
- 스냅샷에 동일한 epoch 키를 두 번 적는 처리
스냅샷으로 last=5까지 설치했지만 4번 개별 delta는 없다. (4,2)가 들어오면?
- 작은 번호라서 같은 내용의 중복으로 확정한다
- delta를 더하고 last는 5로 유지해 기록을 맞춘다
- 원본의 현재 재고에서 2를 빼어 과거를 추정한다
- 개별 효과를 대조할 수 없는 과거로 명시적으로 분류한다
sync_once가 last=20 스냅샷을 설치한 뒤 원본이 21까지 쓰고 삭제했다. 이번 호출은?
- last를 21로 올린 뒤 정상 완료를 반환한다
- 재복구 필요 오류를 전달하고 설치한 유효 상태는 유지한다
- 호출 내부에서 성공할 때까지 무제한 반복한다
- 설치한 재고를 지우고 21번의 효과를 0으로 가정한다
같은 세대·last·total의 스냅샷을 다시 설치할 때 남은 개별 events는?
- 확정 중복이므로 재고를 한 번 더 더하고 유지한다
- 복구를 반복한 횟수만큼 seq를 뒤로 이동한다
- 상태를 바꾸지 않고 그대로 유지하며 False를 반환한다
- 개별 효과가 필요 없으므로 매번 전부 삭제한다
source.db와 mirror.db라는 경로 두 개를 쓰면 별개 저장소가 보장되는가?
- 아니다. 링크로 같은 파일일 수 있어 실제 정체성도 확인한다
- 그렇다. SQLite는 파일 이름마다 다른 데이터베이스를 만든다
- 그렇다. 연결을 두 번 열면 디스크 내용도 두 벌로 나뉜다
- 아니다. 같은 폴더의 모든 DB는 항상 하나로 합쳐진다