יצירה וניהול של סכימת Spanner Graph

במסמך הזה מוסבר איך לנהל סכימות של Spanner Graph. מפורטים בו התהליכים של יצירה, עדכון והסרה של סכימות באמצעות הצהרות DDL.

מידע נוסף על סכימות של תרשימי מאפיינים זמין במאמר סקירה כללית על סכימות של Spanner Graph. אם נתקלתם בשגיאות כשניסיתם ליצור סכימה של תרשים מאפיינים, כדאי לעיין במאמר בנושא פתרון בעיות ב-Spanner Graph.

יצירת סכימה של גרף נכסים

אפשר ליצור סכימת גרף של מאפיינים באמצעות תצוגות או טבלאות. כדי ליצור סכימת גרף מאפיינים באמצעות טבלאות:

  1. יוצרים את טבלאות הקלט של הצומת.
  2. יוצרים את טבלאות הקלט של ה-Edge.
  3. הגדרת גרף הנכסים

במאמר יצירת Spanner Graph מתצוגת SQL מוסבר איך להשתמש בתצוגות SQL כדי ליצור סכימת גרף של נכס.

כשיוצרים סכימה של גרף מאפיינים, חשוב לפעול לפי השיטות המומלצות. בסעיפים הבאים מוסבר איך להשתמש בטבלאות כדי ליצור סכימה לדוגמה של גרף מאפיינים:

יצירת טבלאות קלט של צמתים

הקוד הבא יוצר שתי טבלאות קלט של צמתים, 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);

יצירת טבלאות קלט ב-Edge

הקוד הבא יוצר שתי טבלאות קלט של קצוות, 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 כדי להגדיר גרף מאפיינים. ההצהרה הזו מגדירה גרף מאפיינים בשם FinGraph עם צמתי Account ו-Person, וקשתות PersonOwnAccount ו-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
    );

עדכון סכימת גרף של נכס

אחרי שיוצרים סכימה של גרף מאפיינים, מעדכנים אותה באמצעות ההצהרה CREATE OR REPLACE PROPERTY GRAPH. ההצהרה הזו מחילה את השינויים על ידי יצירה מחדש של סכימת הגרף עם העדכון הרצוי.

אפשר לבצע את השינויים הבאים בסכימת גרף הנכס:

  • כדי להוסיף הגדרה של צומת או קשת: יוצרים את טבלאות הקלט החדשות של הצמתים והקשתות, ואז משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH כדי להוסיף את ההגדרות החדשות לגרף.

  • עדכון הגדרה של צומת או קשת: מעדכנים את טבלת הקלט הבסיסית בהגדרות חדשות של צמתים וקשתות. לאחר מכן, משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH כדי לעדכן את ההגדרות בתרשים.

  • הסרת הגדרה של צומת או קשת: משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH ומשמיטים את ההגדרות שרוצים להסיר מהגרף.

הוספת הגדרות חדשות של צמתים או קשתות

כדי להוסיף צומת חדש והגדרה חדשה של קשת, פועלים לפי השלבים הבאים:

  1. מוסיפים טבלת קלט חדשה להגדרת צומת, 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;
    
  2. מעדכנים את סכימת FinGraph על ידי הוספת ההגדרה של הצומת החדש Company וההגדרה של הקצה החדש 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
      );
    

עדכון ההגדרות של צומת או קשת

כדי לעדכן הגדרה קיימת של צומת או קשת, קודם משנים את טבלת הקלט הבסיסית, ואז משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH כדי להחיל את שינויי הסכימה על הגרף. כדי להתאים אישית את המאפיינים שמוצגים מטבלאות הקלט, משתמשים בPROPERTIES clause. מידע נוסף זמין במאמר בנושא התאמה אישית של תוויות ומאפיינים.

בשלבים הבאים מוסבר איך לעדכן את הטבלה הבסיסית של סכימה, ואז להחיל את העדכון על הסכימה.

  1. מוסיפים את העמודה mailing_address לטבלת הקלט הבסיסית Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. החלת השינויים בטבלה 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
      );
    

הסרת הגדרות של צומת או קשת

כדי להסיר הגדרות קיימות של צמתים או קשתות, צריך ליצור מחדש את גרף המאפיינים בלי טבלאות הצמתים או הקשתות האלה.

הדוגמה הבאה מסירה את הגדרת הצומת Person ואת הגדרת הקצה PersonOwnAccount על ידי השמטה שלהן בהצהרה 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
    );

מחיקת סכימת גרף של נכס

כדי להסיר סכימת גרף מטבלאות הקלט הבסיסיות, משתמשים בהצהרת DROP PROPERTY GRAPH DDL. כשמבטלים סכימה, אי אפשר למחוק את הנתונים מהטבלה הבסיסית.

הקוד הבא משמיט את סכימת גרף המאפיינים FinGraph:

DROP PROPERTY GRAPH FinGraph;

המאמרים הבאים