Panoramica della semantica del grafo Linguaggio di query Kusto (KQL)

La semantica del grafo in Linguaggio di query Kusto (KQL) consente di modellare ed eseguire query sui dati come grafici. La struttura di un grafico comprende nodi e archi che li connettono. Entrambi i nodi e i bordi possono avere proprietà che le descrivono.

I grafici sono utili per rappresentare dati complessi e dinamici che coinvolgono relazioni molti-a-molti, gerarchiche o reti, ad esempio social network, sistemi di raccomandazione, asset connessi o grafici delle conoscenze. Ad esempio, il grafico seguente illustra un social network costituito da quattro nodi e tre archi. Ogni nodo ha una proprietà per il nome, ad esempio Bob, e ogni arco ha una proprietà per il tipo, ad esempio reportsTo.

Diagramma che mostra un social network come grafico.

I grafici archivia i dati in modo diverso dai database relazionali, che usano tabelle e richiedono indici e join per connettere i dati correlati. Nei grafici ogni nodo ha un puntatore diretto ai vicini (adiacenza), quindi non è necessario indicizzare o unire nulla, semplificando e velocizzando l'attraversamento del grafico. Le query di gragrafi possono usare la struttura del grafo e il significato per eseguire operazioni complesse e potenti, ad esempio trovare percorsi, modelli, distanze più brevi, community o misure di centralità.

È possibile creare ed eseguire query su grafici usando la semantica del grafo KQL, che ha una sintassi semplice e intuitiva che funziona bene con le funzionalità KQL esistenti. È anche possibile combinare query a grafo con altre funzionalità KQL, ad esempio query basate sul tempo, basate sulla posizione e machine learning, per eseguire analisi dei dati più avanzate e potenti. Usando KQL con la semantica del grafo, si ottiene la velocità e la scalabilità delle query KQL con la flessibilità e l'espressività dei grafici.

Ad esempio, è possibile usare:

  • Query basate sul tempo per analizzare l'evoluzione di un grafico nel tempo, ad esempio il modo in cui la struttura di rete o le proprietà del nodo cambiano
  • Query geospaziali per analizzare la distribuzione spaziale o la prossimità di nodi e archi, ad esempio il modo in cui la posizione o la distanza influisce sulla relazione
  • Query di Machine Learning per applicare vari algoritmi o modelli ai dati del grafo, ad esempio clustering, classificazione o rilevamento anomalie

Come funziona?

Ogni query della semantica del grafo in Kusto richiede la creazione di una nuova rappresentazione del grafo. Si usa un operatore del grafo che converte le espressioni tabulari per i bordi e facoltativamente i nodi in una rappresentazione a grafo dei dati. Dopo aver creato il grafico, è possibile applicare operazioni diverse per migliorare o esaminare ulteriormente i dati del grafo.

L'estensione semantica del grafo usa un motore a grafo in memoria che funziona sui dati nella memoria del cluster, rendendo l'analisi del grafo interattiva e veloce. Il consumo di memoria di una rappresentazione del grafo è influenzato dal numero di nodi e archi e dalle rispettive proprietà. Il motore a grafo usa un modello di grafo delle proprietà che supporta proprietà arbitrarie per nodi e archi. Si integra anche con tutti gli operatori scalari esistenti di KQL, che consente agli utenti di scrivere query di gragrafi espressive e complesse che possono usare la potenza e le funzionalità complete di KQL.

Perché usare la semantica del grafo in KQL?

Esistono diversi motivi per usare la semantica del grafo in KQL, ad esempio gli esempi seguenti:

  • KQL non supporta join ricorsivi, quindi è necessario definire in modo esplicito gli attraversamenti da eseguire (vedere Scenario: Amici di un amico). È possibile usare l'operatore make-graph per definire hop di lunghezza variabile, utile quando la distanza o la profondità della relazione non è fissa. Ad esempio, è possibile usare questo operatore per trovare tutte le risorse connesse in un grafico o tutte le posizioni che è possibile raggiungere da un'origine in una rete di trasporto.

  • I grafici con riconoscimento del tempo sono una caratteristica unica della semantica del grafo in KQL che consente agli utenti di modellare i dati del grafo come una serie di eventi di manipolazione del grafo nel tempo. Gli utenti possono esaminare l'evoluzione del grafico nel tempo, ad esempio il modo in cui la struttura di rete del grafo o le proprietà del nodo cambiano o come si verificano gli eventi o le anomalie del grafico. Ad esempio, gli utenti possono usare query di serie temporali per individuare tendenze, modelli o outlier nei dati del grafo, ad esempio come la densità di rete, la centralità o la modularità cambiano nel tempo

  • La funzionalità intellisense dell'editor di query KQL consente agli utenti di scrivere ed eseguire query nel linguaggio di query. Fornisce evidenziazione della sintassi, completamento automatico, controllo degli errori e suggerimenti. Consente inoltre agli utenti di usare l'estensione semantica del grafo offrendo parole chiave, operatori, funzioni ed esempi specifici del grafo per guidare gli utenti attraverso il processo di creazione e query del grafo.

Limiti

Di seguito sono riportati alcuni dei limiti principali della funzionalità semantica del grafo in KQL:

  • È possibile creare o eseguire query solo su grafici che rientrano nella memoria di un nodo del cluster.
  • I dati del grafo non vengono resi persistenti o distribuiti tra i nodi del cluster e vengono eliminati dopo l'esecuzione della query.

Pertanto, quando si usa la funzionalità semantica del grafo in KQL, è consigliabile considerare l'utilizzo della memoria e le implicazioni sulle prestazioni della creazione e dell'esecuzione di query su grafici di grandi dimensioni o dense. Se possibile, è consigliabile usare filtri, proiezioni e aggregazioni per ridurre le dimensioni e la complessità del grafico.