Komuniti pembangunan pangkalan data sedang giat membincangkan perancangan DuckDB untuk beralih daripada penghuraian SQL berasaskan YACC kepada pendekatan Parser Expression Grammar (PEG) yang lebih moden, sambil berkongsi pandangan berharga tentang penyelesaian penghuraian alternatif yang sedia ada dalam pasaran.
Sambutan Komuniti dan Penyelesaian Alternatif
Pengumuman pemodenan penghurai DuckDB telah mencetuskan perbincangan menarik dalam kalangan pembangun. Walaupun sesetengah memuji inovasi berterusan projek ini, yang lain menunjukkan kepada penyelesaian sedia ada yang matang. Satu sebutan yang ketara ialah sqlparser-rs dari datafusion, yang telah mendapat pengiktirafan kerana sokongan menyeluruhnya terhadap pelbagai dialek SQL, terutamanya dalam mengendalikan keperluan sintaks unik Microsoft SQL Server.
Dari sudut praktikal, bagi sesiapa yang perlu menghurai SQL hari ini, saya boleh mencadangkan sqlparser-rs dari datafusion... Saya tidak tahu apa-apa lagi yang dapat menyamai tahap sokongannya untuk semua keunikan sintaks yang jarang diketahui dari pelbagai dialek SQL.
Perbahasan Teknikal tentang Pemodenan
Komuniti telah mengemukakan pandangan balas yang bernas terhadap hujah pemodenan. Sesetengah pembangun berpendapat bahawa usia sesuatu teknologi tidak seharusnya menjadi sebab utama untuk penggantian. Mereka menekankan bahawa banyak konsep pengkomputeran dari tahun 1960-an masih bernilai dan berkesan hari ini. Perbincangan menekankan bahawa penghurai LALR(1) boleh dibuat boleh-dilanjutkan masa jalan, mencadangkan bahawa faedah PEG harus dinilai berdasarkan merit teknikal dan bukannya usia semata-mata.
Perbandingan Prestasi:
- Masa penghuraian YACC untuk Pertanyaan TPC-H 1: ~0.03 ms
- Masa penghuraian cpp-peglib untuk pertanyaan yang sama: ~0.3 ms
- Penghuraian fail besar (36,840 baris):
- Postgres ( YACC ): 24 ms
- cpp-peglib : 266 ms (tanpa tindakan), 339 ms (dengan penjanaan AST)
Sumber Pendidikan dan Peluang Pembelajaran
Ahli komuniti telah mengetengahkan sumber pembelajaran berharga bagi mereka yang berminat dengan pelaksanaan PEG. Buku percuma Janet for Mortals oleh Ian Henry telah disyorkan sebagai pengenalan yang cemerlang kepada konsep PEG, dengan sesetengah pembangun menyatakan bagaimana ia telah mempengaruhi perspektif pengaturcaraan dan pemahaman mereka tentang teknologi penghuraian.
Pertimbangan Prestasi
Walaupun artikel ini membincangkan jurang prestasi antara pelaksanaan YACC dan PEG, komuniti nampaknya kurang bimbang tentang penurunan kelajuan 10x yang dilaporkan, terutamanya untuk pertanyaan analitikal di mana masa penghuraian mewakili sebahagian kecil daripada keseluruhan masa pemprosesan pertanyaan. Tumpuan kelihatan lebih kepada fungsi dan keboleh-lanjutan berbanding kelajuan penghuraian semata-mata.
Perbincangan ini mencerminkan trend yang lebih luas dalam teknologi pangkalan data di mana pembangun sedang menimbang keseimbangan antara pendekatan tradisional yang teruji dengan penyelesaian moden yang lebih fleksibel yang boleh menampung inovasi masa depan dalam pembangunan bahasa pertanyaan dengan lebih baik.
Sumber Rujukan: Runtime-Extensible SQL Parsers Using PEG