13 puan yazan GN⁺ 2025-04-25 | 2 yorum | WhatsApp'ta paylaş
  • Instant SQL, SQL sorguları yazılırken sonuçları gerçek zamanlı önizleyerek sorgu yazma ve hata ayıklamayı hızlandıran bir araç
  • Karmaşık CTE'ler ve sütun formülleri kolayca ayrıştırılıp analiz edilebiliyor; yapay zeka destekli düzenleme önerileri de anında önizlenebildiği için sorgu yazma ve düzeltme daha verimli hale geliyor
  • MotherDuck ve DuckDB Local UI üzerinde kullanılabiliyor; DuckDB tabanlı olarak çeşitli harici veri kaynakları da gerçek zamanlı keşfedilebiliyor
  • DuckDB'nin yerel öncelikli tasarımı, performans optimizasyonu, önbellekleme stratejileri ve AST tabanlı imleç eşleme gibi gelişmiş tekniklerin birleşimi sayesinde mümkün oldu
  • MotherDuck, veri analizi için çeşitli araçlar sunan, yönetilen bir DuckDB bulut hizmeti

Instant SQL'e giriş

  • Instant SQL, SQL sorgu sonuçlarını siz yazarken gerçek zamanlı olarak güncelleyen yeni bir özellik
  • Ayrı bir çalıştırma düğmesine gerek olmadan, 0 saniyelik gecikme (zero-latency) ile sonuçlar önceden görülebiliyor
  • Şu anda MotherDuck platformunda ve DuckDB Local UI içinde kullanılabiliyor

Neden Instant SQL gerekli

  • SQL yazmanın özü sözdiziminden çok veriyi anlamak ve soruları kurgulamak
  • Bugüne kadar metin düzenleyicide sorgu yazmak, çalıştır düğmesine basmak ve sonucu beklemekten oluşan yavaş yinelemeli süreç kaçınılmazdı
  • Instant SQL bunu anlık ve doğal bir keşif akışına dönüştürüyor

Başlıca özellikler

  • Yazarken gerçek zamanlı sonuç önizlemesi

    • SQL sorgusuna her karakter eklendiğinde sonuç kümesi önizlemesi gerçek zamanlı güncelleniyor
    • Basit dönüşümlerden karmaşık toplulaştırmalara kadar veri keşfi kesintisiz sürdürülebiliyor
  • CTE (common table expression) için gerçek zamanlı hata ayıklama

    • CTE'ye tıklayarak anında görselleştirme yapılabiliyor
    • Yapılan değişiklikler tüm bağımlı düğümlere hemen yansıdığı için CTE hata ayıklama çok kolaylaşıyor
  • Karmaşık sütun formüllerini ayrıştırma

    • Sütun formülü hatalarını hızla bulmak için sonuç tablosunda formül ayrıştırma yapılabiliyor
    • Formül mantığı ya da veri sorunları anında tespit edilebiliyor
  • Çeşitli veri kaynakları desteği

    • DuckDB'nin desteklediği tüm kaynaklar için (DuckDB tabloları, S3 üzerindeki parquet dosyaları, Postgres, SQLite, MySQL, Iceberg, Delta vb.) önizleme sağlanabiliyor
    • Harici veri modelleme ve keşif çok daha hızlı hale geliyor
  • Nihai çalıştırmadan önce hızlı sorgu doğrulama

    • Önizleme ile sorgu inceltilip istenen hale getirildikten sonra nihai çalıştırma yapılabiliyor
    • SQL yazma-çalıştırma-bekleme döngüsü çarpıcı biçimde kısalıyor
  • Yapay zeka özellikleriyle birleşim

    • Seçilen metin için doğal dil komutu girildiğinde yapay zeka düzenleme önerileri sunuyor
    • Öneri sonuçları anında önizlenebildiği için hata riski olmadan değişiklikler kabul edilebiliyor

