13 คะแนน โดย GN⁺ 2025-04-25 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Instant SQL เป็นเครื่องมือที่ช่วย พรีวิวผลลัพธ์แบบเรียลไทม์ ระหว่างเขียน SQL เพื่อเร่งการเขียนคิวรีและการดีบัก
  • สามารถแยกและวิเคราะห์ CTE หรือสูตรคอลัมน์ที่ซับซ้อนได้อย่างง่ายดาย และยัง พรีวิวข้อเสนอการแก้ไขจาก AI ได้ทันที ทำให้การเขียนและแก้ไขคิวรีมีประสิทธิภาพยิ่งขึ้น
  • ใช้งานได้ใน MotherDuck และ DuckDB Local UI และสามารถสำรวจแหล่งข้อมูลภายนอกหลากหลายแบบเรียลไทม์บนพื้นฐานของ DuckDB
  • สิ่งนี้เกิดขึ้นได้จากการผสานเทคโนโลยีขั้นสูง เช่น การออกแบบแบบ local-first ของ DuckDB, การปรับแต่งประสิทธิภาพ, กลยุทธ์แคช และการแมปเคอร์เซอร์บนพื้นฐาน AST
  • MotherDuck เป็นบริการคลาวด์ DuckDB แบบจัดการที่มีเครื่องมือหลากหลายสำหรับการวิเคราะห์ข้อมูล

แนะนำ Instant SQL

  • Instant SQL เป็นฟีเจอร์ใหม่ที่อัปเดต ผลลัพธ์ของคิวรี SQL แบบเรียลไทม์ทันทีที่พิมพ์
  • ไม่ต้องกดปุ่มรันแยกต่างหาก และสามารถพรีวิวผลลัพธ์ได้ด้วย เวลาแฝงเป็นศูนย์ (zero-latency)
  • ขณะนี้ใช้งานได้บนแพลตฟอร์ม MotherDuck และ DuckDB Local UI

ทำไมต้องมี Instant SQL

  • การเขียน SQL ไม่ได้มีหัวใจอยู่ที่ไวยากรณ์ แต่คือ กระบวนการทำความเข้าใจข้อมูลและตั้งคำถาม
  • ก่อนหน้านี้จำเป็นต้องทำซ้ำขั้นตอนที่ช้า เช่น เขียนคิวรีในตัวแก้ไขข้อความ กดปุ่มรัน แล้วรอผลลัพธ์
  • Instant SQL เปลี่ยนกระบวนการนี้ให้กลายเป็นการสำรวจที่ ทันทีและเป็นธรรมชาติ

ความสามารถหลัก

  • พรีวิวผลลัพธ์แบบเรียลไทม์ระหว่างเขียน

    • ทุกครั้งที่พิมพ์ SQL พรีวิวชุดผลลัพธ์ จะอัปเดตแบบเรียลไทม์
    • ตั้งแต่การแปลงข้อมูลแบบง่ายไปจนถึงการสรุปผลที่ซับซ้อน ก็สามารถ สำรวจข้อมูล ได้อย่างต่อเนื่องไม่สะดุด
  • ดีบัก CTE (Common Table Expression) แบบเรียลไทม์

    • คลิกที่ CTE เพื่อ แสดงผลได้ทันที
    • การแก้ไขจะสะท้อนไปยังโหนดที่พึ่งพาทั้งหมดทันที ทำให้การดีบัก CTE ง่ายมาก
  • แยกสูตรคอลัมน์ที่ซับซ้อน

    • สามารถ แยกสูตรจากตารางผลลัพธ์ เพื่อค้นหาข้อผิดพลาดของสูตรคอลัมน์ได้อย่างรวดเร็ว
    • ทำให้ ระบุได้ทันที ว่าเป็นปัญหาที่ตรรกะของสูตรหรือที่ข้อมูล
  • รองรับแหล่งข้อมูลหลากหลาย

    • สามารถ พรีวิว ได้กับทุกแหล่งข้อมูลที่ DuckDB รองรับ (ตาราง DuckDB, ไฟล์ parquet บน S3, Postgres, SQLite, MySQL, Iceberg, Delta ฯลฯ)
    • ทำให้การสร้างโมเดลและสำรวจข้อมูลภายนอก รวดเร็วมาก
  • ตรวจสอบคิวรีอย่างรวดเร็วก่อนรันจริง

    • ปรับแต่งคิวรีผ่านพรีวิวจนพอใจแล้วจึง รันจริงขั้นสุดท้าย ได้
    • ช่วย ย่นวงจร เขียน SQL-รัน-รอ ได้อย่างมาก
  • ผสานกับความสามารถของ AI

    • เมื่อป้อน คำสั่งภาษาธรรมชาติ ให้กับข้อความที่เลือกไว้ AI จะเสนอการแก้ไขให้
    • สามารถ พรีวิวผลลัพธ์ของข้อเสนอได้ทันที จึงยอมรับการแก้ไขได้โดยลดความเสี่ยงจากความผิดพลาด

