13 पॉइंट द्वारा GN⁺ 2025-04-25 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Instant SQL एक ऐसा टूल है जो SQL क्वेरी लिखते समय रिज़ल्ट का रीयल-टाइम प्रीव्यू दिखाकर क्वेरी लेखन और डिबगिंग को तेज़ करता है
  • जटिल CTE या कॉलम फ़ॉर्मूला को आसानी से तोड़कर विश्लेषित किया जा सकता है, और AI-आधारित एडिट सुझावों का भी तुरंत प्रीव्यू मिल जाता है, जिससे क्वेरी लिखना और संशोधित करना अधिक कुशल हो जाता है
  • यह MotherDuck और DuckDB Local UI में उपलब्ध है, और DuckDB के आधार पर विभिन्न बाहरी डेटा स्रोतों को भी रीयल-टाइम में एक्सप्लोर किया जा सकता है
  • यह DuckDB के लोकल-फ़र्स्ट डिज़ाइन, परफ़ॉर्मेंस ऑप्टिमाइज़ेशन, कैशिंग रणनीति, AST-आधारित कर्सर मैपिंग जैसी उन्नत तकनीकों के संयोजन से संभव हुआ है
  • MotherDuck डेटा विश्लेषण के लिए विभिन्न टूल उपलब्ध कराने वाली एक managed DuckDB cloud service है

Instant SQL का परिचय

  • Instant SQL एक नया फीचर है जो SQL क्वेरी के नतीजों को टाइप करते ही रीयल-टाइम में अपडेट करता है
  • अलग से run button दबाने की ज़रूरत नहीं, और 0 सेकंड latency (zero-latency) के साथ नतीजों का प्रीव्यू देखा जा सकता है
  • यह फिलहाल MotherDuck प्लेटफ़ॉर्म और DuckDB Local UI में उपलब्ध है

Instant SQL की ज़रूरत क्यों है

  • SQL लिखने में मूल बात syntax नहीं, बल्कि डेटा को समझना और सवालों को गढ़ना है
  • पहले टेक्स्ट एडिटर में क्वेरी लिखना, run button दबाना और नतीजों का इंतज़ार करना एक धीमा दोहराव वाला काम था
  • Instant SQL इस प्रक्रिया को तुरंत और स्वाभाविक एक्सप्लोरेशन के फ़्लो में बदल देता है

मुख्य फीचर

  • लिखते समय रीयल-टाइम रिज़ल्ट प्रीव्यू

    • SQL क्वेरी टाइप करते ही रिज़ल्ट सेट प्रीव्यू रीयल-टाइम में अपडेट होता है
    • साधारण ट्रांसफ़ॉर्मेशन से लेकर जटिल aggregation तक डेटा एक्सप्लोरेशन बिना रुकावट जारी रखा जा सकता है
  • CTE (Common Table Expression) की रीयल-टाइम डिबगिंग

    • CTE पर क्लिक करके उसे तुरंत विज़ुअलाइज़ किया जा सकता है
    • बदलाव तुरंत सभी dependent nodes में दिखते हैं, जिससे CTE डिबगिंग बहुत आसान हो जाती है
  • जटिल कॉलम फ़ॉर्मूला को तोड़कर देखना

    • कॉलम फ़ॉर्मूला की ग़लतियाँ जल्दी ढूँढने के लिए रिज़ल्ट टेबल में फ़ॉर्मूला ब्रेकडाउन किया जा सकता है
    • फ़ॉर्मूला लॉजिक या डेटा समस्या को तुरंत पहचानना संभव है
  • कई तरह के डेटा स्रोतों का समर्थन

    • DuckDB जिन सभी स्रोतों को सपोर्ट करता है (DuckDB tables, S3 के parquet files, Postgres, SQLite, MySQL, Iceberg, Delta आदि), उन सबका प्रीव्यू देखा जा सकता है
    • बाहरी डेटा मॉडलिंग और एक्सप्लोरेशन बहुत तेज़ हो जाते हैं
  • अंतिम run से पहले तेज़ क्वेरी वेरिफ़िकेशन

    • प्रीव्यू से क्वेरी को निखारने के बाद, संतुष्ट होने पर अंतिम execution किया जा सकता है
    • SQL लिखो-run करो-इंतज़ार करो वाले चक्र को नाटकीय रूप से छोटा कर देता है
  • AI फीचर के साथ संयोजन

    • चुने गए टेक्स्ट के लिए natural language command देने पर AI संशोधन सुझाव देता है
    • सुझाए गए नतीजे का तुरंत प्रीव्यू मिल जाता है, इसलिए बिना गलती के जोखिम के बदलाव स्वीकार किए जा सकते हैं

