Visão geral da semântica de grafo da KQL (Linguagem de Consulta Kusto)
A semântica de grafo em Kusto Query Language (KQL) permite modelar e consultar dados como gráficos. A estrutura de um grafo compreende nós e arestas que os conectam. Tanto os nós quanto as bordas podem ter propriedades que os descrevem.
Os gráficos são úteis para representar dados complexos e dinâmicos que envolvem relacionamentos muitos-para-muitos, hierárquicos ou em rede, como redes sociais, sistemas de recomendação, ativos conectados ou gráficos de conhecimento. Por exemplo, o gráfico a seguir ilustra uma rede social que consiste em quatro nós e três bordas. Cada nó tem uma propriedade para seu nome, como Bob, e cada borda tem uma propriedade para seu tipo, como reportsTo.
Os gráficos armazenam dados de forma diferente dos bancos de dados relacionais, que usam tabelas e precisam de índices e junções para conectar dados relacionados. Nos gráficos, cada nó tem um ponteiro direto para seus vizinhos (adjacência), portanto, não há necessidade de indexar ou unir nada, tornando fácil e rápido percorrer o gráfico. As consultas de grafo podem usar a estrutura e o significado do grafo para realizar operações complexas e poderosas, como encontrar caminhos, padrões, distâncias mais curtas, comunidades ou medidas de centralidade.
Você pode criar e consultar gráficos usando a semântica de gráfico KQL, que tem uma sintaxe simples e intuitiva que funciona bem com os recursos KQL existentes. Você também pode combinar consultas gráficas com outros recursos do KQL, como consultas baseadas em tempo, baseadas em localização e aprendizado de máquina, para fazer análises de dados mais avançadas e poderosas. Usando o KQL com semântica de grafos, você obtém a velocidade e a escala das consultas KQL com a flexibilidade e a expressividade dos grafos.
Por exemplo, você pode usar:
- Consultas baseadas em tempo para analisar a evolução de um gráfico ao longo do tempo, por exemplo, como a estrutura da rede ou as propriedades do nó mudam
- Consultas geoespaciais para analisar a distribuição espacial ou a proximidade de nós e bordas, por exemplo, como a localização ou a distância afetam a relação
- Consultas de aprendizado de máquina para aplicar vários algoritmos ou modelos a dados gráficos, como clustering, classificação ou detecção de anomalias
Como ele funciona?
Cada consulta da semântica do grafo no Kusto requer a criação de uma nova representação do grafo. Você usa um operador de gráfico que converte expressões tabulares para bordas e, opcionalmente, nós em uma representação gráfica dos dados. Depois que o gráfico é criado, você pode aplicar diferentes operações para aprimorar ou examinar ainda mais os dados do gráfico.
A extensão de semântica de grafo usa um mecanismo de grafo na memória que funciona nos dados na memória do cluster, tornando a análise de grafo interativa e rápida. O consumo de memória de uma representação gráfica é afetado pelo número de nós e arestas e suas respectivas propriedades. O mecanismo de grafo usa um modelo de grafo de propriedade que suporta propriedades arbitrárias para nós e bordas. Ele também se integra a todos os operadores escalares existentes do KQL, o que oferece aos usuários a capacidade de escrever consultas gráficas expressivas e complexas que podem usar todo o poder e funcionalidade do KQL.
Por que usar a semântica de grafos no KQL?
Há vários motivos para usar a semântica de grafos no KQL, como os exemplos a seguir:
O KQL não dá suporte a junções recursivas, portanto, você precisa definir explicitamente as travessias que deseja executar (consulte Cenário: Amigos de um amigo). Você pode usar o operador make-graph para definir saltos de comprimento variável, o que é útil quando a distância ou a profundidade da relação não são fixas. Por exemplo, você pode usar esse operador para encontrar todos os recursos que estão conectados em um gráfico ou todos os lugares que você pode alcançar a partir de uma fonte em uma rede de transporte.
Os gráficos com reconhecimento de tempo são um recurso exclusivo da semântica de grafos no KQL que permite aos usuários modelar dados de grafos como uma série de eventos de manipulação de grafos ao longo do tempo. Os usuários podem examinar como o gráfico evolui ao longo do tempo, como a estrutura de rede do gráfico ou as propriedades do nó mudam, ou como os eventos ou anomalias do gráfico acontecem. Por exemplo, os usuários podem usar consultas de séries temporais para descobrir tendências, padrões ou discrepâncias nos dados do gráfico, como a forma como a densidade, centralidade ou modularidade da rede mudam ao longo do tempo
O recurso intellisense do editor de consultas KQL auxilia os usuários a escrever e executar consultas na linguagem de consulta. Ele fornece realce de sintaxe, preenchimento automático, verificação de erros e sugestões. Ele também ajuda os usuários com a extensão semântica de grafo, oferecendo palavras-chave, operadores, funções e exemplos específicos de grafo para orientar os usuários no processo de criação e consulta de grafos.
Limites
A seguir estão alguns dos principais limites do recurso de semântica de grafo no KQL:
- Você só pode criar ou consultar gráficos que se encaixam na memória de um nó de cluster.
- Os dados do grafo não são persistidos ou distribuídos entre nós de cluster e são descartados após a execução da consulta.
Portanto, ao usar o recurso de semântica de grafo no KQL, você deve considerar o consumo de memória e as implicações de desempenho da criação e consulta de grafos grandes ou densos. Sempre que possível, você deve usar filtros, projeções e agregações para reduzir o tamanho e a complexidade do gráfico.