ทำให้เป็นไปได้อย่างไร

  • เทคโนโลยีรันคิวรีที่มีเวลาแฝงต่ำมาก

    • ด้วย การออกแบบแบบ local-first ของ DuckDB จึงได้ผลลัพธ์ที่รวดเร็วโดยตรงบนเครื่องพีซี
    • สถาปัตยกรรมการประมวลผลแบบคู่ ของ MotherDuck รองรับข้อมูลขนาดใหญ่ด้วยเวลาแฝงต่ำ
  • เทคโนโลยีการเขียนคิวรีใหม่

    • ใช้ ส่วนขยาย JSON ของ DuckDB เพื่อดึงและใช้งาน AST (syntax tree) ของคิวรี SELECT
    • สามารถพรีวิวได้รวดเร็วขึ้นโดยแทนที่บางส่วนของคิวรีด้วย ข้อมูลตัวอย่างจากแคชภายในเครื่อง
  • ระบบแคชอัจฉริยะ

    • ใช้ แคชข้อมูลที่คาดการณ์ไว้ล่วงหน้า เพื่อเรนเดอร์ผลลัพธ์ทันทีที่มีการกดแป้นพิมพ์
    • ด้วยกลยุทธ์แคชที่หลากหลาย ผลลัพธ์จะแสดงขึ้นมาก่อนที่ผู้ใช้จะยกนิ้วออกจากแป้นเสียอีก
  • การแมประหว่างเคอร์เซอร์กับ syntax tree

    • มีการพัฒนาความสามารถในการแมป ตำแหน่งเคอร์เซอร์ ของผู้ใช้ไปยัง SELECT node ที่เฉพาะเจาะจงใน AST อย่างแม่นยำ
    • แม้ในคิวรีที่ซับซ้อน ก็สามารถเลือกพรีวิวเฉพาะ คำสั่ง SELECT ที่ผู้ใช้กำลังทำงานอยู่ได้

วิธีใช้งาน Instant SQL

  • ใช้งานได้ในสถานะ public preview บน MotherDuck หรือ DuckDB Local UI
  • ฟีเจอร์ใหม่อย่าง การแก้ไขแบบใช้พรอมป์ต์ ก็มีให้ผู้ใช้ MotherDuck เช่นกัน

2 ความคิดเห็น

 
aer0700 2025-04-26

