Vortex
고성능 Columnar 파일 포맷
WARNING |
아직 활발히 개발 진행 중임 |
About
- "The LLVM of columnar file formats"
- 압축된 Apache Arrow 배열을 메모리, 디스크, 네트워크를 통해 다루기 위한 툴킷을 포함한 Columnar 형식 파일 포맷
- Apache Parquet의 야심찬 후계자로, 100-200배 빠른 랜덤 액세스 읽기와 2-10배 빠른 스캔을 지원하면서도 zstd를 사용한 Parquet과 거의 동일한 압축률과 쓰기 처리량을 유지함
- 매우 큰 테이블(수만개의 컬럼)과 GPU 상에서의 압축 해제도 지원
- 즉, 높은 확장성, 매우 빠른 속도, 배터리 포함 기능이 특징
주요 기능
-
- Logical Types - 물리적 레이아웃에 대해 어떤 가정도 하지 않는 스키마 정의
- Zero-Copy to Arrow - 정규화(canonicalized)된 Vortex 배열은 Apache Arrow 배열과 제로 카피 변환이 가능함
- Extensible Encodings - 플러그인 방식의 물리적 레이아웃 집합. Arrow 호환 인코딩 외에도 최신 인코딩(FastLanes, ALP, FSST 등)을 확장으로 제공
- Cascading Compression - 데이터를 여러 중첩된 인코딩으로 재귀적 압축 가능
- Pluggable Compression Strategies - 내장 Compressor는 BtrBlocks 기반이지만, 다른 전략도 쉽게 사용 가능
- Compute - 인코딩된 데이터에서 동작하는 기본 계산 커널(예: 필터 푸시다운)
- Statistics - 각 배열은 읽기 시점에 선택적으로 계산되는 요약 통계를 가지고 있음. 계산 커널과 압축기에서 사용 가능
- Serialization - IPC와 파일 포맷을 위한 배열의 제로 카피 직렬화
- Columnar File Format (진행 중) - Vortex serde 라이브러리를 사용해 압축된 배열 데이터를 저장하는 현대적 파일 포맷. 랜덤 액세스 읽기와 매우 빠른 스캔에 최적화됨. Apache Parquet의 후속을 목표로 함