데이터 엔지니어링에서 "느리다"와 "비싸다"는 대부분 같은 원인에서 나온다 — 불필요하게 많은 데이터를 읽기 때문이다. Athena, Redshift Spectrum, EMR, Glue는 모두 S3에서 읽은 데이터 양에 비례해 시간과 돈을 쓴다. 따라서 최적화의 본질은 단순하다: 읽어야 할 데이터를 최소화하라. 오늘은 그 네 가지 무기 — 파일 포맷, 압축, 파티셔닝, 파일 크기 — 를 다룬다. DEA-C01에서 가장 출제 빈도가 높은 영역 중 하나다.
파일 포맷은 크게 두 부류다.
| 분류 | 포맷 | 저장 방식 |
|---|---|---|
| 행 기반(row) | CSV, JSON, Avro | 한 행의 모든 컬럼을 연속 저장 |
| 열 기반(columnar) | Parquet, ORC | 같은 컬럼의 값들을 연속 저장 |
분석 쿼리는 보통 "수백 컬럼 중 몇 개"만 본다. SELECT region, SUM(amount)는 region과 amount 두 컬럼만 필요하다. 행 기반 포맷은 한 행을 통째로 저장하므로, 두 컬럼만 원해도 모든 컬럼을 읽어야 한다. 반면 열 기반(Parquet/ORC)은 필요한 컬럼만 골라 읽는다(column pruning). 100개 컬럼 중 2개만 읽으면 I/O가 50배 줄 수 있다.