นี่มันน่าทึ่งสุด ๆ ไปเลย

 
GN⁺ 2025-04-25
ความคิดเห็นจาก Hacker News
  • เห็นผู้เขียนฟีเจอร์นี้และบล็อกโพสต์นี้นำเสนอในงานประชุม DataCouncil และบอกได้เลยว่ามีทั้งฝีมือ ความคิดสร้างสรรค์ และความใส่ใจอย่างมากในการสร้างสิ่งนี้ขึ้นมา ขอแสดงความยินดีกับ Hamilton และทีม MotherDuck สำหรับการเปิดตัวที่ยอดเยี่ยม
  • มีวิดีโอดี ๆ จาก DuckDB UI และ MotherDuck
  • น่าจะดีกว่านี้ถ้า SQL มีไวยากรณ์แบบ pipe SQL นั้นยอดเยี่ยม แต่ลำดับของมันไม่ค่อยเป็นธรรมชาติ และหากต้องการพรีวิวผลลัพธ์ระหว่างทาง CTE คือวิธีเดียวที่เชื่อถือได้ การใช้ pipe จะทำให้แต่ละขั้นแสดงผลลัพธ์กลางได้อย่างชัดเจน
    • ตัวอย่าง:
      • FROM orders
      • WHERE order_date >= '2024-01-01'
      • AGGREGATE SUM(order_amount) AS total_spent GROUP BY customer_id
      • WHERE total_spent > 1000
      • INNER JOIN customers USING(customer_id)
      • CALL ENRICH.APOLLO(EMAIL > customers.email)
      • AGGREGATE COUNT(*) high_value_customer GROUP BY company.country
  • ถ้ามีวิศวกรของ DuckDB อยู่ตรงนี้ อยากบอกว่าเครื่องมือของคุณช่วยงานของฉันในด้านชีวสารสนเทศ/เทคโนโลยีชีวภาพได้มากมหาศาล มันมีทั้งความยืดหยุ่นและความเรียบง่ายที่ข้อมูลชีววิทยาอันซับซ้อนและเปลี่ยนแปลงตลอดเวลาต้องการ
  • การที่ DuckDB ไม่มีไวยากรณ์แบบ pipe เหมือน kusto หรือไวยากรณ์ pipe query ของ Google ถือเป็นฟีเจอร์สำคัญที่ขาดหายไปอย่างร้ายแรง
    • ทำไมถึงเป็นฟีเจอร์สำคัญ? อย่างแรกเลย LLM เติมข้อความจากซ้ายไปขวา แค่นั้นก็ทำให้มันสำคัญมากแล้ว
    • แต่สำหรับมนุษย์อย่างเราที่มีพลังประมวลผลน้อยกว่า ไวยากรณ์แบบ pipe ช่วยให้การเติมโค้ดทำได้ดีกว่ามาก
    • ไวยากรณ์แบบ pipe ใช้งานได้สนุก และตอนต้องกลับไปใช้ SQL ก็เป็นช่วงเวลาที่น่าผิดหวังจริง ๆ
  • หวังว่ามันจะไม่ทำงานร่วมกับคำสั่ง DELETE
  • ฉันชอบสำรวจโน้ตบุ๊กของ DuckDB มาก และฟีเจอร์นี้ทำให้มันเจ๋งขึ้นไปอีก แต่การที่ยังแชร์ ส่งออก หรือ commit เข้า git repository ไม่ได้ เป็นข้อจำกัดอย่างมาก ดูเหมือนมันจะเก็บไว้ในฐานข้อมูล DuckDB และถึงขั้นเก็บเวอร์ชันย้อนหลังด้วย แต่ในทางปฏิบัติกลับทำอะไรกับมันไม่ได้
  • การตรวจสอบ CTE นี่น่าทึ่งมาก ปกติเสียเวลาทำเองไปเยอะมาก
  • เป็นเครื่องมือที่ยอดเยี่ยม และยิ่งดีขึ้นเมื่อใช้ร่วมกับโปรเจกต์ Manifold สำหรับ SQL ซึ่งให้ type safety และรองรับไวยากรณ์ DuckDB แบบเนทีฟได้ดีมาก
  • ดูเจ๋งมาก แต่ฉันอยากเห็นทั้งตารางที่กำลังจะ query ด้วย ทุกครั้งที่เริ่มเขียน query ฉันมักจะรัน select * from table limit 10; แบบเร็ว ๆ ก่อน แล้วค่อยเพิ่มคอลัมน์และ join