• ฟอร์แมตการซีเรียลไลซ์แบบไบนารี Zero-Copy ที่พัฒนาขึ้นเพื่อ ลบเส้นแบ่งระหว่างการพาร์สข้อมูลและการซีเรียลไลซ์
  • เข้ารหัสข้อมูลด้วย โครงสร้าง B-tree ภายในบัฟเฟอร์ต่อเนื่องเพียงก้อนเดียว ทำให้เข้าถึงและแก้ไขฟิลด์ตามต้องการได้ในเวลา O(log n)
  • ฟอร์แมตในหน่วยความจำทำงานเป็นฟอร์แมตสำหรับส่งข้อมูลได้โดยตรง จึงสามารถรับส่งได้ทันทีโดยไม่ต้องมีขั้นตอนพาร์สหรือซีเรียลไลซ์ซ้ำ
    • ทันทีที่รับข้อมูล ก็สามารถค้นหาคีย์ แก้ไขค่า และส่งต่อได้ทั้งหมดด้วยเพียง การคัดลอกหน่วยความจำ (memcpy)
  • เป็นโครงสร้างแบบ ไม่มีสคีมา (self-describing) จึงใช้งานได้โดยไม่ต้องมี IDL หรือการกำหนดสคีมา
    • รองรับการแปลงไปมาระหว่าง JSON ทำให้เข้ากันได้กับ API และชุดข้อมูลเดิม
    • สามารถแสดงผลเป็น JSON ได้เมื่อดีบักหรือตรวจสอบข้อความ
  • ออกแบบโดยเน้นประสิทธิภาพ
    • ใช้โครงสร้าง B-tree ที่เป็นมิตรกับแคช และมี อิมพลีเมนต์ C ขนาดเล็กเพียง 9.3 kB
    • เร็วได้สูงสุด 120 เท่า เมื่อเทียบกับไลบรารี JSON ที่เร็วที่สุดซึ่งใช้ SIMD และ เร็วได้สูงสุด 242 เท่า เมื่อเทียบกับ Google Flatbuffers
    • เป็นหนึ่งใน ฟอร์แมตข้อมูลแบบไม่มีสคีมาที่เร็วที่สุดในโลก
  • คุณลักษณะทางเทคนิค
    • รองรับ การอ่าน/เขียนแบบ zero-copy โดยการทำงาน I/O ทั้งหมดมีความซับซ้อน O(log n)
    • มี การตรวจสอบพอยน์เตอร์และความปลอดภัยของชนิดข้อมูลขณะรันไทม์ ในตัว
    • ไม่ใช้ malloc() โดยผู้เรียกเป็นผู้จัดเตรียมบัฟเฟอร์เอง
    • มี latency ที่คาดการณ์ได้ และ ใช้หน่วยความจำต่ำ
    • พัฒนาบนพื้นฐาน C11 (ไวยากรณ์ GNU C) และไม่มี dependency ภายนอก
    • สามารถใช้ yyjson เป็น sub-dependency แบบเลือกได้เพื่อรองรับการแปลง JSON
  • องค์ประกอบของ API
    • Buffer API: ทำงานบนบัฟเฟอร์ที่ผู้ใช้จัดเตรียมเอง เพื่อการควบคุมหน่วยความจำสูงสุด
    • Context API: ซ่อนรายละเอียดการจัดการหน่วยความจำ และมีอินเทอร์เฟซที่ใช้งานง่าย
  • ผลการเปรียบเทียบและเบนช์มาร์ก
    • มี ความเร็วในการประมวลผลเหนือกว่าอย่างมาก เมื่อเทียบกับฟอร์แมตข้อความอย่าง JSON, BSON, MessagePack
    • ให้ ความยืดหยุ่นและความสามารถในการแก้ไขที่สูงกว่า ฟอร์แมตไบนารีอย่าง Cap’n Proto และ Flatbuffers
    • ทำผลงาน ระดับแนวหน้า ในการทดสอบกับข้อมูล Twitter API จริง, Kostya JSON, เบนช์มาร์กการซีเรียลไลซ์ C++ และอื่น ๆ
  • การออกแบบด้านความปลอดภัย
    • มี การตรวจสอบขอบเขตเพื่อป้องกัน overflow, pointer macro แบบแยกตาม generation, การจำกัด recursion, และ การตรวจสอบชนิดข้อมูลขณะรันไทม์
    • เหมาะกับการจัดการข้อมูลนำเข้าที่ไม่น่าเชื่อถือ
  • บริบทการใช้งาน
    • ช่วย เพิ่มประสิทธิภาพการใช้ CPU สูงสุด ในงานอย่างการส่งข้อความผ่านเครือข่ายประสิทธิภาพสูง การประมวลผลข้อมูลแบบเรียลไทม์ และสภาพแวดล้อมแบบฝังตัว
    • นำไปใช้ได้ทันทีใน ระบบที่ใช้ C interface
  • ไลเซนส์และการขยายต่อ
    • เผยแพร่ภายใต้ MIT License และเป็นอิมพลีเมนต์ C แบบอิสระ
    • ในอนาคตมีโรดแมปเพิ่มเติม เช่น language binding, เบนช์มาร์กการบีบอัด, และการจัดทำสเปกอย่างเป็นทางการ
  • ที่มาและพื้นหลัง
    • เป็น โปรเจ็กต์ที่นำแนวคิดจากงานวิจัย Lite² ที่เผยแพร่ในปี 2024 มาสร้างใหม่อย่างอิสระ
    • ชื่อ Lite³ สื่อความหมายว่าเบากว่า Lite²

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

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