SQL Server 및 Azure SQL Database를 사용하여 그래프 처리
적용 대상: SQL Server 2017(14.x) 이상 Azure SQL DatabaseAzure SQL Managed Instance
SQL Server는 다대다 관계를 모델링하는 그래프 데이터베이스 기능을 제공합니다. 그래프 관계는 Transact-SQL에 통합되며 SQL Server를 기본 데이터베이스 관리 시스템으로 사용할 경우의 이점을 누릴 수 있습니다.
그래프 데이터베이스란?
그래프 데이터베이스는 노드(또는 꼭짓점) 및 모서리(또는 관계) 컬렉션입니다. 노드는 엔터티(예: 개인 또는 조직)를 나타내고 에지는 에지가 연결하는 두 노드 간의 관계(예: 좋아요 또는 친구)를 나타냅니다. 노드와 에지 모두 연결된 속성을 가질 수 있습니다. 다음은 그래프 데이터베이스를 고유하게 만드는 몇 가지 기능입니다.
- 에지 또는 관계는 Graph 데이터베이스의 첫 번째 클래스 엔터티이며 해당 엔터티와 연결된 특성 또는 속성을 가질 수 있습니다.
- 단일 에지는 Graph 데이터베이스에서 여러 노드를 유연하게 연결할 수 있습니다.
- 패턴 일치 및 다중 홉 탐색 쿼리를 쉽게 표현할 수 있습니다.
- 전이적 폐쇄 및 다형 쿼리를 쉽게 표현할 수 있습니다.
그래프 데이터베이스를 사용하는 경우
관계형 데이터베이스는 그래프 데이터베이스가 할 수 있는 모든 것을 달성할 수 있습니다. 그러나 그래프 데이터베이스를 사용하면 특정 종류의 쿼리를 더 쉽게 표현할 수 있습니다. 또한 특정 최적화를 사용하면 특정 쿼리의 성능이 향상됩니다. 관계형 또는 그래프 데이터베이스를 선택하는 결정은 다음 요인에 따라 결정됩니다.
- 애플리케이션에 계층적 데이터가 있습니다. HierarchyID 데이터 형식을 사용하여 계층 구조를 구현할 수 있지만 몇 가지 제한 사항이 있습니다. 예를 들어 노드에 대한 여러 부모를 저장할 수 없습니다.
- 애플리케이션에는 복잡한 다대다 관계가 있습니다. 애플리케이션이 발전함에 따라 새 관계가 추가됩니다.
- 상호 연결된 데이터 및 관계를 분석해야 합니다.
SQL Server 2017에 도입된 그래프 기능(14.x)
다음 기능은 SQL Server 2017에서 도입되었습니다.
그래프 개체 만들기
Transact-SQL 확장을 사용하면 사용자가 노드 또는 에지 테이블을 만들 수 있습니다. 노드와 에지 모두 연결된 속성을 가질 수 있습니다. 노드와 에지는 테이블로 저장되므로 관계형 테이블에서 지원되는 모든 작업은 노드 또는 에지 테이블에서 지원됩니다. 예를 들면 다음과 같습니다.
CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;
다음 다이어그램에서는 노드와 에지가 테이블로 저장되는 방법을 보여 줍니다.
쿼리 언어 확장
그래프를 통한 패턴 일치 및 다중 홉 탐색을 지원하기 위해 새 MATCH
절이 도입되었습니다. 이 함수는 MATCH
패턴 일치를 위해 ASCII 아트 스타일 구문을 사용합니다. 예를 들어 "John"의 친구를 찾으려면 다음을 수행합니다.
-- Find friends of John
SELECT Person2.Name
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';
SQL Server 데이터베이스 엔진에 완전히 통합됨
그래프 확장은 SQL Server 엔진에 완전히 통합됩니다. 동일한 스토리지 엔진, 메타데이터, 쿼리 프로세서 등을 사용하여 그래프 데이터를 저장하고 쿼리합니다. 단일 쿼리에서 그래프 및 관계형 데이터를 쿼리합니다. 그래프 기능을 columnstore 인덱스, HA, R 서비스 등과 같은 다른 SQL Server 기술과 결합하면 SQL 그래프는 SQL Server에서 사용할 수 있는 모든 보안 및 규정 준수 기능도 지원합니다.
도구 및 에코시스템
SQL Server에서 제공하는 기존 도구 및 에코시스템의 이점을 활용할 수 있습니다. 백업 및 복원, 가져오기 및 내보내기와 같은 도구인 BCP는 바로 작동합니다. SSIS, SSRS 또는 Power BI와 같은 다른 도구 또는 서비스는 관계형 테이블에서 작동하는 방식만 그래프 테이블로 작동합니다.
에지 제약 조건
에지 제약 조건은 그래프 에지 테이블에 정의되며 지정된 에지 형식이 연결할 수 있는 노드 테이블 쌍입니다. 에지 제약 조건은 개발자가 지정된 에지가 연결할 수 있는 노드 유형을 제한하는 데 도움이 됩니다.
에지 제약 조건을 만들고 사용하는 방법에 대한 자세한 내용은 Edge 제약 조건을 참조 하세요.
DML 병합
MERGE 문은 원본 테이블과의 조인 결과에 따라 대상 테이블에 대한 삽입, 업데이트 또는 삭제 작업을 수행합니다. 예를 들어 대상 테이블과 원본 테이블 간의 차이점에 따라 대상 테이블의 행을 삽입, 업데이트 또는 삭제하여 두 테이블을 동기화할 수 있습니다. MERGE 문에서 MATCH 조건자를 사용하는 것은 이제 Azure SQL Database 및 SQL Server vNext에서 지원됩니다. 즉, 이제 MATCH 조건자를 사용하여 현재 그래프 데이터(노드 또는 에지 테이블)를 새 데이터와 병합하여 별도의 INSERT/UPDATE/DELETE 문 대신 단일 문에서 그래프 관계를 지정할 수 있습니다.
병합 DML에서 일치를 사용하는 방법에 대한 자세한 내용은 MERGE 문을 참조하세요.
최단 경로
SHORTEST_PATH 함수는 그래프의 두 노드 간 또는 지정된 노드에서 그래프의 다른 모든 노드로 시작하는 가장 짧은 경로를 찾습니다. SHORTEST PATH
는 그래프에서 전이적 닫기 또는 임의 길이 순회를 찾는 데 사용할 수도 있습니다.
다음 단계
- SQL Graph 데이터베이스 읽기 - 아키텍처
- SQL Graph를 시작하려면 SQL Graph 데이터베이스 - 샘플을 참조 하세요.