Spanner Graph 개요

Spanner Graph는 Spanner 내에서 직접 그래프 데이터베이스를 사용하여 속성 그래프를 빌드하고 쿼리할 수 있는 Spanner 및 Spanner Omni의 기능입니다. Spanner Graph는 Spanner의 확장성 및 안정성과 그래프 모델링 및 쿼리의 강력한 기능을 결합합니다.

속성 그래프는 데이터를 노드 (항목) 및 에지 (항목 간의 관계)로 모델링하며, 둘 다 속성 (라벨 및 메타데이터)을 가질 수 있습니다. 이는 소셜 네트워크, 사기 감지, 추천 엔진과 같이 복잡하고 연결성이 높은 데이터에 특히 유용합니다.

이 문서의 주제는 Spanner에 적용되는 방식과 동일한 방식으로 Spanner Omni에 적용됩니다.

Spanner Graph 설정 및 쿼리

Spanner Graph를 사용하려면 먼저 Spanner Omni 배포 및 데이터베이스를 만들어야 합니다. 데이터베이스를 만든 후 기존 Spanner Omni 테이블을 그래프 노드 및 에지에 매핑하는 속성 그래프 스키마를 정의합니다.

스키마를 설정하고 기본 테이블에 데이터를 삽입한 후 ISO GQL 표준을 구현하는 GoogleSQL의 확장 프로그램인 Graph Query Language (GQL)를 사용하여 그래프 쿼리를 실행할 수 있습니다. 자세한 내용은 Spanner 문서의 Spanner Graph 설정 및 쿼리 를 참조하세요.

Spanner Graph 스키마 개요

Spanner Graph 스키마는 관계형 데이터를 그래프로 해석합니다. 스키마는 그래프를 구성하는 노드 테이블과 에지 테이블을 지정합니다. 각 테이블은 Spanner 테이블의 행을 그래프 요소에 매핑합니다. 요소에는 이를 분류하는 라벨과 속성을 저장하는 속성이 있을 수 있습니다. 자세한 내용은 Spanner 문서의 스키마 개요를 참조하세요.

Spanner Graph 스키마 만들기 및 관리

데이터 정의 언어 (DDL) 문을 사용하여 속성 그래프 정의를 만들거나 업데이트하거나 삭제합니다. CREATE PROPERTY GRAPH 문은 기본 테이블, 키, 라벨을 지정하여 그래프를 정의합니다. 자세한 내용은 Spanner 문서의 Spanner Graph 스키마 만들기 및 관리 를 참조하세요.

스키마 설계 권장사항

효율적인 스키마 설계는 성능에 매우 중요합니다. 권장사항에 포함되는 내용:

  • 인터리브 처리를 사용하여 에지를 소스 노드와 함께 배치합니다.

  • 참조 제약조건 (외래 키)을 사용하여 그래프 무결성을 보장합니다.

  • 자주 필터링되는 속성에 보조 색인을 만듭니다.

  • 쿼리 패턴에 따라 스키마가 적용된 설계와 스키마가 없는 설계 중에서 선택합니다.

자세한 내용은 Spanner 문서의 스키마 설계 권장사항 을 참조하세요.

SQL 뷰를 사용하여 속성 그래프 만들기

SQL 뷰를 사용하여 그래프의 노드와 에지를 정의할 수 있습니다. SQL 뷰와 테이블을 사용하여 그래프를 만드는 것의 차이점을 알아보려면 Spanner 문서의 테이블 대신 뷰로 그래프를 만드는 이점 을 참조하세요.

SQL 뷰에서 만든 그래프 개요

뷰를 추상화 계층으로 사용하면 행 수준 액세스 제어, 유연한 데이터 변환, 스키마 없는 데이터 모델에서 공식화된 데이터 모델로의 원활한 전환이 가능합니다. 자세한 내용은 SQL 뷰에서 만든 그래프 개요를 참조하세요.

SQL 뷰에서 그래프 만들기

뷰에서 그래프를 만들려면 표준 SQL을 사용하여 뷰를 정의합니다. 그런 다음 CREATE PROPERTY GRAPH 문의 NODE TABLES 또는 EDGE TABLES 절에서 이를 참조합니다. 뷰 기반 요소마다 KEY를 명시적으로 정의해야 합니다. KEY 절은 각 그래프 요소를 고유하게 식별하는 소스 뷰의 열을 지정합니다. 자세한 내용은 Spanner 문서의 SQL 뷰에서 그래프 만들기를 참조하세요.

Spanner Graph 데이터 관리

그래프를 정의하는 기본 테이블을 수정하여 Spanner Graph에서 데이터를 관리합니다. 자세한 내용은 Spanner Graph 데이터 관리 를 Spanner 문서에서 참조하세요.

