Vue d’ensemble de la sémantique du graphe Langage de requête Kusto (KQL)
La sémantique des graphiques dans Langage de requête Kusto (KQL) vous permet de modéliser et d’interroger des données sous forme de graphiques. La structure d’un graphique comprend des nœuds et des arêtes qui les connectent. Les nœuds et les arêtes peuvent avoir des propriétés qui les décrivent.
Les graphiques sont utiles pour représenter des données complexes et dynamiques qui impliquent des relations plusieurs-à-plusieurs, hiérarchiques ou réseau, telles que des réseaux sociaux, des systèmes de recommandation, des ressources connectées ou des graphiques de connaissances. Par exemple, le graphique suivant illustre un réseau social constitué de quatre nœuds et de trois bords. Chaque nœud a une propriété pour son nom, tel que Bob, et chaque arête a une propriété pour son type, comme reportsTo.
Les graphiques stockent les données différemment des bases de données relationnelles, qui utilisent des tables et ont besoin d’index et de jointures pour connecter des données associées. Dans les graphiques, chaque nœud a un pointeur direct vers ses voisins (adjacency), il n’est donc pas nécessaire d’indexer ou de joindre quoi que ce soit, ce qui facilite et accélère la traversée du graphique. Les requêtes de graphe peuvent utiliser la structure de graphe et la signification pour effectuer des opérations complexes et puissantes, telles que la recherche de chemins, de modèles, de distances les plus courtes, de communautés ou de mesures de centralité.
Vous pouvez créer et interroger des graphiques à l’aide de la sémantique de graphe KQL, qui a une syntaxe simple et intuitive qui fonctionne bien avec les fonctionnalités KQL existantes. Vous pouvez également combiner des requêtes de graphe avec d’autres fonctionnalités KQL, telles que les requêtes basées sur le temps, basées sur l’emplacement et le Machine Learning, pour effectuer des analyses de données plus avancées et puissantes. En utilisant KQL avec la sémantique des graphiques, vous obtenez la vitesse et l’échelle des requêtes KQL avec la flexibilité et l’expressivité des graphiques.
Par exemple, vous pouvez utiliser :
- Requêtes basées sur le temps pour analyser l’évolution d’un graphique au fil du temps, telles que la façon dont la structure réseau ou les propriétés du nœud changent
- Requêtes géospatiales pour analyser la distribution spatiale ou la proximité des nœuds et des arêtes, telles que la façon dont l’emplacement ou la distance affecte la relation
- Requêtes Machine Learning pour appliquer différents algorithmes ou modèles à des données de graphe, telles que le clustering, la classification ou la détection d’anomalies
Comment cela fonctionne-t-il ?
Chaque requête de la sémantique de graphe dans Kusto nécessite la création d’une représentation de graphe. Vous utilisez un opérateur de graphe qui convertit des expressions tabulaires pour les arêtes et éventuellement des nœuds en une représentation graphique des données. Une fois le graphique créé, vous pouvez appliquer différentes opérations pour améliorer ou examiner les données de graphe.
L’extension sémantique de graphe utilise un moteur de graphe en mémoire qui fonctionne sur les données de la mémoire de votre cluster, ce qui rend l’analyse des graphiques interactive et rapide. La consommation de mémoire d’une représentation graphique est affectée par le nombre de nœuds et de arêtes et leurs propriétés respectives. Le moteur de graphique utilise un modèle de graphique de propriétés qui prend en charge des propriétés arbitraires pour les nœuds et les arêtes. Il s’intègre également à tous les opérateurs scalaires existants de KQL, ce qui permet aux utilisateurs d’écrire des requêtes de graphique expressifs et complexes qui peuvent utiliser toute la puissance et les fonctionnalités de KQL.
Pourquoi utiliser la sémantique de graphe dans KQL ?
Il existe plusieurs raisons d’utiliser la sémantique de graphe dans KQL, comme les exemples suivants :
KQL ne prend pas en charge les jointures récursives. Vous devez donc définir explicitement les traversées que vous souhaitez exécuter (voir Scénario : Amis d’un ami). Vous pouvez utiliser l’opérateur make-graph pour définir des tronçons de longueur variable, ce qui est utile lorsque la distance de relation ou la profondeur n’est pas fixe. Par exemple, vous pouvez utiliser cet opérateur pour rechercher toutes les ressources connectées dans un graphique ou tous les endroits auxquels vous pouvez accéder à partir d’une source dans un réseau de transport.
Les graphiques prenant en charge le temps sont une fonctionnalité unique de la sémantique de graphe dans KQL qui permet aux utilisateurs de modéliser des données de graphe sous la forme d’une série d’événements de manipulation de graphe au fil du temps. Les utilisateurs peuvent examiner la façon dont le graphique évolue au fil du temps, par exemple la façon dont la structure réseau du graphique ou les propriétés du nœud changent, ou comment les événements ou anomalies de graphique se produisent. Par exemple, les utilisateurs peuvent utiliser des requêtes de série chronologique pour découvrir les tendances, les modèles ou les valeurs hors norme dans les données de graphique, telles que la façon dont la densité réseau, la centralité ou la modularité changent au fil du temps
La fonctionnalité IntelliSense de l’éditeur de requête KQL aide les utilisateurs à écrire et à exécuter des requêtes dans le langage de requête. Il fournit la mise en surbrillance de la syntaxe, lacomplétion automatique, l’erreur case activée ing et les suggestions. Il aide également les utilisateurs à utiliser l’extension sémantique de graphe en offrant des mot clé spécifiques au graphique, des opérateurs, des fonctions et des exemples pour guider les utilisateurs par le biais du processus de création et d’interrogation de graphiques.
Limites
Voici quelques-unes des principales limites de la fonctionnalité sémantique de graphe dans KQL :
- Vous pouvez uniquement créer ou interroger des graphiques qui s’intègrent dans la mémoire d’un nœud de cluster.
- Les données de graphe ne sont pas conservées ou distribuées entre les nœuds de cluster et sont dis carte ed après l’exécution de la requête.
Par conséquent, lorsque vous utilisez la fonctionnalité sémantique de graphe dans KQL, vous devez prendre en compte la consommation de mémoire et les implications en termes de performances de création et d’interrogation de graphiques volumineux ou denses. Si possible, vous devez utiliser des filtres, des projections et des agrégations pour réduire la taille et la complexité du graphique.