이 문서에서는 Spanner Graph 속성 스키마 관리에 관한 포괄적인 가이드를 제공하며, DDL 문을 사용하여 스키마를 만들고, 업데이트, 삭제하는 프로세스를 자세히 설명합니다.
속성 그래프 스키마에 대한 자세한 내용은 Spanner Graph 스키마 개요를 참조하세요. 속성 그래프 스키마를 만들 때 오류가 발생하면 Spanner Graph 문제 해결을 참고하세요.
속성 그래프 스키마 만들기
속성 그래프 스키마를 만들려면 다음 단계를 따르세요.
속성 그래프 스키마를 만들 때는 권장사항을 고려하세요.
다음 섹션에서는 속성 그래프 스키마의 예를 만드는 방법을 보여줍니다.
노드 입력 테이블 만들기
다음은 속성 그래프 예시에서 노드 정의의 입력으로 사용되는 두 개의 노드 입력 테이블 Person
와 Account
를 만듭니다.
CREATE TABLE Person (
id INT64 NOT NULL,
name STRING(MAX),
birthday TIMESTAMP,
country STRING(MAX),
city STRING(MAX),
) PRIMARY KEY (id);
CREATE TABLE Account (
id INT64 NOT NULL,
create_time TIMESTAMP,
is_blocked BOOL,
nick_name STRING(MAX),
) PRIMARY KEY (id);
에지 입력 테이블 만들기
다음 코드는 예시 속성 그래프의 가장자리 정의를 위한 입력으로 두 개의 가장자리 입력 테이블 PersonOwnAccount
및 AccountTransferAccount
를 만듭니다.
CREATE TABLE PersonOwnAccount (
id INT64 NOT NULL,
account_id INT64 NOT NULL,
create_time TIMESTAMP,
FOREIGN KEY (account_id) REFERENCES Account (id)
) PRIMARY KEY (id, account_id),
INTERLEAVE IN PARENT Person ON DELETE CASCADE;
CREATE TABLE AccountTransferAccount (
id INT64 NOT NULL,
to_id INT64 NOT NULL,
amount FLOAT64,
create_time TIMESTAMP NOT NULL,
order_number STRING(MAX),
FOREIGN KEY (to_id) REFERENCES Account (id)
) PRIMARY KEY (id, to_id, create_time),
INTERLEAVE IN PARENT Account ON DELETE CASCADE;
속성 그래프 정의
다음 코드는 CREATE PROPERTY GRAPH
문을 사용하여 속성 그래프를 정의합니다. 이 문은 Account
및 Person
노드와 PersonOwnAccount
및 AccountTransferAccount
에지가 포함된 FinGraph
라는 속성 그래프를 정의합니다.
CREATE PROPERTY GRAPH FinGraph
NODE TABLES (
Account,
Person
)
EDGE TABLES (
PersonOwnAccount
SOURCE KEY (id) REFERENCES Person (id)
DESTINATION KEY (account_id) REFERENCES Account (id)
LABEL Owns,
AccountTransferAccount
SOURCE KEY (id) REFERENCES Account (id)
DESTINATION KEY (to_id) REFERENCES Account (id)
LABEL Transfers
);
속성 그래프 스키마 업데이트
속성 그래프 스키마를 만든 후 CREATE OR
REPLACE PROPERTY GRAPH
문을 사용하여 업데이트합니다. 이 문은 원하는 업데이트로 그래프 스키마를 다시 만들어 변경사항을 적용합니다.
속성 그래프 스키마를 다음과 같이 변경할 수 있습니다.
노드 또는 에지 정의 추가: 노드 및 에지의 새 입력 테이블을 만든 다음
CREATE OR REPLACE PROPERTY GRAPH
문을 사용하여 그래프에 새 정의를 추가합니다.노드 또는 에지 정의 업데이트: 기본 입력 테이블을 새 노드 및 에지 정의로 업데이트합니다. 그런 다음
CREATE OR REPLACE PROPERTY GRAPH
문을 사용하여 그래프의 정의를 업데이트합니다.노드 또는 에지 정의 삭제:
CREATE OR REPLACE PROPERTY GRAPH
문을 사용하고 그래프에서 삭제할 정의를 생략합니다.
새 노드 또는 에지 정의 추가
새 노드 및 새 에지 정의를 추가하려면 다음 단계를 수행합니다.
새 노드 정의 입력 테이블
Company
와 새 에지 정의 입력 테이블PersonInvestCompany
를 추가합니다.CREATE TABLE Company ( id INT64 NOT NULL, name STRING(MAX) ) PRIMARY KEY (id); CREATE TABLE PersonInvestCompany ( id INT64 NOT NULL, company_id INT64 NOT NULL, FOREIGN KEY (company_id) REFERENCES Company (id) ) PRIMARY KEY (id, company_id), INTERLEAVE IN PARENT Person ON DELETE CASCADE;
새로운
Company
노드 정의와 새로운PersonInvestCompany
에지 정의를 추가하여FinGraph
스키마를 업데이트합니다.CREATE OR REPLACE PROPERTY GRAPH FinGraph NODE TABLES ( Person, Account, Company ) EDGE TABLES ( AccountTransferAccount SOURCE KEY (id) REFERENCES Account DESTINATION KEY (to_id) REFERENCES Account LABEL Transfers, PersonOwnAccount SOURCE KEY (id) REFERENCES Person DESTINATION KEY (account_id) REFERENCES Account LABEL Owns, PersonInvestCompany SOURCE KEY (id) REFERENCES Person DESTINATION KEY (company_id) REFERENCES Company LABEL Invests );
노드 또는 에지 정의 업데이트
기존 노드 또는 에지 정의를 업데이트하려면 먼저 기본 입력 테이블을 변경한 다음 CREATE OR REPLACE PROPERTY GRAPH
문을 사용하여 스키마 변경사항을 그래프에 적용합니다. 입력 테이블에서 노출된 속성을 맞춤설정하려면 PROPERTIES clause
를 사용하세요.
자세한 내용은 라벨 및 속성 맞춤설정을 참고하세요.
다음 단계에서는 스키마의 기본 테이블을 업데이트한 다음 스키마에 업데이트를 적용하는 방법을 보여줍니다.
mailing_address
열을Person
기본 입력 테이블에 추가합니다.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);
Person
테이블의 변경사항을 스키마에 적용합니다.CREATE OR REPLACE PROPERTY GRAPH
문을 사용합니다. 입력 테이블 스키마가 변경되었기 때문에Person
노드 정의는 업데이트된Person
테이블 정의를 반영합니다.CREATE OR REPLACE PROPERTY GRAPH FinGraph NODE TABLES ( Person, Account ) EDGE TABLES ( AccountTransferAccount SOURCE KEY (id) REFERENCES Account DESTINATION KEY (to_id) REFERENCES Account LABEL Transfers, PersonOwnAccount SOURCE KEY (id) REFERENCES Person DESTINATION KEY (account_id) REFERENCES Account LABEL Owns );
노드 또는 에지 정의 삭제
기존 노드 또는 에지 정의를 삭제하려면 해당 노드 또는 에지 테이블 없이 속성 그래프를 다시 만듭니다.
다음은 CREATE OR REPLACE PROPERTY GRAPH
문에서 Person
노드 정의와 PersonOwnAccount
에지 정의를 생략하여 이를 삭제합니다.
CREATE OR REPLACE PROPERTY GRAPH FinGraph
NODE TABLES (
Account
)
EDGE TABLES (
AccountTransferAccount
SOURCE KEY (id) REFERENCES Account
DESTINATION KEY (to_id) REFERENCES Account
LABEL Transfers
);
속성 그래프 스키마 삭제
기본 입력 테이블에서 그래프 스키마를 삭제하려면 DROP PROPERTY
GRAPH
DDL 문을 사용합니다. 스키마를 삭제할 때는 기본 테이블의 데이터를 삭제할 수 없습니다.
다음 코드는 FinGraph
속성 그래프 스키마를 삭제합니다.
DROP PROPERTY GRAPH FinGraph;