30 คะแนน โดย xguru 2024-06-13 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • DuckDB เป็นฐานข้อมูล SQL แบบไฟล์เดียวที่ออกแบบมาสำหรับงานวิเคราะห์ข้อมูลโดยเฉพาะ
    • การประเมิน DuckDB ส่วนใหญ่มักเน้นไปที่การวิเคราะห์เชิงปริมาณ
    • โดยเฉพาะในด้านความเร็ว DuckDB มักทำผลงานได้ดีโดยทั่วไป
  • แต่ในมุมของผู้ใช้ เมื่อประสิทธิภาพไปถึงระดับที่น่าพอใจแล้ว การเพิ่มความเร็วต่อจากนั้นก็ไม่ได้มีความหมายมากนัก
    • สิ่งที่สำคัญกว่าคือความง่ายในการใช้งาน ซึ่ง DuckDB มีจุดเด่นในด้านนี้
  • ข้อดีด้านความง่ายในการใช้งานของ DuckDB:
    1. ประสบการณ์นักพัฒนา
    2. รองรับการประมวลผลชุดข้อมูลที่มีขนาดใหญ่กว่าหน่วยความจำ
    3. ติดตั้งและรันได้ง่าย

การยศาสตร์ในการใช้งาน (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 ความคิดเห็น

 
cometkim 2024-06-13

ParadeDB เพิ่งเพิ่มทางเลือกที่ดีเข้ามาเมื่อไม่นานนี้ https://blog.paradedb.com/pages/introducing_lakehouse

 
silveris23 2024-06-13

โดยเฉพาะเวลาทำแดชบอร์ดแบบอินเทอร์แอ็กทีฟง่าย ๆ ด้วย streamlit เป็นต้น นี่เหมาะมากครับ

 
brainer 2024-06-13

น่าจะย้ายมาจาก Huggingface Datasets ได้ไหม?

 
hackerwins 2024-06-13

DuckDB ไม่ได้มีดีแค่ความเร็วเท่านั้น

ผมกำลังทดลองสร้างสเปรดชีตโดยอิงจาก DuckDB อยู่ และรู้สึกคาดหวังกับ DuckDB มากครับ