圖表結構定義最佳做法

本文提供定義圖表結構定義的最佳做法,以提升圖表查詢效能。

設定資源定義的範圍

屬性是鍵/值組合,可提供附加至節點或邊緣的額外資訊。建議您只在節點或邊緣中加入必要屬性,並避免使用 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
);

後續步驟