증상
/100으로 잘못 나눈 레코드를 "복구했다"고 기록해 두었다. 엿새 뒤, 다른 스토어 103건이 여전히 잘못된 값으로 남아 있었다.
원인
복구는 같은 오판이 적용된 범위 전체가 아니라 처음 발견한 스토어에만 들어갔다. ★★★ 일괄 변환의 적용 범위를 모르면 복구의 범위도 모른다.
★★★ 그리고 ×100으로는 못 되돌린다
나눈 걸 곱하면 될 것 같지만 안 된다.
×100은 멀쩡한 레코드를 망가뜨린다(같은 실수의 반복)해법
백업이 아니라 정본에서 전량 재수집한다.
row["twd"] = live[handle] # 역연산이 아니라 재작성
★★ 정본이 외부 시스템에 있다면 그것이 최선의 백업이다. 우리 백업은 시점이 섞이지만 원천 API는 지금 이 순간의 정답이다. 로컬 사본을 수선하려 들지 말고 버리고 다시 받아라.
★ 일괄 변환의 규약
twd_raw) — 역연산보다 확실하다★★★ 되돌릴 수 있다고 생각한 쓰기가 비가역이었다. "복구 가능"이라는 판단 자체가 적용 범위를 안다는 가정에 기대고 있었고, 그 가정이 틀렸다.