📚 국립중앙도서관 API로 25년치 도서 데이터 백필 파이프라인 만들기

에어플로우 없이, 끊겨도 자동으로 이어받는 신뢰성 높은 ETL을 설계한 이야기 1. 만들게 된 이유 국립중앙도서관(NLK) 은 서지정보API를 통해 한국에 등록된 모든 도서의 서지 데이터를 공개하고 있다. 나는 2000년 1월부터 2024년 12월까지, 즉 25년치 전체 데이터를 PostgreSQL(Supabase) 에 저장해 보고 싶었다. 처음엔 단순히 “API를 루프 돌리면 되겠지” 싶었다. 하지만 실제로는 아래 문제들을 해결해야 했다. 호출 제한(rate limit)과 연결 끊김(timeout) 25년 × 12개월 = 300개월 분량의 데이터 EC2 연결이 중간에 끊기는 문제 수백만 건 JSON의 중복 삽입 방지 2. NLK API 이해하기 참고: 국립중앙도서관 서지정보 API 문서 ...

10월 22, 2025

PostgreSQL의 의외의 함정: Boolean, 텍스트 I/O, 그리고 ETL 이슈

PostgreSQL은 강력하고 표준을 잘 따르는 데이터베이스입니다. 하지만 의외의 작은 함정들도 있죠. 그중 하나는 바로 boolean 값을 다루는 방식, 특히 데이터를 텍스트 형식으로 내보낼 때의 이야기입니다. 🧠 PostgreSQL의 Boolean 처리 방식: 생각과 다르다 PostgreSQL은 boolean 값을 내부적으로 1비트(bit) 만으로 효율적으로 저장합니다. 예상한 대로죠. 하지만 그 값을 텍스트로 변환하거나 COPY 같은 방식으로 내보내면, 결과는 좀 다릅니다: SELECT true::text; -- 결과: 't' SELECT false::text; -- 결과: 'f' 맞습니다 — true는 't', false는 'f' 로 표현됩니다. 이건 PostgreSQL의 텍스트 I/O 기본 동작 방식인데, 이 동작 때문에 시스템 간 데이터를 주고받을 때 미묘한 버그가 생기기도 합니다. ...

6월 10, 2025