यह कैसे संभव हुआ

  • ultra-low latency क्वेरी execution तकनीक

    • DuckDB के लोकल-फ़र्स्ट डिज़ाइन की वजह से PC पर सीधे तेज़ नतीजे मिलते हैं
    • MotherDuck की dual execution architecture बड़े डेटा को भी कम latency के साथ सपोर्ट करती है
  • क्वेरी rewrite तकनीक

    • DuckDB JSON extension का उपयोग करके SELECT क्वेरी का AST (syntax tree) निकाला और इस्तेमाल किया जाता है
    • क्वेरी के कुछ हिस्सों को लोकल cache sample data से बदलकर तेज़ प्रीव्यू संभव बनाया गया है
  • स्मार्ट caching system

    • पहले से अनुमानित डेटा cache का उपयोग करके key input होते ही नतीजों को render किया जाता है
    • अलग-अलग caching strategies के कारण उपयोगकर्ता के उंगली हटाने से पहले ही नतीजे दिखने लगते हैं
  • cursor-syntax tree mapping

    • उपयोगकर्ता की cursor position को AST में किसी खास SELECT node से सटीक रूप से मैप करने की क्षमता विकसित की गई है
    • जटिल क्वेरी के भीतर भी उपयोगकर्ता जिस SELECT statement पर काम कर रहा हो, केवल उसी का प्रीव्यू देना संभव है

Instant SQL का उपयोग कैसे करें

  • MotherDuck या DuckDB Local UI में इसे "public preview" के रूप में इस्तेमाल किया जा सकता है
  • नया prompt-based editing feature भी MotherDuck उपयोगकर्ताओं को दिया जा रहा है

2 टिप्पणियां

 
aer0700 2025-04-26

यह तो वाकई कमाल का है

 
GN⁺ 2025-04-25
Hacker News टिप्पणियाँ
  • मैंने DataCouncil कॉन्फ़्रेंस में इस फीचर और ब्लॉग पोस्ट के लेखक को इसका प्रस्तुतीकरण करते देखा, और यह स्पष्ट था कि इसे बनाने में बहुत कौशल, रचनात्मकता और बारीकी लगी है। Hamilton और MotherDuck टीम को इस शानदार रिलीज़ के लिए बधाई
  • DuckDB UI और MotherDuck में शानदार वीडियो है
  • अगर SQL में pipe syntax होता तो यह और बेहतर होता। SQL शानदार है, लेकिन उसका क्रम सहज नहीं है, और intermediate results का preview देखने के लिए CTE ही एकमात्र भरोसेमंद तरीका है। Pipe का उपयोग करने पर हर चरण intermediate output को साफ़ तौर पर दिखा सकता है
    • उदाहरण:
      • 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 engineer है, तो मैं बताना चाहूँगा कि आपका टूल bioinformatics/biotech में मेरे काम के लिए बेहद मददगार रहा है। इसमें biological data (जटिल और लगातार बदलने वाला) के लिए ज़रूरी flexibility और simplicity है
  • यह कि DuckDB में kusto या Google के pipe query syntax जैसा pipe syntax नहीं है, एक घातक missing feature है
    • यह घातक feature क्यों है? सबसे पहले, LLM बाएँ से दाएँ text complete करते हैं। सिर्फ़ यही इसे एक घातक feature बना देता है
    • लेकिन कम computing power वाले हम इंसानों के लिए, pipe syntax (काफ़ी बेहतर) code completion संभव बनाता है
    • Pipe syntax के साथ काम करना आनंददायक है, और SQL पर वापस जाना सचमुच निराशाजनक पल होता है
  • उम्मीद है कि यह DELETE query के साथ काम नहीं करेगा
  • मुझे DuckDB notebooks को explore करना बहुत पसंद है, और यह फीचर उन्हें और भी शानदार बनाता है। लेकिन इन्हें share, export, या git repository में commit न कर पाना बहुत सीमित करने वाला है। लगता है कि यह DuckDB database में save करता है, यहाँ तक कि historical versions भी रखता है, लेकिन वास्तव में आप उसके साथ कुछ कर नहीं सकते
  • CTE inspection कमाल की है। मैं इसे हाथ से करने में बहुत ज़्यादा समय बर्बाद करता हूँ
  • शानदार टूल है, और SQL के लिए Manifold project के साथ इस्तेमाल करने पर और भी बढ़िया हो जाता है। यह type-safe है और native DuckDB syntax के लिए बेहतरीन support देता है
  • बढ़िया लग रहा है, लेकिन मैं पूरी table देखना चाहता हूँ जिस पर query करनी है। मैं लगभग हमेशा query शुरू करते समय select * from table limit 10; जल्दी से चलाता हूँ, फिर columns और joins जोड़ता हूँ