Kusto 照会言語 (KQL) グラフ セマンティクスの概要
Kusto 照会言語 (KQL) のグラフ セマンティクスを使用すると、データをグラフとしてモデル化し、クエリを実行できます。 グラフの構造は、それらを接続するノードとエッジで構成されます。 ノードとエッジの両方に、それらを記述するプロパティを含めることができます。
グラフは、ソーシャル ネットワーク、レコメンデーション システム、接続された資産、ナレッジ グラフなど、多対多、階層的、またはネットワーク化された関係を含む複雑で動的なデータを表すのに役立ちます。 たとえば、次のグラフは、4 つのノードと 3 つのエッジで構成されるソーシャル ネットワークを示しています。 各ノードには Bob などの名前のプロパティがあり、各エッジには reportsTo などの型のプロパティがあります。
グラフには、テーブルを使用し、関連データを接続するためにインデックスと結合が必要なリレーショナル データベースとは異なる方法でデータが格納されます。 グラフでは、各ノードは近隣ノードへの直接ポインター (隣接性) を持っているので、インデックスを作成したり結合したりする必要がないため、グラフを簡単かつ高速に走査できます。 グラフ クエリでは、グラフ構造と意味を使用して、パス、パターン、最短距離、コミュニティ、中心性メジャーの検索など、複雑で強力な操作を実行できます。
KQL グラフ セマンティクスを使用してグラフを作成およびクエリできます。このセマンティクスには、既存の KQL 機能に対して適切に機能するシンプルで直感的な構文があります。 また、グラフ クエリを時間ベース、場所ベース、機械学習クエリなどの他の KQL 機能と組み合わせて、より高度で強力なデータ分析を行うこともできます。 グラフ セマンティクスで KQL を使用すると、グラフの柔軟性と表現力を備えた KQL クエリの速度とスケールを取得できます。
たとえば、次のトリガーを使用できます。
- ネットワーク構造やノード プロパティの変化など、時間の経過に伴うグラフの進化を分析するための時間ベースのクエリ
- 場所や距離が関係にどのように影響するかなど、空間分布またはノードとエッジの近接性を分析するための地理空間クエリ
- クラスタリング、分類、異常検出などのさまざまなアルゴリズムまたはモデルをグラフ データに適用する機械学習クエリ
それはどのように機能しますか?
Kusto のグラフ セマンティクスのすべてのクエリでは、新しいグラフ表現を作成する必要があります。 エッジおよび必要に応じてノードの表形式式をデータのグラフ表現に変換するグラフ演算子を使用します。 グラフが作成されたら、さまざまな操作を適用して、グラフ データをさらに強化または調べることができます。
グラフ セマンティクス拡張機能では、クラスターのメモリ内のデータに対して動作するメモリ内グラフ エンジンが使用され、グラフ分析が対話形式で高速になります。 グラフ表現のメモリ消費量は、ノードとエッジの数とそれぞれのプロパティの影響を受けます。 グラフ エンジンは、ノードとエッジの任意のプロパティをサポートするプロパティ グラフ モデルを使用します。 また、KQL のすべての既存のスカラー演算子と統合されるため、ユーザーは KQL の完全な能力と機能を使用できる表現力と複雑なグラフ クエリを記述できます。
KQL でグラフ セマンティクスを使用する理由
KQL でグラフ セマンティクスを使用するには、次の例のようないくつかの理由があります。
KQL は再帰結合をサポートしていないため、実行するトラバーサルを明示的に定義する必要があります (シナリオ: フレンドのフレンドを参照)。 グラフ作成演算子を使用すると、可変長のホップを定義できます。これは、リレーションシップの距離または深さが固定されていない場合に便利です。 たとえば、このオペレーターを使用して、グラフに接続されているすべてのリソース、または輸送ネットワーク内のソースから到達できるすべての場所を検索できます。
時間に対応するグラフは、ユーザーが一連のグラフ操作イベントとして時間の経過と同時にグラフ データをモデル化できるようにする、KQL のグラフ セマンティクスの固有の機能です。 ユーザーは、グラフのネットワーク構造やノード プロパティがどのように変化するか、グラフのイベントや異常がどのように発生するかなど、時間の経過に伴うグラフの進化を調べることができます。 たとえば、ユーザーは時系列クエリを使用して、ネットワーク密度、一元性、モジュール性の変化など、グラフ データの傾向、パターン、外れ値を検出できます。
KQL クエリ エディターの Intellisense 機能は、クエリ言語でのクエリの記述と実行をユーザーに支援します。 構文の強調表示、オートコンプリート、エラーチェック、および提案が提供されます。 また、グラフ固有のキーワード (keyword)、演算子、関数、および例を提供して、グラフの作成とクエリのプロセスをユーザーに案内することで、グラフ セマンティクス拡張機能をユーザーに提供することもできます。
制限
KQL のグラフ セマンティクス機能のメイン制限の一部を次に示します。
- 作成またはクエリを実行できるのは、1 つのクラスター ノードのメモリに収まるグラフのみです。
- グラフ データはクラスター ノード間で永続化または分散されず、クエリの実行後にカード解除されます。
そのため、KQL でグラフ セマンティクス機能を使用する場合は、大規模または高密度のグラフの作成とクエリのメモリ消費量とパフォーマンスへの影響を考慮する必要があります。 可能であれば、フィルター、プロジェクション、集計を使用して、グラフのサイズと複雑さを軽減する必要があります。