그래프 스키마 권장사항

이 문서에서는 그래프 쿼리 성능을 개선하기 위해 그래프 스키마를 정의하는 권장사항을 제공합니다.

속성 정의 범위 지정

속성은 노드 또는 에지에 연결된 추가 정보를 제공하는 키-값 쌍입니다. 노드나 에지에 필요한 속성만 포함하고 노드 또는 에지 테이블의 모든 열을 속성 목록에 연결하는 PROPERTIES ALL COLUMNS 구문이나 기본 구문은 사용하지 않는 것이 좋습니다. 노드나 간선에 속성이 많으면 그래프 쿼리에서 불필요한 열 스캔이 발생하여 성능이 저하될 수 있습니다.

노드 또는 에지 정의에 포함할 속성을 제한하려면 CREATE PROPERTY GRAPH에서 요소 속성을 정의할 때 PROPERTIES 키워드를 사용합니다.

다음 노드 테이블 정의는 Person 노드 테이블의 속성을 idname로 제한합니다.

NODE TABLES (
  graph_db.Person PROPERTIES (id, name)
)

그래프 노드 및 에지에 기본 키 및 외래 키 제약 조건 정의

BigQuery는 노드 및 에지 테이블의 기본 키 및 외래 키 제약 조건을 사용하여 불필요한 테이블 스캔을 줄여 그래프 쿼리를 최적화할 수 있습니다. 하지만 BigQuery는 테이블에 기본 키 또는 외래 키 제약 조건을 적용하지 않습니다. 애플리케이션에서 참조 무결성 또는 기본 키의 고유성을 보장할 수 없는 경우 쿼리 최적화에 기본 키 또는 외래 키를 사용하면 잘못된 쿼리 결과가 발생할 수 있습니다.

다음 예에서는 노드 테이블 PersonAccount과 에지 테이블 PersonOwnAccount에 기본 키 및 외래 키 제약 조건을 정의합니다.

CREATE OR REPLACE TABLE graph_db.Person (
  id               INT64,
  name             STRING,
  birthday         TIMESTAMP,
  country          STRING,
  city             STRING,
  PRIMARY KEY (id) NOT ENFORCED
);

CREATE OR REPLACE TABLE graph_db.Account (
  id               INT64,
  create_time      TIMESTAMP,
  is_blocked       BOOL,
  nick_name        STRING,
  PRIMARY KEY (id) NOT ENFORCED
);

CREATE OR REPLACE TABLE graph_db.PersonOwnAccount (
  id               INT64 NOT NULL,
  account_id       INT64 NOT NULL,
  create_time      TIMESTAMP,
  PRIMARY KEY (id, account_id) NOT ENFORCED,
  FOREIGN KEY (id) references graph_db.Person(id) NOT ENFORCED,
  FOREIGN KEY (account_id) references graph_db.Account(id) NOT ENFORCED
);

다음 단계