- DuckDB เป็นฐานข้อมูล SQL แบบไฟล์เดียวที่ออกแบบมาสำหรับงานวิเคราะห์ข้อมูลโดยเฉพาะ
- การประเมิน DuckDB ส่วนใหญ่มักเน้นไปที่การวิเคราะห์เชิงปริมาณ
- โดยเฉพาะในด้านความเร็ว DuckDB มักทำผลงานได้ดีโดยทั่วไป
- แต่ในมุมของผู้ใช้ เมื่อประสิทธิภาพไปถึงระดับที่น่าพอใจแล้ว การเพิ่มความเร็วต่อจากนั้นก็ไม่ได้มีความหมายมากนัก
- สิ่งที่สำคัญกว่าคือความง่ายในการใช้งาน ซึ่ง DuckDB มีจุดเด่นในด้านนี้
- ข้อดีด้านความง่ายในการใช้งานของ DuckDB:
- ประสบการณ์นักพัฒนา
- รองรับการประมวลผลชุดข้อมูลที่มีขนาดใหญ่กว่าหน่วยความจำ
- ติดตั้งและรันได้ง่าย
การยศาสตร์ในการใช้งาน (Ergonomics)
- DuckDB ถูกออกแบบมาให้จัดการงานทั่วไปได้อย่างง่ายดาย
- ตัวอย่างเช่น สามารถสร้างตารางจากไฟล์อินพุตได้โดยตรงและอนุมานสคีมาได้
- สำหรับไฟล์ Parquet ยังสามารถอ่านไฟล์บนเว็บได้ด้วย
- สามารถคิวรีข้อมูลได้โดยไม่ต้องสร้างตารางล่วงหน้า
- ฟังก์ชัน
read_parquet จะคืนค่า relation จึงสามารถใช้เป็นซับคิวรีได้
- DuckDB รองรับฟีเจอร์ SQL ส่วนใหญ่ที่ใช้ใน Postgres
- ตัวอย่างเช่น รองรับ window function อย่างสมบูรณ์
รองรับชุดข้อมูลที่ใหญ่กว่าหน่วยความจำ
- เครื่องมือข้อมูลจำนวนมากทำงานได้ไม่ดีเมื่อชุดข้อมูลมีขนาดใหญ่กว่าหน่วยความจำของเครื่อง
- นี่อาจเป็นแหล่งความเจ็บปวดที่มักถูกมองข้าม
- ในทางกลับกัน DuckDB รองรับชุดข้อมูลที่ใหญ่กว่าหน่วยความจำได้อย่างเต็มรูปแบบ
- ในกรณีของ Pandas อาจเริ่มมีปัญหาเมื่อ DataFrame มีขนาดเกิน 50% ของหน่วยความจำระบบ
ติดตั้งและรันได้ง่าย
- DuckDB ถูกคอมไพล์เป็นไฟล์รันเดี่ยว
duckdb
- สามารถลองใช้ DuckDB ได้โดยตรงในเบราว์เซอร์ผ่าน WASM (shell.duckdb.org)
- เนื่องจากเป็น WASM ทุกอย่างจึงทำงานในเบราว์เซอร์ ไม่ใช่บนเซิร์ฟเวอร์
- ใช้ DuckDB เหมือนเป็นไลบรารี DataFrame
- DuckDB ผสานการทำงานกับ Python ได้ดี
- สามารถรันคิวรีภายใน Python และนำค่าที่ส่งกลับไปใช้งานต่อได้
- ทำให้สามารถค่อย ๆ สร้างการประมวลผลข้อมูลที่ใหญ่ขึ้นเป็นลำดับขั้นได้
- ได้ทั้งข้อดีของ SQL และข้อดีของ DataFrame
การจัดเก็บข้อมูลผ่าน csvbase
- ไลบรารีไคลเอนต์ของ csvbase สามารถเชื่อมต่อกับระบบต่าง ๆ ได้ผ่าน fsspec API
- DuckDB ก็สามารถใช้งานร่วมกับ csvbase ได้เช่นกัน
การขยายขนาด (Scalability)
- DuckDB ไม่ได้ขยายไปได้ถึงระดับหลายพันเครื่อง
- ในทางกลับกัน Apache Spark ทำได้ แต่ก็มาพร้อมความซับซ้อนพอสมควร
- ความสามารถในการสเกลลง (Scaling down) ก็สำคัญเช่นกัน
- DuckDB ทำงานได้ในระดับผู้ใช้รายบุคคลและไม่ได้ต้องการทรัพยากรมาก
สรุป
- DuckDB อาจเป็นตัวเลือกที่น่าสนใจสำหรับนักวิเคราะห์ข้อมูลที่รู้จัก SQL
- มันจัดการข้อมูลที่ใหญ่กว่าหน่วยความจำได้ ติดตั้งง่าย และในหลายกรณีก็เป็นทางเลือกที่ดีแทน Spark ได้
5 ความคิดเห็น
ParadeDB เพิ่งเพิ่มทางเลือกที่ดีเข้ามาเมื่อไม่นานนี้ https://blog.paradedb.com/pages/introducing_lakehouse
โดยเฉพาะเวลาทำแดชบอร์ดแบบอินเทอร์แอ็กทีฟง่าย ๆ ด้วย streamlit เป็นต้น นี่เหมาะมากครับ
น่าจะย้ายมาจาก Huggingface Datasets ได้ไหม?
DuckDB ไม่ได้มีดีแค่ความเร็วเท่านั้น
ผมกำลังทดลองสร้างสเปรดชีตโดยอิงจาก DuckDB อยู่ และรู้สึกคาดหวังกับ DuckDB มากครับ
DuckDB - โอเพนซอร์ส Embedded OLAP DB
DuckDB ที่เป็นฐานข้อมูลได้แม้ไม่มีข้อมูล
DuckDB ในฐานะ jq แบบใหม่
DuckDB 1.0.0 เปิดตัว