注
現在、この機能はパブリック プレビュー段階にあります。 機能と構文は、一般公開前に変更される場合があります。
永続的なグラフを使用すると、グラフのデータ構造を大規模に格納、管理、クエリできます。 グラフ作成演算子を使用して作成された一時的なグラフとは異なり、永続的なグラフは、個々のクエリ実行を超えて保持される永続的なデータベース オブジェクトであり、エンタープライズ レベルのグラフ分析機能を提供します。
概要
永続的なグラフは、次の 2 つの主要なコンポーネントで構成されます。
- グラフ モデル: グラフの構造とスキーマを定義する
- グラフ スナップショット: クエリを実行できるグラフ モデルの永続的なインスタンス
このアーキテクチャでは、グラフ スキーマを定義する柔軟性と、大規模なグラフ データのクエリの効率の両方が提供されます。
主な利点
永続的なグラフは、エンタープライズ規模のグラフ分析に大きな利点をもたらします。
- 永続ストレージ: グラフ モデルとスナップショットは、長期的な可用性のためにデータベース メタデータに保持されます
- スケーラビリティ: 単一ノードのメモリ制限を超える大きなグラフを処理する
- 再利用性: 複数のユーザーとアプリケーションが再構築なしで同じグラフ構造にクエリを実行できる
- パフォーマンスの最適化: 繰り返しクエリのグラフ構築オーバーヘッドを排除する
- スキーマのサポート: さまざまなノードとエッジの種類とそのプロパティの構造化された定義
- バージョン管理: 複数のスナップショットを使用すると、さまざまな時点でグラフを表現できます
グラフ モデル
グラフ モデルは、データベース メタデータに格納されているグラフの仕様を定義します。 内容は以下のとおりです。
- スキーマ定義: ノードとエッジの型とそのプロパティ
- データ ソース マッピング: 表形式データからグラフを構築するための手順
- ラベル: ノードとエッジの静的 (定義済み) ラベルと動的 (実行時に生成) ラベルの両方
グラフ モデルには、実際のグラフ データではなく、グラフ スナップショットを作成するためのブループリントが含まれています。
グラフ モデルの管理
グラフ モデルを管理するには、次のコマンドを使用できます。
コマンド | 説明 |
---|---|
.create-or-alter graph_model | 新しいグラフ モデルを作成するか、既存のグラフ モデルを変更します |
.show graph_model | 特定のグラフ モデルの詳細を表示します |
.show graph_models | データベース内のすべてのグラフ モデルを一覧表示します |
.drop graph_model | グラフ モデルを削除します |
グラフ スナップショット
グラフ スナップショットは、グラフ モデルから具体化された実際のグラフ インスタンスです。 これは次を表します。
- モデルによって定義されたデータの特定のポイントインタイム ビュー
- クエリ可能な形式のノード、エッジ、およびそれらのプロパティ
- 明示的に削除されるまで保持される自己完結型エンティティ
スナップショットは、永続的なグラフを操作するときにクエリを実行するエンティティです。
グラフ スナップショットの管理
グラフ スナップショットを管理するには、次のコマンドを使用できます。
コマンド | 説明 |
---|---|
.make graph_snapshot | グラフ モデルから新しいグラフ スナップショットを作成します |
.show graph_snapshot | 特定のグラフ スナップショットの詳細を表示します |
.show graph_snapshots | データベース内のすべてのグラフ スナップショットを一覧表示します |
.drop graph_snapshot | 1 つのグラフ スナップショットを削除します |
.drop graph_snapshots | 条件に基づいて複数のグラフ スナップショットを削除します |
ワークフロー
永続的なグラフを作成して使用する一般的なワークフローは、次の手順に従います。
- グラフ モデルの作成 - グラフ の構造とデータ ソースを定義する
- グラフ スナップショットを作成する - クエリ可能なスナップショットにグラフ モデルを具体化する
- グラフ スナップショットのクエリ - KQL グラフ演算子を使用してグラフ データを分析する
- ライフサイクルの管理 - 必要に応じて新しいスナップショットを作成し、古いスナップショットを削除する
永続的なグラフのクエリ
グラフ スナップショットが作成されたら、 graph
関数の後に他の KQL グラフ演算子を使用してクエリを実行できます。
graph("MyGraphModel")
| graph-match (n)-[e]->(m)
project n, e, m
特定のスナップショットに対してクエリを実行するには、スナップショット名を指定します。
graph("MyGraphModel", "MyGraphSnapshot")
| graph-match (n)-[e]->(m)
project n, e, m
graph-match
演算子を使用すると、パターン マッチングとトラバーサル操作が可能になりますが、graph-shortest-paths
はエンティティ間の最適な接続を見つけるのに役立ちます。
graph-to-table
演算子は、グラフの結果を表形式に変換します。
主な考慮事項
このセクションでは、グラフ モデルとスナップショットの主な考慮事項と現在の制限事項について説明します。
スナップショットの制限事項
永続的なグラフには、次の制限があります。
- 通常のデータベース制限: データベースあたり最大 5,000 個のグラフ スナップショット
- 無料の仮想クラスターの制限: データベースあたり最大 500 個のグラフ スナップショット
- スナップショットの作成時間: 1 時間に制限