# Carquet - Parquet 파일을 읽고 쓰기 위한 고성능 순수 C 라이브러리

> Clean Markdown view of GeekNews topic #25891. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25891](https://news.hada.io/topic?id=25891)
- GeekNews Markdown: [https://news.hada.io/topic/25891.md](https://news.hada.io/topic/25891.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-01-17T09:31:02+09:00
- Updated: 2026-01-17T09:31:02+09:00
- Original source: [github.com/Vitruves](https://github.com/Vitruves/carquet)
- Points: 9
- Comments: 0

## Summary

**Carquet**은 Apache Parquet 포맷을 **순수 C11 환경에서 직접 읽고 쓰기 위한 고성능 라이브러리**입니다. C++ 런타임 없이 동작하며 zstd·zlib만 의존해, 임베디드나 IoT처럼 제약된 환경에서도 안정적으로 사용할 수 있습니다. 약 200KB의 작은 바이너리와 SIMD 기반 최적화로 ARM·x86 등 다양한 아키텍처에서 효율적인 성능을 보이며, PyArrow와 완전 호환되어 기존 데이터 파이프라인에도 손쉽게 통합됩니다.

## Topic Body

- Apache Parquet 포맷을 **C 환경에서 직접 지원**하기 위해 개발된 **프로덕션 수준의 순수 C 구현체** 라이브러리  
- **C11 표준 기반**으로 작성되어, **C++ 런타임이나 예외 처리 없이** 동작하며 **zstd와 zlib만 외부 의존성**으로 사용  
- 임베디드 시스템, IoT, 마이크로컨트롤러, 레거시 환경 등 **제약된 환경에서의 데이터 처리**에 적합  
- **바이너리 크기 약 200KB**로, Apache Arrow 대비 **50MB 이상 작고 경량화된 빌드**  
- **SIMD 최적화(SSE4.2, AVX2, AVX-512, NEON, SVE)** 및 **런타임 자동 감지 기능**으로 다양한 아키텍처 지원  
- **모든 물리 타입(BOOLEAN, INT32, DOUBLE 등)** 과 **다양한 인코딩 및 압축 코덱(ZSTD, LZ4, SNAPPY, GZIP)** 지원  
- Big-Endian 시스템(s390x, SPARC, PowerPC 등) 에서도 올바른 바이트 순서 처리 지원  
- **Nullable 컬럼, 기본 중첩 스키마, CRC32 페이지 검증, 컬럼 통계, 메모리 매핑 I/O, OpenMP 병렬 읽기** 등 프로덕션 기능 포함  
- **스트리밍 API**로 대용량 파일을 메모리 전체 로드 없이 처리 가능  
- **PyArrow와 완전 호환**, Python 환경과 상호 읽기·쓰기 지원  
- **Apache Arrow와 비교 시**  
  - **ARM 환경에서 쓰기 속도 1.5~5배 빠름**, 읽기 속도도 최대 1.3배 향상  
  - **x86 환경에서는 읽기 속도 다소 느리지만**, **파일 크기 약 1.4배 더 작음**  
  - **의존성 최소화, 빌드 단순화, C 전용 환경 통합성**이 주요 강점  
  - **복잡한 중첩 타입, 암호화, 멀티스레드 ZSTD 해제**는 미지원  
- **PyArrow, DuckDB, fastparquet**와 상호 테스트 검증 완료  
- **Spark, DuckDB**에서도 Carquet 생성 파일 직접 읽기 가능  
- **Linux, macOS, Windows, POSIX 시스템** 지원  
- MIT 라이선스

## Comments



_No public comments on this page._
