
폐쇄망 환경에서 대용량 데이터를 Python과 SQLite로 결합하기
두줄요약
폐쇄망 분석실에서 Python과 SQLite로 약 19.8억 행의 SAS 데이터를 월별로 적재·정제했습니다. 색인과 PRAGMA를 작업별로 조정하고 조인 팬아웃을 검증하는 방법을 설명합니다.
문제 상황
- 인터넷·도구 설치가 차단된 분석실에서 SAS 원본 약 19.8억 행의 적재·결합 필요
- Python 3.8 내장 SQLite와 제한된 메모리 환경, 오래된 SQLite 버전 제약
구조와 흐름
- 월별 SAS 파일을 하나씩 읽어 대상 컬럼과 대상자·명세서 키 기준 행만 SQLite에 적재
- 원본 SAS 파일 보존, 적재 테이블과 정제 테이블 분리, 연월 단위 재시작 구조
- 손상 파일 대상 일반 읽기·청크 읽기·인코딩 변경의 단계별 폴백
성능/운영 포인트
- 적재 완료 후 조인 키·필터 키 중심의 색인 일괄 생성과 EXPLAIN QUERY PLAN 검증
- 적재·조회와 대형 색인 생성 단계별 SQLite PRAGMA 분리
- WAL, 캐시 크기, temp_store 조정과 정제 규칙 재실행 가능한 적재 원본 보존
주의할 점
- 청크 읽기의 손상 레코드 건너뜀에 따른 유실 행 로그와 완료 연월 별도 기록 필요
- 조인 전후 행 수 비교로 기관 이력 테이블의 팬아웃 검증
- 윈도 함수 미지원 환경의 MAX 기반 대표 행 선택 시 최신 시점 동률 여부 점검






