• ไลบรารีอิมพลีเมนเตชัน 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น