Bu nasıl mümkün oldu

  • Ultra düşük gecikmeli sorgu yürütme teknolojisi

    • DuckDB'nin yerel öncelikli tasarımı sayesinde PC üzerinde doğrudan hızlı sonuç alınabiliyor
    • MotherDuck'ın çift yürütme mimarisi, büyük veri setlerinde de düşük gecikme sunuyor
  • Sorgu yeniden yazma teknolojisi

    • DuckDB JSON uzantısı kullanılarak SELECT sorgusunun AST'si (sözdizimi ağacı) çıkarılıyor ve kullanılıyor
    • Sorgunun bazı bölümleri yerel önbellekteki örnek verilerle değiştirilerek hızlı önizleme mümkün hale geliyor
  • Akıllı önbellekleme sistemi

    • Önceden tahmin edilmiş veri önbelleği kullanılarak tuş vuruşunun hemen ardından sonuçlar render ediliyor
    • Çeşitli önbellekleme stratejileri sayesinde kullanıcı daha parmağını tuştan çekmeden sonuçlar görüntüleniyor
  • İmleç-sözdizimi ağacı eşleme

    • Kullanıcının imleç konumunu, AST içindeki belirli bir SELECT düğümüne doğru biçimde eşleyen bir özellik geliştirildi
    • Karmaşık sorgular içinde bile kullanıcının üzerinde çalıştığı SELECT ifadesi seçilerek önizleme sunulabiliyor

Instant SQL nasıl kullanılır

  • MotherDuck veya DuckDB Local UI içinde "genel önizleme" olarak kullanılabiliyor
  • Yeni prompt tabanlı düzenleme özelliği de MotherDuck kullanıcılarına sunuluyor

2 yorum

 
aer0700 2025-04-26

Bu gerçekten çok ilginçmiş.

 
GN⁺ 2025-04-25
Hacker News görüşleri
  • DataCouncil konferansında bu özelliğin ve blog yazısının yazarının sunum yaptığını gördüm; bunu inşa etmek için çok fazla ustalık, yaratıcılık ve özen harcandığı belliydi. Hamilton ve MotherDuck ekibini bu harika çıkış için tebrik ederim
  • DuckDB UI ve MotherDuck tarafında harika bir video var
  • SQL'de bir pipe sözdizimi olsa daha iyi olurdu. SQL harika, ama sıralaması sezgisel değil ve ara sonuçları önizlemek için güvenilir tek yöntem CTE. Pipe kullanıldığında her adım ara çıktıyı açıkça gösterebilir
    • Örnek:
      • 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
  • Eğer burada bir DuckDB mühendisi varsa, aracınızın biyoinformatik/biyoteknoloji alanındaki işimde inanılmaz derecede yardımcı olduğunu bilmenizi isterim. Biyolojik verilerin (karmaşık ve sürekli değişen) gerektirdiği esneklik ve sadeliğe sahip
  • DuckDB'nin, kusto veya Google'ın pipe query sözdizimi gibi bir pipe sözdizimine sahip olmaması, ölümcül derecede eksik bir özellik
    • Neden ölümcül bir özellik? Öncelikle, LLM'ler metni soldan sağa tamamlar. Bu bile tek başına ölümcül bir özellik
    • Ama daha az hesaplama gücüne sahip biz insanlar için, pipe sözdizimi (çok daha iyi) kod tamamlama imkanı sağlar
    • Pipe sözdizimiyle çalışmak keyifli; SQL'e geri dönmek gerçekten hayal kırıklığı yaratan bir an
  • Umarım DELETE sorgularıyla çalışmıyordur
  • DuckDB'nin notebook'larını keşfetmeyi gerçekten seviyorum ve bu özellik onları daha da harika hale getiriyor. Ancak paylaşılamamaları, dışa aktarılamamaları veya bir git deposuna commit edilememeleri çok kısıtlayıcı. Bunları DuckDB veritabanına, hatta geçmiş sürümleriyle birlikte kaydediyor gibi görünüyor, ama bununla gerçekten yapabileceğiniz bir şey yok
  • CTE incelemesi harika. Manuel olarak buna çok fazla zaman harcıyorum
  • Harika bir araç; SQL için Manifold projesiyle birlikte kullanıldığında daha da iyi. Tip güvenli ve yerel DuckDB sözdizimi için mükemmel destek sunuyor
  • Harika görünüyor, ama sorgulamak istediğim tablonun tamamını görmek istiyorum. Genelde bir sorguya başlarken önce hızlıca select * from table limit 10; çalıştırıp sonra sütunlar ve join'ler ekliyorum