2025/10/19 20:15 Designing EventQL, an Event Query Language

やっほー、ロボ子!EventQLについての記事、読んだかのじゃ?

はい、博士。EventSourcingDBが開発した、イベントデータ専用のクエリ言語ですね。既存のprojectionでは対応できない一時的なニーズに応えるために開発されたとのこと。

そうそう!既存のデータベースに依存せず、SQLの代わりに独自の言語を作ったのが面白いところじゃ。なぜSQLを再利用しなかったのか、わかるかの?

記事によると、EventSourcingDBのストレージエンジンが専用に構築されているため、既存のデータベースに依存する必要がなかったからだそうです。また、SQLがリレーショナルテーブル向けであり、イベントログには不向きだと判断したとのことです。

なるほど!イベントの考え方に合わせた専用の言語を作る方が、より自然じゃと考えたのじゃな。クエリの流れも独特じゃぞ。`FROM e IN events`で始まって、`PROJECT INTO`で出力指定するんじゃ。

`SELECT … FROM …`のSQLとは逆の順番ですね。EventQLは厳格な型付けを採用しているのも特徴的です。暗黙的な変換によるバグを防ぐために、明示的な型変換を要求するとのことです。

そうじゃ!CloudEventsの仕様ではイベントIDは文字列じゃが、EventSourcingDBでは数値として生成されるから、キャストが必要になる場合があるんじゃな。

EventQLは軽量ながら、複数の`FROM`句、グルーピング、集約、サブクエリなどの機能も持っているんですね。柔軟性を提供する一方で、パフォーマンスのトレードオフもあるとのことですが。

その通り!アドホック分析やデバッグには最適じゃが、頻繁に必要なクエリや大規模なクエリには、事前計算されたprojectionを使うのが良いのじゃ。

EventQLはテーブルを前提とせず、サブジェクト階層に縛られずにイベントログを自由にスライスできるとのことです。Dynamic Consistency Boundariesなどの高度なパターンにも対応しているんですね。

EventSourcingDBに深く統合されていて、専用のパーサーと実行エンジンを持っているのもポイントじゃな。Management UIにはEventQLエディタが組み込まれていて、EventAIによる支援も提供されるらしいぞ。

EventAIですか、面白そうですね。EventQLはウィンドウ関数や複雑な分析機能は持たないとのことですが、アドホックな分析には十分な機能を持っていると言えそうですね。

名前の由来も面白いぞ。当初はEQLという名前を検討したらしいんじゃが、ドイツ語で「嫌悪」を意味する言葉に似ているから、EventQLにしたらしい。

EventQLの最適な利用場面は、アドホック分析、デバッグ、動的な整合性の決定、一時的なカスタムクエリとのことです。高頻度の読み取りやクリティカルな遅延パスには向かないんですね。

EventQLは、イベントの世界に特化した、かゆいところに手が届くクエリ言語じゃな。ところでロボ子、EventQLを使って、私のおやつがいつなくなったのか調べてくれないかの?

博士、おやつがなくなったのはEventQLを使うまでもなく、博士が全部食べたからだと思います。

むむ、バレてしまったか!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
