그래프 스키마 권장사항
이 문서에서는 그래프 쿼리 성능을 개선하기 위해 그래프 스키마를 정의하는 권장사항을 제공합니다.
속성 정의 범위 지정
속성은 노드 또는 에지에 연결된 추가 정보를 제공하는 키-값 쌍입니다. 노드나 에지에 필요한 속성만 포함하고 노드 또는 에지 테이블의 모든 열을 속성 목록에 연결하는 PROPERTIES ALL COLUMNS 구문이나 기본 구문은 사용하지 않는 것이 좋습니다. 노드나 간선에 속성이 많으면 그래프 쿼리에서 불필요한 열 스캔이 발생하여 성능이 저하될 수 있습니다.
노드 또는 에지 정의에 포함할 속성을 제한하려면 CREATE PROPERTY GRAPH 문에서 요소 속성을 정의할 때 PROPERTIES 키워드를 사용합니다.
다음 노드 테이블 정의는 Person 노드 테이블의 속성을 id 및 name로 제한합니다.
NODE TABLES (
graph_db.Person PROPERTIES (id, name)
)
그래프 노드 및 에지에 기본 키 및 외래 키 제약 조건 정의
BigQuery는 노드 및 에지 테이블의 기본 키 및 외래 키 제약 조건을 사용하여 불필요한 테이블 스캔을 줄여 그래프 쿼리를 최적화할 수 있습니다. 하지만 BigQuery는 테이블에 기본 키 또는 외래 키 제약 조건을 적용하지 않습니다. 애플리케이션에서 참조 무결성 또는 기본 키의 고유성을 보장할 수 없는 경우 쿼리 최적화에 기본 키 또는 외래 키를 사용하면 잘못된 쿼리 결과가 발생할 수 있습니다.
다음 예에서는 노드 테이블 Person 및 Account과 에지 테이블 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
);
다음 단계
- 그래프에 대한 자세한 내용은 BigQuery 그래프 소개를 참고하세요.
- 스키마 정의에 대한 자세한 내용은 스키마 개요를 참고하세요.
- 그래프 쿼리 작성에 대한 자세한 내용은 그래프 쿼리 개요를 참고하세요.