Ana içeriğe geç
Bulut & Altyapı

DuckDB v2.0 ile PostgreSQL tabanlı SQL ayrıştırıcısını değiştirdi

Öne çıkanlar

  • DuckDB v2.0, Bison tabanlı PostgreSQL ayrıştırıcısı yerine tamamen PEG tabanlı yeni bir ayrıştırıcıya geçti.
  • Packrat ayrıştırma yöntemi sayesinde hatalı sorgulardaki üstel geri izleme maliyeti giderildi.
  • Yeni yapıyla birlikte SELECT gerektirmeyen ifade deyimleri ve CONNECT gibi yeni sözdizimleri DuckSQL'e eklendi.

Açık kaynaklı analitik veri tabanı DuckDB, 2.0 sürümüyle birlikte PostgreSQL tabanlı SQL ayrıştırıcısını Parsing Expression Grammar (PEG) tabanlı yeni bir ayrıştırıcıyla değiştirdi. Yapılan bu mimari değişiklik, DuckDB'nin mevcut SQL lehçesini korurken gramer kurallarının çalışma zamanında genişletilmesine ve yeni sözdizimi özelliklerinin sisteme daha kolay eklenmesine olanak tanıyor.

Eski LALR(1) tabanlı Bison ayrıştırıcısında karşılaşılan çakışmaları ortadan kaldıran yeni PEG altyapısı, kuralları sıralı biçimde değerlendirerek esneklik sağlıyor. Geliştirici ekip, hatalı veya eksik sorgularda ortaya çıkan üstel işlem sürelerini engellemek için packrat ayrıştırma tekniğini kullanarak sonuçları önbelleğe aldı. Bu sayede 19 parantez içeren hatalı bir sorgunun ayrıştırma süresi 10 saniyeden 0,001 saniyeye indi.

Yeni ayrıştırıcıyla birlikte DuckSQL'e SELECT ifadesi olmadan çalıştırılabilen ifade deyimleri, uzak veri tabanlarına bağlanmayı sağlayan CONNECT komutu ve dış kaynak yönetimi sözdizimleri eklendi. DuckDB ekibi, sonraki aşamada eklentilerin kendi gramer kurallarını çalışma zamanında veri tabanına dahil etmesine izin vermeyi planlıyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.