Поделиться через


Обзор семантики графа язык запросов Kusto (KQL)

Семантика графа в язык запросов Kusto (KQL) позволяет моделировать и запрашивать данные в виде графов. Структура графа состоит из узлов и ребер, которые соединяют их. Оба узла и ребра могут иметь свойства, описывающие их.

Графы полезны для представления сложных и динамических данных, которые включают связи "многие ко многим", иерархические или сетевые связи, такие как социальные сети, системы рекомендаций, подключенные ресурсы или графы знаний. Например, на следующем графике показана социальная сеть, состоящая из четырех узлов и трех ребер. Каждый узел имеет свойство для своего имени, например Bob, и каждый край имеет свойство для своего типа, например reportsTo.

Схема, на которую показана социальная сеть в виде графа.

Графы хранят данные по-разному от реляционных баз данных, которые используют таблицы и нуждаются в индексах и соединениях для подключения связанных данных. В графах каждый узел имеет прямой указатель на своих соседей (примежание), поэтому нет необходимости индексировать или присоединять все, что делает его простым и быстрым для обхода графа. Запросы графа могут использовать структуру графа и смысле для выполнения сложных и мощных операций, таких как поиск путей, шаблонов, коротких расстояний, общин или центральных мер.

Вы можете создавать и запрашивать графы с помощью семантики графа KQL, которая имеет простой и интуитивно понятный синтаксис, который хорошо работает с существующими функциями KQL. Вы также можете смешивать запросы графов с другими функциями KQL, такими как временные, основанные на расположении и запросы машинного обучения, для более расширенного и эффективного анализа данных. Используя KQL с семантикой графов, вы получаете скорость и масштаб запросов KQL с гибкостью и экспрессивностью графов.

Например, можно использовать следующее:

  • Запросы на основе времени для анализа эволюции графа с течением времени, такие как изменение сетевой структуры или свойств узла
  • Геопространственные запросы для анализа пространственного распределения или близости узлов и ребер, таких как расположение или расстояние влияет на связь.
  • Запросы машинного обучения для применения различных алгоритмов или моделей к данным графа, например кластеризация, классификации или обнаружения аномалий

Как это работает?

Каждый запрос семантики графа в Kusto требует создания нового представления графа. Вы используете оператор графа, который преобразует табличные выражения для ребер и необязательных узлов в представление графа данных. После создания графа можно применить различные операции для дальнейшего улучшения или изучения данных графа.

Расширение семантики графа использует подсистему графа в памяти, которая работает с данными в памяти кластера, что делает анализ графа интерактивным и быстрым. Потребление памяти представления графа зависит от количества узлов и ребер и их соответствующих свойств. Подсистема графов использует модель графа свойств, которая поддерживает произвольные свойства для узлов и ребер. Он также интегрируется со всеми существующими скалярными операторами KQL, что дает пользователям возможность писать экспрессивные и сложные запросы графа, которые могут использовать полную мощность и функциональные возможности KQL.

Зачем использовать семантику графа в KQL?

Существует несколько причин использования семантики графа в KQL, например в следующих примерах:

  • KQL не поддерживает рекурсивные соединения, поэтому необходимо явно определить обходы, которые вы хотите запустить (см . сценарий: друзья друга). Оператор make-graph можно использовать для определения прыжков переменной длины, что полезно, если расстояние связи или глубина не фиксирована. Например, этот оператор можно использовать для поиска всех ресурсов, подключенных в графе или всех местах, которые можно получить из источника в транспортной сети.

  • Графики с учетом времени — это уникальная функция семантики графов в KQL, которая позволяет пользователям моделировать данные графа в виде ряда событий обработки графа с течением времени. Пользователи могут изучить, как граф развивается со временем, например, как сетевая структура графа или свойства узла, а также как происходят события графа или аномалии. Например, пользователи могут использовать запросы временных рядов для обнаружения тенденций, шаблонов или выскользов в данных графа, таких как плотность сети, централизация или модульность с течением времени

  • Функция intellisense редактора запросов KQL помогает пользователям писать и выполнять запросы на языке запросов. Он обеспечивает выделение синтаксиса, автозавершение, проверка ошибок и предложений. Он также помогает пользователям с расширением семантики графа, предлагая ключевое слово графа, операторы, функции и примеры для руководства пользователям с помощью процесса создания графа и запроса.

Ограничения

Ниже приведены некоторые из основных ограничений функции семантики графа в KQL:

  • Вы можете создавать или запрашивать графы, которые помещаются в память одного узла кластера.
  • Данные графа не сохраняются или распределяются по узлам кластера и не карта после выполнения запроса.

Поэтому при использовании функции семантики графов в KQL следует учитывать последствия использования памяти и производительности для создания и запроса больших или плотных графов. По возможности следует использовать фильтры, проекции и агрегаты для уменьшения размера графа и сложности.