Compartir a través de


Introducción a la semántica de grafos de Lenguaje de consulta Kusto (KQL)

La semántica de grafos en Lenguaje de consulta Kusto (KQL) permite modelar y consultar datos como grafos. La estructura de un grafo consta de nodos y bordes que los conectan. Tanto los nodos como los bordes pueden tener propiedades que las describen.

Los gráficos son útiles para representar datos complejos y dinámicos que implican relaciones de varios a varios, jerárquicos o en red, como redes sociales, sistemas de recomendación, recursos conectados o gráficos de conocimiento. Por ejemplo, en el gráfico siguiente se muestra una red social que consta de cuatro nodos y tres bordes. Cada nodo tiene una propiedad para su nombre, como Bob, y cada borde tiene una propiedad para su tipo, como reportsTo.

Diagrama que muestra una red social como gráfico.

Los gráficos almacenan datos de forma diferente de las bases de datos relacionales, que usan tablas y necesitan índices y combinaciones para conectar datos relacionados. En los gráficos, cada nodo tiene un puntero directo a sus vecinos (adyacencia), por lo que no es necesario indexar ni unir nada, lo que facilita y rápido recorrer el gráfico. Las consultas de grafos pueden usar la estructura y el significado del grafo para realizar operaciones complejas y eficaces, como buscar rutas de acceso, patrones, distancias más cortas, comunidades o medidas de centralidad.

Puede crear y consultar gráficos mediante la semántica del grafo KQL, que tiene una sintaxis sencilla e intuitiva que funciona bien con las características de KQL existentes. También puede combinar consultas de grafos con otras características de KQL, como consultas basadas en tiempo, basadas en ubicación y aprendizaje automático, para realizar análisis de datos más avanzados y eficaces. Mediante el uso de KQL con semántica de grafos, obtendrá la velocidad y escala de las consultas KQL con la flexibilidad y expresividad de los gráficos.

Por ejemplo, puedes usar:

  • Consultas basadas en tiempo para analizar la evolución de un grafo a lo largo del tiempo, como cómo cambian la estructura de red o las propiedades del nodo.
  • Consultas geoespaciales para analizar la distribución espacial o la proximidad de nodos y bordes, como cómo afecta la ubicación o la distancia a la relación
  • Consultas de aprendizaje automático para aplicar varios algoritmos o modelos a datos de grafos, como la agrupación en clústeres, la clasificación o la detección de anomalías

¿Cómo funciona?

Cada consulta de la semántica del grafo en Kusto requiere la creación de una nueva representación de grafo. Se usa un operador de grafo que convierte expresiones tabulares para bordes y, opcionalmente, nodos en una representación gráfica de los datos. Una vez creado el gráfico, puede aplicar operaciones diferentes para mejorar o examinar aún más los datos del grafo.

La extensión semántica de grafos usa un motor de grafos en memoria que funciona en los datos de la memoria del clúster, lo que hace que el análisis de grafos sea interactivo y rápido. El consumo de memoria de una representación de grafo se ve afectado por el número de nodos y bordes y sus propiedades respectivas. El motor de grafos usa un modelo de grafo de propiedades que admite propiedades arbitrarias para nodos y bordes. También se integra con todos los operadores escalares existentes de KQL, lo que proporciona a los usuarios la capacidad de escribir consultas de grafos expresivas y complejas que pueden usar toda la potencia y la funcionalidad de KQL.

¿Por qué usar la semántica de grafos en KQL?

Hay varias razones para usar la semántica de grafos en KQL, como los ejemplos siguientes:

  • KQL no admite combinaciones recursivas, por lo que tienes que definir explícitamente los recorridos que quieras ejecutar (consulta Escenario: Amigos de un amigo). Puede usar el operador make-graph para definir saltos de longitud variable, lo que resulta útil cuando no se fija la distancia o profundidad de la relación. Por ejemplo, puede usar este operador para buscar todos los recursos conectados en un grafo o todos los lugares a los que puede acceder desde un origen en una red de transporte.

  • Los gráficos con reconocimiento temporal son una característica única de la semántica del grafo en KQL que permite a los usuarios modelar datos de grafos como una serie de eventos de manipulación de grafos a lo largo del tiempo. Los usuarios pueden examinar cómo evoluciona el gráfico a lo largo del tiempo, como cómo cambian la estructura de red del grafo o las propiedades del nodo, o cómo se producen los eventos o anomalías del grafo. Por ejemplo, los usuarios pueden usar consultas de series temporales para detectar tendencias, patrones o valores atípicos en los datos del grafo, como cómo cambian la densidad de red, la centralidad o la modularidad a lo largo del tiempo.

  • La característica intellisense del editor de consultas KQL ayuda a los usuarios a escribir y ejecutar consultas en el lenguaje de consulta. Proporciona resaltado de sintaxis, autocompletar, comprobación de errores y sugerencias. También ayuda a los usuarios con la extensión semántica de grafos ofreciendo palabras clave, operadores, funciones y ejemplos específicos del grafo para guiar a los usuarios a través del proceso de creación y consulta del grafo.

Límites

A continuación se muestran algunos de los principales límites de la característica semántica del grafo en KQL:

  • Solo puede crear o consultar gráficos que se ajusten a la memoria de un nodo de clúster.
  • Los datos del grafo no se conservan ni distribuyen entre nodos de clúster y se descartan después de la ejecución de la consulta.

Por lo tanto, al usar la característica de semántica de grafos en KQL, debe tener en cuenta las implicaciones de consumo de memoria y rendimiento de la creación y consulta de grafos grandes o densos. Siempre que sea posible, debe usar filtros, proyecciones y agregaciones para reducir el tamaño y la complejidad del gráfico.