- ไลบรารีอิมพลีเมนเตชัน C ล้วนระดับพร้อมใช้งานจริงในโปรดักชัน ที่พัฒนาขึ้นเพื่อ รองรับฟอร์แมต Apache Parquet ได้โดยตรงในสภาพแวดล้อม C
- เขียนบนพื้นฐานของ มาตรฐาน C11 ทำงานได้โดย ไม่ต้องใช้ C++ runtime หรือการจัดการ exception และมี zstd กับ zlib เป็น dependency ภายนอกเท่านั้น
- เหมาะสำหรับ การประมวลผลข้อมูลในสภาพแวดล้อมที่มีข้อจำกัด เช่น embedded systems, IoT, microcontrollers และระบบ legacy
- ขนาดไบนารีประมาณ 200KB เล็กและเบากว่า Apache Arrow โดยมี ขนาดบิลด์เล็กกว่ามากกว่า 50MB
- รองรับหลายสถาปัตยกรรมด้วย การปรับแต่ง SIMD (SSE4.2, AVX2, AVX-512, NEON, SVE) และ ฟังก์ชันตรวจจับอัตโนมัติขณะรันไทม์
- รองรับ ทุก physical type (BOOLEAN, INT32, DOUBLE เป็นต้น) และ encoding กับ compression codec หลากหลาย (ZSTD, LZ4, SNAPPY, GZIP)
- รองรับการจัดการลำดับไบต์อย่างถูกต้องบนระบบ Big-Endian (เช่น s390x, SPARC, PowerPC)
- มีความสามารถระดับโปรดักชัน เช่น nullable columns, nested schema พื้นฐาน, การตรวจสอบหน้าเพจด้วย CRC32, column statistics, memory-mapped I/O, การอ่านแบบขนานด้วย OpenMP
- ใช้ streaming API เพื่อจัดการไฟล์ขนาดใหญ่ได้โดยไม่ต้องโหลดทั้งไฟล์เข้าหน่วยความจำ
- เข้ากันได้กับ PyArrow อย่างสมบูรณ์ และรองรับการอ่าน-เขียนข้ามกันกับสภาพแวดล้อม Python
- เมื่อเทียบกับ Apache Arrow
- ความเร็วในการเขียนบนสภาพแวดล้อม ARM เร็วกว่า 1.5~5 เท่า และความเร็วในการอ่านก็ดีขึ้นได้สูงสุด 1.3 เท่า
- บนสภาพแวดล้อม x86 ความเร็วในการอ่านช้ากว่าเล็กน้อย แต่ ขนาดไฟล์เล็กกว่าประมาณ 1.4 เท่า
- จุดแข็งหลักคือ dependency น้อย, การบิลด์เรียบง่าย, และการผสานรวมกับสภาพแวดล้อมที่ใช้ C โดยเฉพาะได้ดี
- ยังไม่รองรับ nested types ที่ซับซ้อน, การเข้ารหัส, และการคลาย ZSTD แบบมัลติเธรด
- ผ่านการทดสอบความเข้ากันได้ร่วมกับ PyArrow, DuckDB, fastparquet แล้ว
- Spark, DuckDB สามารถอ่านไฟล์ที่สร้างโดย Carquet ได้โดยตรง
- รองรับ Linux, macOS, Windows และระบบ POSIX
- สัญญาอนุญาต MIT
ยังไม่มีความคิดเห็น