データベース開発コミュニティでは、 DuckDB が従来の YACC ベースのSQLパーシングから、より現代的なパーサー表現文法( PEG )アプローチへの移行を計画していることについて、活発な議論が行われています。また、現在市場で利用可能な代替パーシングソリューションについても貴重な見解が共有されています。
コミュニティの反応と代替ソリューション
DuckDB のパーサー近代化の発表は、開発者の間で興味深い議論を引き起こしています。プロジェクトの継続的な革新を称賛する声がある一方で、既存の成熟したソリューションを指摘する声もあります。特に注目すべきは datafusion の sqlparser-rs で、様々なSQLダイアレクトに対する包括的なサポート、特に Microsoft SQL Server の独自の構文要件の処理において認知度を高めています。
近代化に関する技術的議論
コミュニティは近代化の議論に対して、思慮深い反論を提起しています。一部の開発者は、技術の古さだけを理由に置き換えるべきではないと主張しています。1960年代のコンピューティングの概念の多くが、今日でも価値があり効果的であることを強調しています。議論では、 LALR(1) パーサーも実行時に拡張可能であることが指摘され、 PEG の利点は年代ではなく技術的メリットに基づいて評価されるべきだとしています。
性能比較:
- TPC-H クエリ1の YACC 解析時間:約0.03ミリ秒
- 同じクエリの cpp-peglib 解析時間:約0.3ミリ秒
- 大規模ファイル(36,840行)の解析:
- Postgres ( YACC ):24ミリ秒
- cpp-peglib :266ミリ秒(アクションなし)、339ミリ秒( AST 生成あり)
教育リソースと学習機会
コミュニティメンバーは、 PEG の実装に興味を持つ人々のための貴重な学習リソースを紹介しています。 Ian Henry による無料の書籍「 Janet for Mortals 」は、 PEG の概念への優れた入門書として推奨されており、一部の開発者は、この本がプログラミングの視点とパーシング技術の理解に影響を与えたと述べています。
パフォーマンスに関する考慮事項
記事では YACC と PEG の実装間のパフォーマンスの差について言及していますが、コミュニティは報告されている10倍の速度低下についてはそれほど懸念していないようです。特に分析クエリでは、パース時間が全体のクエリ処理時間のごくわずかな部分を占めるに過ぎないためです。生のパース速度よりも、機能性と拡張性に重点が置かれているようです。
この議論は、開発者が従来の実績のあるアプローチと、クエリ言語開発における将来の革新により適応できる現代的で柔軟なソリューションとの間のトレードオフを検討しているデータベース技術の広範なトレンドを反映しています。