작업 설명
삽입 INSERT 문 또는 변경 API를 사용하여 노드 및 에지 테이블에 새 행을 추가합니다.
업데이트 기본 테이블에서 해당 열을 업데이트하여 기존 속성을 수정합니다.
삭제 해당 행을 삭제하여 노드 또는 에지를 삭제합니다. ON DELETE CASCADE를 사용하여 노드를 삭제할 때 연결된 에지를 자동으로 삭제합니다.

Spanner Graph 쿼리

Spanner Graph는 그래프 데이터를 순회하고 분석하는 쿼리를 위해 Graph Query Language (GQL)을 지원합니다.

쿼리 개요

그래프 쿼리는 GRAPH 절을 사용하여 대상 그래프를 지정하고 MATCH 절을 사용하여 찾으려는 패턴을 정의합니다. 노드 및 에지 속성을 반환하거나 결과에 집계를 수행할 수 있습니다. 자세한 내용은 Spanner 문서의 쿼리 개요를 참조하세요.

경로 사용

경로는 그래프의 노드와 에지 시퀀스를 나타냅니다. 두 노드 간의 모든 경로를 찾거나, 최단 경로를 찾거나, PATH_LENGTH(), NODES(), EDGES()와 같은 함수를 사용하여 속성 또는 길이에 따라 경로를 필터링할 수 있습니다. 자세한 내용은 Spanner 문서의 경로 사용을 참조하세요.

쿼리 조정 권장사항

그래프 쿼리를 최적화하려면 다음 단계를 따르세요.

  • 낮은 카디널리티 노드에서 순회를 시작합니다.

  • 모든 노드 및 에지 패턴에 라벨을 명시적으로 지정합니다.

  • IS_FIRST() 함수를 사용하여 카디널리티가 높은 슈퍼 노드 에서 순회하는 에지 수를 제한합니다.

자세한 내용은 Spanner 문서의 쿼리 조정 권장사항 을 참조하세요.

Spanner Graph는 Spanner 전체 텍스트 검색 기능과 통합되어 SEARCH() 함수를 사용하여 구조화되지 않은 텍스트 속성을 기반으로 노드 또는 에지를 검색할 수 있습니다. 자세한 내용은 Spanner 문서의 Spanner Graph로 전체 텍스트 검색 사용 을 참조하세요.

그래프 데이터에 벡터 유사성 검색을 실행하여 K-최근접 이웃 (KNN) 또는 근사 최근접 이웃 (ANN)을 찾을 수 있습니다. 이는 유사성 기반 추천 및 AI 기반 애플리케이션에 유용합니다. 자세한 내용은 Spanner 문서의 Spanner Graph에서 벡터 검색 사용 을 참조하세요.

Spanner Graph로 스키마 없는 데이터 관리

진화하는 데이터 모델이 있는 애플리케이션의 경우 Spanner Graph는 스키마 없는 데이터 관리를 지원합니다. 속성의 JSON 열이 있는 단일 일반 테이블에 모든 노드와 에지를 저장할 수 있으므로 DDL 변경 없이 새 유형과 속성을 추가할 수 있습니다. 자세한 내용은 Spanner 문서의 Spanner Graph로 스키마 없는 데이터 관리 를 참조하세요.

Spanner Graph로 마이그레이션

기존 그래프 데이터를 다른 데이터베이스에서 Spanner Graph로 마이그레이션할 수 있습니다. 이 프로세스에는 일반적으로 데이터를 CSV 또는 JSON 파일로 내보낸 후 새 속성 그래프를 지원하는 Spanner 테이블로 가져오는 작업이 포함됩니다. 자세한 내용은 Spanner 문서의 Spanner Graph로 데이터 마이그레이션 을 참조하세요.

openCypher 사용자를 위한 Spanner Graph 참조

openCypher를 사용해 본 적이 있다면 Spanner Graph의 GQL 구현이 익숙하겠지만 구문에는 몇 가지 차이점이 있습니다. 이 참조는 openCypher 개념과 쿼리를 Spanner Graph MATCHRETURN 시맨틱스에 매핑하는 데 도움이 됩니다. 자세한 내용은 Spanner 문서의 openCypher 사용자를 위한 Spanner Graph 참조 를 참조하세요.

Spanner Graph 문제 해결

Spanner Graph의 일반적인 문제로는 참조 무결성 위반 (댕글링 에지) 및 느리게 실행되는 쿼리가 있습니다. 문제 해결에는 스키마 정의 검사, 누락된 노드 또는 에지 확인, 쿼리 계획을 사용하여 성능 병목 지점 식별이 포함됩니다. 자세한 내용은 Spanner Graph 문제 해결의 Spanner 문서를 참조하세요.

다음 단계