대용량 파일(100만 행+) 비교 시 주의사항
2025년 3월 25일
데이터 분석, 마이그레이션 검증, 로그 분석 등의 업무에서 100만 행이 넘는 대용량 파일을 비교해야 하는 상황은 점점 늘어나고 있습니다. 하지만 일반적인 비교 방법으로는 이런 규모의 데이터를 처리하기 어렵습니다.
이 글에서는 대용량 파일 비교 시 발생하는 주요 문제와 효과적인 해결 방법을 안내합니다.
메모리 부족 문제
가장 흔한 문제는 메모리 부족입니다. 100만 행 × 20열의 CSV 파일은 메모리에 로드하면 수백 MB에서 수 GB까지 차지할 수 있습니다. 두 파일을 동시에 메모리에 올리면 그 두 배가 필요합니다.
일반적인 데스크톱 앱이나 엑셀은 이 정도 크기의 파일을 열지 못하거나, 열더라도 극도로 느려집니다. DiffMate는 Web Worker와 가상 스크롤 기술을 사용하여 브라우저에서도 대용량 파일을 안정적으로 처리합니다.
비교 알고리즘 성능
파일 비교의 핵심은 diff 알고리즘입니다. 단순 비교 알고리즘의 시간 복잡도는 O(n²)으로, 행 수가 두 배가 되면 처리 시간은 네 배가 됩니다. 100만 행에서는 이 방식이 실질적으로 불가능합니다.
효율적인 비교를 위해서는 해시 기반 매칭, 블록 단위 비교, 또는 최적화된 LCS(Longest Common Subsequence) 알고리즘을 사용해야 합니다.
파일 포맷별 주의사항
CSV 파일의 경우, 구분자(쉼표, 탭, 세미콜론 등)가 일관되는지 확인하세요. 대용량 CSV에서 중간에 구분자가 바뀌면 이후 모든 데이터가 잘못 파싱됩니다.
엑셀 파일의 경우, .xlsx 형식은 내부적으로 XML 기반이므로 파싱에 시간이 걸립니다. 가능하다면 비교 전에 CSV로 변환하는 것이 속도 면에서 유리합니다.
텍스트 파일의 경우, 줄바꿈 문자(LF vs CRLF)의 차이가 불필요한 변경으로 인식될 수 있습니다. 비교 전에 줄바꿈 형식을 통일하는 것을 권장합니다.
인코딩 문제
대용량 파일에서 인코딩 문제가 발생하면 영향 범위가 매우 큽니다. 파일 시작 부분의 BOM(Byte Order Mark)을 확인하고, 전체 파일의 인코딩이 일관되는지 미리 검증하세요.
특히 여러 소스에서 합친 파일의 경우, 중간에 인코딩이 바뀌는 경우가 있어 주의가 필요합니다.
비교 전 데이터 전처리
대용량 파일 비교의 정확도를 높이려면 전처리가 중요합니다.
- 앞뒤 공백 제거 (TRIM)
- 대소문자 통일 (필요한 경우)
- 날짜 형식 통일 (YYYY-MM-DD)
- 숫자 형식 통일 (소수점 자릿수, 천 단위 구분자)
- 빈 행/열 제거
결과 확인 시 팁
100만 행의 비교 결과를 처음부터 끝까지 눈으로 확인하는 것은 불가능합니다. 효과적인 확인 방법은 다음과 같습니다.
- 변경된 행만 필터링하여 확인
- 통계 요약 먼저 확인 (추가/삭제/변경 각각 몇 행인지)
- 미니맵을 활용하여 변경이 집중된 영역 파악
- 샘플링 검증 (무작위로 일부를 선택하여 정확성 확인)
결론
대용량 파일 비교는 적절한 도구와 전처리만 있으면 충분히 실현 가능합니다. DiffMate는 Web Worker 엔진을 사용하여 100만 행 이상의 파일도 브라우저에서 안정적으로 비교할 수 있습니다. 서버 업로드 없이 로컬에서 처리되므로 보안도 안전합니다.