KQL(Kusto 쿼리 언어) 그래프 의미 체계 개요
KQL(Kusto 쿼리 언어 그래프 의미 체계)을 사용하면 데이터를 그래프로 모델링하고 쿼리할 수 있습니다. 그래프의 구조는 노드와 해당 노드를 연결하는 에지로 구성됩니다. 노드와 에지 모두 해당 노드를 설명하는 속성을 가질 수 있습니다.
그래프는 소셜 네트워크, 권장 시스템, 연결된 자산 또는 지식 그래프와 같은 다대다, 계층 또는 네트워크 관계를 포함하는 복잡하고 동적 데이터를 나타내는 데 유용합니다. 예를 들어 다음 그래프는 4개의 노드와 3개의 가장자리로 구성된 소셜 네트워크를 보여 줍니다. 각 노드에는 Bob과 같은 이름의 속성이 있으며 각 에지에는 reportsTo와 같은 형식에 대한 속성이 있습니다.
그래프는 테이블을 사용하고 관련 데이터를 연결하기 위해 인덱스와 조인이 필요한 관계형 데이터베이스와는 다르게 데이터를 저장합니다. 그래프에서 각 노드에는 인접한 노드에 대한 직접 포인터가 있으므로 아무것도 인덱싱하거나 조인할 필요가 없으므로 그래프를 쉽고 빠르게 트래버스할 수 있습니다. 그래프 쿼리는 그래프 구조와 의미를 사용하여 경로, 패턴, 최단 거리, 커뮤니티 또는 중앙 위치 측정값 찾기와 같은 복잡하고 강력한 작업을 수행할 수 있습니다.
기존 KQL 기능과 잘 작동하는 간단하고 직관적인 구문이 있는 KQL 그래프 의미 체계를 사용하여 그래프를 만들고 쿼리할 수 있습니다. 그래프 쿼리를 시간 기반, 위치 기반 및 기계 학습 쿼리와 같은 다른 KQL 기능과 혼합하여 고급 및 강력한 데이터 분석을 수행할 수도 있습니다. 그래프 의미 체계와 함께 KQL을 사용하면 그래프의 유연성과 표현력으로 KQL 쿼리의 속도와 규모를 얻을 수 있습니다.
예를 들어 다음을 사용할 수 있습니다.
- 네트워크 구조 또는 노드 속성이 변경되는 방식과 같이 시간이 지남에 따라 그래프의 진화를 분석하는 시간 기반 쿼리
- 위치 또는 거리가 관계에 미치는 영향과 같이 노드와 에지의 공간 분포 또는 근접성을 분석하는 지리 공간적 쿼리
- 클러스터링, 분류 또는 변칙 검색과 같은 다양한 알고리즘 또는 모델을 그래프 데이터에 적용하는 기계 학습 쿼리
작동 방식
Kusto에서 그래프 의미 체계를 쿼리할 때마다 새 그래프 표현을 만들어야 합니다. 에지 및 선택적으로 노드에 대한 테이블 형식 식을 데이터의 그래프 표현으로 변환하는 그래프 연산자를 사용합니다. 그래프가 만들어지면 다른 작업을 적용하여 그래프 데이터를 더욱 향상시키거나 검사할 수 있습니다.
그래프 의미 체계 확장은 클러스터 메모리의 데이터에서 작동하는 메모리 내 그래프 엔진을 사용하여 그래프 분석을 대화형으로 빠르게 만듭니다. 그래프 표현의 메모리 사용량은 노드 및 에지 수와 해당 속성의 영향을 받습니다. 그래프 엔진은 노드 및 에지에 대한 임의의 속성을 지원하는 속성 그래프 모델을 사용합니다. 또한 KQL의 모든 기존 스칼라 연산자와 통합되어 사용자에게 KQL의 전체 기능과 기능을 사용할 수 있는 표현적이고 복잡한 그래프 쿼리를 작성할 수 있습니다.
KQL에서 그래프 의미 체계를 사용하는 이유는 무엇인가요?
다음 예제와 같이 KQL에서 그래프 의미 체계를 사용하는 데는 몇 가지 이유가 있습니다.
KQL은 재귀 조인을 지원하지 않으므로 실행하려는 순회를 명시적으로 정의해야 합니다(시나리오: 친구의 친구 참조). make-graph 연산자를 사용하여 가변 길이의 홉을 정의할 수 있습니다. 이는 관계 거리 또는 깊이가 고정되지 않은 경우에 유용합니다. 예를 들어 이 연산자를 사용하여 그래프에 연결된 모든 리소스 또는 운송 네트워크의 원본에서 연결할 수 있는 모든 위치를 찾을 수 있습니다.
시간 인식 그래프는 사용자가 시간이 지남에 따라 일련의 그래프 조작 이벤트로 그래프 데이터를 모델링할 수 있도록 하는 KQL의 그래프 의미 체계의 고유한 기능입니다. 사용자는 그래프의 네트워크 구조 또는 노드 속성이 어떻게 변경되는지 또는 그래프 이벤트 또는 변칙이 어떻게 발생하는지와 같이 시간이 지남에 따라 그래프가 어떻게 진화하는지 확인할 수 있습니다. 예를 들어 사용자는 시계열 쿼리를 사용하여 그래프 데이터의 추세, 패턴 또는 이상값(예: 시간에 따라 네트워크 밀도, 중앙 집중성 또는 모듈성 변경 방식)을 검색할 수 있습니다.
KQL 쿼리 편집기의 intellisense 기능은 사용자가 쿼리 언어로 쿼리를 작성하고 실행하는 데 도움이 됩니다. 구문 강조 표시, 자동 완성, 오류 검사 및 제안을 제공합니다. 또한 그래프별 키워드(keyword), 연산자, 함수 및 예제를 제공하여 그래프 생성 및 쿼리 프로세스를 통해 사용자를 안내하여 그래프 의미 체계 확장을 사용하는 사용자에게 도움이 됩니다.
제한
다음은 KQL에서 그래프 의미 체계 기능의 기본 제한 중 일부입니다.
- 하나의 클러스터 노드의 메모리에 맞는 그래프만 만들거나 쿼리할 수 있습니다.
- 그래프 데이터는 클러스터 노드 간에 유지되거나 분산되지 않으며 쿼리 실행 후 카드 해제됩니다.
따라서 KQL에서 그래프 의미 체계 기능을 사용하는 경우 크거나 조밀한 그래프를 만들고 쿼리할 때 메모리 사용량과 성능에 미치는 영향을 고려해야 합니다. 가능한 경우 필터, 프로젝션 및 집계를 사용하여 그래프 크기와 복잡성을 줄여야 합니다.