Membuat, memperbarui, atau melepas skema Grafik Spanner

Dokumen ini menunjukkan cara membuat, memperbarui, atau menghapus grafik properti di Spanner Graph menggunakan contoh skema yang Menyiapkan dan membuat kueri Spanner Graph.

Spanner memungkinkan Anda memperbarui skema tanpa periode nonaktif. Anda dapat memperbarui skema dari database yang ada dengan salah satu cara berikut:

Membuat skema grafik properti

Untuk informasi selengkapnya tentang skema grafik properti, lihat Ringkasan skema Grafik Spanner.

Untuk membuat skema grafik properti, ikuti langkah-langkah berikut:

  1. Buat tabel input node Person dan Account. Tabel-tabel ini digunakan sebagai tabel input untuk definisi node di contoh grafik properti.

    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);
    
  2. Buat tabel input tepi PersonOwnAccount dan AccountTransferAccount. Tabel ini digunakan sebagai tabel input untuk definisi edge pada 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;
    
  3. Menentukan grafik properti menggunakan contoh CREATE PROPERTY GRAPH pernyataan pribadi Anda.

    Contoh berikut menentukan grafik properti bernama FinGraph dengan Node Account dan Person, serta 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
      );
    

Contoh ini mengikuti praktik terbaik berikut:

Untuk informasi selengkapnya, lihat Praktik terbaik untuk desain skema grafik.

Untuk mengetahui informasi tentang error skema Grafik Spanner umum, lihat Memecahkan masalah Grafik Spanner.

Memperbarui skema grafik properti

Anda dapat memperbarui skema grafik properti dengan cara berikut:

  1. Tambahkan definisi node atau edge baru.
  2. Memperbarui definisi node atau edge yang ada.
  3. Hapus definisi node atau edge yang ada.

Dalam setiap kasus, Anda harus membuat ulang grafik properti dengan skema yang diperbarui.

Menambahkan definisi node atau edge baru

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

  1. Menambahkan tabel input baru.

    Menentukan tabel input yang terkait dengan definisi elemen grafik yang baru. Lihat contoh berikut, yang menambahkan dua tabel input baru Company dan 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 grafik dengan CREATE OR REPLACE PROPERTY GRAPH. Tujuan contoh berikut memperbarui skema FinGraph dengan menambahkan node baru definisi Company dan definisi edge baru PersonInvestCompany:

    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 yang ada

Untuk memperbarui definisi node atau edge yang ada, ikuti langkah-langkah berikut:

  1. Perbarui skema tabel input. Contoh berikut menambahkan kolom mailing_address ke tabel input Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Perbarui skema grafik properti dengan CREATE OR REPLACE PROPERTY GRAPH. Contoh berikut menambahkan properti baru mailing_address ke Definisi node Person menggunakan CREATE OR REPLACE PROPERTY GRAPH pernyataan pribadi Anda. Dalam contoh ini, definisi node Person otomatis mengambil definisi tabel Person yang diubah karena tabel input skema diubah.

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

    Anda juga dapat menggunakan PROPERTIES clause() untuk menyesuaikan properti diekspos dari tabel input. Untuk informasi selengkapnya, lihat Sesuaikan label dan properti.

Menghapus definisi node atau edge yang ada

Untuk menghapus definisi node atau edge yang ada, buat ulang grafik properti tanpa tabel {i>node<i} atau {i>edge<i} tersebut.

Contoh berikut menghapus definisi node Person dan Definisi edge 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
  );

Menempatkan skema grafik properti

Anda dapat menggunakan pernyataan DDL DROP PROPERTY GRAPH untuk menghapus skema grafik.

Contoh berikut menghapus skema grafik properti FinGraph:

DROP PROPERTY GRAPH FinGraph;

Langkah selanjutnya