열 지향 저장 포맷
구조
- 파일: Parquet는 여러 Row Group으로 구성됨
- Row Group
- 행단위로 데이터를 묶은 그룹
- 각 Row Group은 Column Chunk로 나뉨
- 메타 데이터에 Row Group 범위 정보와 통계가 저장됨
- Column Chunk
- 하나의 열에 해당하는 데이터를 저장함
- 동일한 열의 데이터만 저장되므로 압축과 접근 효율이 좋아짐
- Page
- Column Chunk는 더 작은 단위인 Page로 나뉨
- 데이터 페이지와 메타데이터 페이지가 포함됨
- Page Header와 Page Body로 나뉨
- Parquet 버전에 따라 두가지 형식이 있음
- v1: Definition Levels, Repetition Levels, Encoded Values를 순서대로 저장
- v2: Definition Levels, Repetition Levels를 압축된 상태로 저장
- Repetition Levels
- 중첩 구조에서 데이터가 어떻게 반복되거나 중첩되어 있는지 나타냄
- 중첩된 구조에서 반복 요소가 몇번째 반복에 해당하는지 표현
쿼리 성능 최적화
- Predicate Pushdown: row group의 메타데이터를 읽고 필터 조건에 해당하지 않는 데이터는 읽지 않음
- Column Prunning: 필요한 열만 로드함