Membuat dan mengelola skema Spanner Graph

Dokumen ini memberikan panduan tentang cara mengelola skema Spanner Graph, yang menjelaskan proses untuk membuat, memperbarui, dan menghapus skema menggunakan pernyataan DDL.

Untuk mengetahui informasi selengkapnya tentang skema grafik properti, lihat Ringkasan skema Spanner Graph. Jika Anda mengalami error saat membuat skema grafik properti, lihat Memecahkan masalah Spanner Graph.

Membuat skema grafik properti

Anda dapat membuat skema grafik properti menggunakan tampilan atau tabel. Untuk membuat skema grafik properti menggunakan tabel, lakukan hal berikut:

  1. Buat tabel input node.
  2. Buat tabel input edge.
  3. Tentukan grafik properti.

Untuk mempelajari cara menggunakan tampilan SQL guna membuat skema grafik properti, lihat Membuat Spanner Graph dari tampilan SQL.

Saat membuat skema grafik properti, pastikan untuk mempertimbangkan praktik terbaik. Bagian berikut menunjukkan cara menggunakan tabel untuk membuat contoh skema grafik properti:

Membuat tabel input node

Berikut ini membuat dua tabel input node, Person dan Account, yang berfungsi sebagai input untuk definisi node dalam grafik properti contoh:

  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);

Membuat tabel input tepi

Kode berikut membuat dua tabel input edge, PersonOwnAccount dan AccountTransferAccount, sebagai input untuk definisi edge dalam contoh grafik properti:

  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;

Menentukan grafik properti

Kode berikut menggunakan tabel dan pernyataan CREATE PROPERTY GRAPH untuk menentukan grafik properti. Pernyataan ini menentukan grafik properti bernama FinGraph dengan node Account dan Person, serta edge PersonOwnAccount dan AccountTransferAccount:

  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
    );

Memperbarui skema grafik properti

Setelah membuat skema grafik properti, Anda dapat memperbaruinya menggunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH. Pernyataan ini menerapkan perubahan dengan membuat ulang skema grafik dengan update yang diinginkan.

Anda dapat melakukan perubahan berikut pada skema grafik properti:

  • Menambahkan definisi node atau edge: Buat tabel input baru untuk node dan edge, lalu gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH untuk menambahkan definisi baru ke grafik.

  • Memperbarui definisi node atau edge: Perbarui tabel input pokok dengan definisi node dan edge baru. Kemudian, gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH untuk memperbarui definisi dalam grafik.

  • Menghapus definisi node atau tepi: Gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH dan hapus definisi yang ingin Anda hapus dari grafik.

Menambahkan definisi node atau edge baru

Untuk menambahkan definisi node dan edge baru, ikuti langkah-langkah berikut:

  1. Tambahkan tabel input definisi node baru, Company, dan tabel input definisi edge baru, 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;
    
  2. Perbarui skema FinGraph dengan menambahkan definisi node Company baru dan definisi edge PersonInvestCompany baru.

    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
      );
    

Memperbarui definisi node atau edge

Untuk memperbarui definisi node atau edge yang ada, Anda harus mengubah tabel input yang mendasarinya terlebih dahulu, lalu menggunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH untuk menerapkan perubahan skema ke grafik. Untuk menyesuaikan properti yang diekspos dari tabel input, gunakan PROPERTIES clause. Untuk mengetahui informasi selengkapnya, lihat Menyesuaikan label dan properti.

Langkah-langkah berikut menunjukkan cara memperbarui tabel pokok skema, lalu menerapkan pembaruan ke skema.

  1. Tambahkan kolom mailing_address ke tabel input pokok Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Terapkan perubahan pada tabel Person ke skema. Gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH. Definisi node Person mencerminkan definisi tabel Person yang diperbarui karena skema tabel input berubah.

    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
      );
    

Menghapus definisi node atau edge

Untuk menghapus definisi node atau edge yang ada, buat ulang grafik properti tanpa tabel node atau edge tersebut.

Berikut ini menghapus definisi node Person dan definisi edge PersonOwnAccount dengan menghilangkannya dalam pernyataan CREATE OR REPLACE PROPERTY GRAPH.

  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
    );

Menghapus skema grafik properti

Untuk menghapus skema grafik dari tabel input pokok, gunakan pernyataan DDL DROP PROPERTY GRAPH. Anda tidak dapat menghapus data dari tabel pokok saat Anda menghapus skema.

Kode berikut menghapus skema grafik properti FinGraph:

DROP PROPERTY GRAPH FinGraph;

Langkah berikutnya