Praktik terbaik skema grafik

Dokumen ini memberikan praktik terbaik untuk menentukan skema grafik guna meningkatkan performa kueri grafik Anda.

Mencakup definisi properti Anda

Properti adalah pasangan nilai kunci yang memberikan informasi tambahan yang dilampirkan ke node atau tepi. Sebaiknya sertakan hanya properti yang diperlukan dalam node atau tepi, dan hindari penggunaan sintaksis PROPERTIES ALL COLUMNS atau sintaksis default yang melampirkan semua kolom dari tabel node atau tepi ke daftar properti. Memiliki banyak properti di node atau tepi dapat menyebabkan pemindaian kolom yang tidak perlu dalam kueri grafik, yang menurunkan performa.

Untuk membatasi properti yang Anda sertakan dalam definisi node atau edge, gunakan kata kunci PROPERTIES saat Anda menentukan properti elemen dalam pernyataan CREATE PROPERTY GRAPH.

Definisi tabel node berikut membatasi properti untuk tabel node Person ke id dan name:

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

Tentukan batasan kunci utama dan kunci asing pada node dan tepi grafik

BigQuery dapat menggunakan batasan kunci primer dan asing pada tabel node dan edge untuk mengoptimalkan kueri grafik dengan mengurangi pemindaian tabel yang tidak perlu. Namun, BigQuery tidak menerapkan batasan kunci utama atau kunci asing pada tabel. Jika aplikasi Anda tidak dapat menjamin integritas referensial atau keunikan pada kunci utama, penggunaan kunci utama atau kunci asing untuk pengoptimalan kueri dapat menyebabkan hasil kueri yang salah.

Contoh berikut menentukan batasan kunci utama dan kunci asing pada tabel node Person dan Account, serta tabel edge 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
);

Langkah berikutnya