피드로 돌아가기
Dev.toDatabase
원문 읽기
Columnar Storage 기반 Disk I/O 최소화 및 쿼리 최적화 구현
What is Apache Parquet? Columns, Encoding, and Performance
AI 요약
Context
Petabyte 규모 데이터 처리 시 Row-based 저장 방식인 CSV의 전수 읽기 구조로 인한 심각한 병목 현상 발생. 불필요한 컬럼까지 모두 로드하는 I/O 낭비와 이로 인한 연산 비용 상승 문제 직면.
Technical Solution
- Table을 Row Group(128MB~1GB) 단위로 수평 분할하고 내부에 Column Chunk를 배치하는 Columnar Architecture 설계
- 필요한 컬럼만 선택적으로 읽는 Column Pruning을 통한 Disk I/O 획기적 감축
- 저카디널리티 데이터에 정수 매핑을 적용하는 Dictionary Encoding으로 저장 공간 최적화
- 동일 타입 데이터의 인접 배치를 통한 Snappy, Zstd 등 압축 알고리즘의 효율성 극대화
- 파일 Footer에 Min/Max/Null 통계 메타데이터를 저장하여 불필요한 Row Group을 제외하는 Predicate Pushdown 구현
실천 포인트
- 대규모 분석 쿼리가 주를 이루는 Workload의 경우 Row-based 대신 Columnar 포맷 검토 - 데이터의 카디널리티를 분석하여 Dictionary Encoding 적용 가능 여부 확인 - 쿼리 필터 조건을 최적화하여 Predicate Pushdown 및 Row Group Skipping 효율 극대화 - Immutable한 파일 특성을 보완하기 위해 Apache Iceberg와 같은 Table Format 계층 도입 고려