- บทความเกี่ยวกับอนาคตของ SQLite ที่ตีพิมพ์ใน PVLDB Vol 15
- SQLite ถูกออกแบบมาสำหรับ OLTP แต่ช่วงหลังความต้องการด้าน OLAP เพิ่มขึ้นจาก edge computing และ data science
- DuckDB ที่มีประสิทธิภาพโดดเด่นด้าน OLAP ถูกเรียกว่า "SQLite for Analytics"
- สรุปการเปรียบเทียบประสิทธิภาพของ SQLite และ DuckDB และการปรับปรุงการประมวลผลข้อมูลเชิงวิเคราะห์จากผลดังกล่าวจนทำให้ SSB เร็วขึ้น 4.2x
- รายละเอียดการทำ benchmark
- ในธุรกรรมการเขียน SQLite เร็วกว่า DuckDB 10x-500x
- ใน benchmark เชิงวิเคราะห์ (Star Schema Benchmark, SSB) DuckDB เร็วกว่า SQLite 30-50x
- จะยังคงปรับปรุงต่อไป แต่เนื่องจากจุดประสงค์ตั้งต้นต่างกัน จึงยากที่จะทำให้ได้ประสิทธิภาพเทียบเท่ากัน
- ด้วยวิธีแยกต่างหาก SQLite3/HE ทำประสิทธิภาพได้ 100x ใน SSB โดยไม่ทำให้ประสิทธิภาพ OLTP ลดลง
- ความพยายามเหล่านี้จะช่วยปรับปรุงประสิทธิภาพของเอนจินและเพิ่มการทำ optimization
2 ความคิดเห็น
บทความนี้มีหลายประเด็น แต่ผมสงสัยเป็นพิเศษว่าพวกเขาปรับปรุงส่วนที่ช่วยให้ผล benchmark ที่เกี่ยวข้องดีขึ้นด้วยการพัฒนา OLAP processing อย่างไร จึงลองไปอ่านต้นฉบับอยู่ครู่หนึ่ง
สรุปแล้ว เนื้อหาของการปรับปรุงดังกล่าวคือการนำ Bloom filter มาใช้เพื่อปรับปรุงการประมวลผล join ของ query ที่ใช้ในการวิเคราะห์ข้อมูล
จากการทำ profiling กับ query ที่ใช้ใน OLAP benchmark ของ SQLite พบว่ามีการไล่ค้นโครงสร้างข้อมูล B-tree แม้กระทั่งในส่วนที่ท้ายที่สุดแล้วไม่ได้รวมอยู่ในผลลัพธ์จริงเลย ดังนั้นสาระสำคัญของการปรับปรุงนี้คือการเพิ่ม Bloom filter ซึ่งเป็นโครงสร้างข้อมูลเชิงความน่าจะเป็นที่สามารถยืนยันได้แน่ชัดว่าองค์ประกอบบางอย่าง “ไม่มีอยู่” เพื่อคัดส่วนที่ไม่ถูกรวมในผลลัพธ์สุดท้ายออกล่วงหน้าและจัดการได้อย่างมีประสิทธิภาพ
ขอแนะนำบทความเกี่ยวกับ Bloom filter สักเล็กน้อย ณ จุดนี้
และช่วงนี้ก็บอกกันว่ามีสิ่งที่เรียกว่า Xor Filter ออกมาด้วย
บันทึกเกี่ยวกับบทความ SQLite DuckDB
DuckDB - โอเพนซอร์ส Embedded OLAP DB