使用 Google Cloud 控制台设置和查询 Spanner 图

本文档介绍如何设置和查询 Spanner Graph, Google Cloud 控制台在本文档中,您将:

  • 创建 Spanner 实例。
  • 创建数据库。
  • 创建图表架构。
  • 插入图表数据。
  • 查询您创建的图表。

如需详细了解 Spanner 价格,请参阅 Spanner 价格

如需试用 Codelab,请参阅 开始使用 Spanner Graph

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Spanner API 应自动启用。如果未启用,请手动启用:

    启用 Spanner API
  1. 如需获得创建实例和数据库所需的权限,请让您的管理员为您授予项目的 Cloud Spanner Admin (roles/spanner.admin) IAM 角色。

创建实例

首次使用 Spanner 时,您必须创建一个实例,实例是 Spanner 数据库使用的资源分配单位。

  1. 在 Google Cloud 控制台中,前往 Spanner 页面。

    转到 Spanner

  2. 选择或创建 Google Cloud 项目(如果您尚未创建)。

  3. 执行下列其中一项操作:

    1. 如果您之前未创建过 Spanner 实例,请在 欢迎使用 Spanner 页面,点击 创建预配的实例

    2. 如果您已创建 Spanner 实例,请在实例页面上点击创建实例

  4. 选择版本页面上,选择企业 Plus 版企业版

    Spanner Graph 仅适用于企业版或企业 Plus 版。要比较不同的版本,请点击 版本对比。有关详情,请参阅 Spanner 版本概览

  5. 点击继续

  6. 实例名称中,输入实例名称,例如 test-instance

  7. 实例 ID 中,保留或更改实例 ID。您的实例 ID 默认值 更改为您的实例名称,但您可以更改此名称。实例名称和实例 ID 可以相同,也可以不同。

  8. 点击继续

  9. 选择配置中,执行以下操作:

    1. 保持区域级的选择状态。

    2. 选择配置中,选择一个区域。您选择的区域是您的实例的存储和复制位置。

    3. 点击继续

  10. 配置计算容量中,执行以下操作:

    1. 选择单元中,选择处理单元 (PU)

    2. 选择伸缩模式中,让手动分配保持选中状态, 在数量中保留 1,000 个处理单元。

  11. 点击创建。Google Cloud 控制台将显示您创建的实例的概览页面。

创建数据库

  1. 在 Google Cloud 控制台中,转到 Spanner 实例页面。

    转到 Spanner 实例

  2. 点击您创建的实例,例如 Test Instance

  3. 概览中,点击实例名称下的创建数据库

  4. 数据库名称中,输入数据库名称。例如 example-db

  5. 选择数据库方言中,选择“Google 标准 SQL”。Spanner 图 不支持 PostgreSQL 方言。您的数据库创建 页面现在如下所示:

    更新了数据库创建页面。

  6. 点击创建。Google Cloud 控制台会显示 Overview 页面 所创建的数据库

为 Spanner 图谱数据库创建架构

  1. 在导航菜单中,点击 Spanner Studio

  2. Spanner Studio 页面上,点击 Editor 1 标签页或点击 打开新的标签页或使用新标签页。

  3. 将以下架构复制并粘贴到“编辑器”标签页中。架构 包含两个节点表定义(PersonAccount)以及两条边 表定义(PersonOwnAccountAccountTransferAccount)。 Spanner Graph 使用关系型表来定义图,因此您可以同时看到 架构中的关系型表和图表语句。要详细了解 Spanner 图架构,请参阅 Spanner 图架构概览

    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);
    
    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 OR REPLACE 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
      );
    
  4. 点击运行结果页面显示架构更新正在运行。 更新完成后,您会在结果中看到一条消息,指示更新已完成。

插入图表数据

Google Cloud 控制台提供了用于插入、修改和删除数据的界面。

插入数据

  1. Spanner Studio 页面上,点击 New tab(新建标签页),或使用“Editor”(编辑器)标签页。
  2. 将以下图数据插入语句复制并粘贴到节点和边中。

    INSERT INTO Account
      (id, create_time, is_blocked, nick_name)
    VALUES
      (7,"2020-01-10 06:22:20.222",false,"Vacation Fund"),
      (16,"2020-01-27 17:55:09.206",true,"Vacation Fund"),
      (20,"2020-02-18 05:44:20.655",false,"Rainy Day Fund");
    
    INSERT INTO Person
      (id, name, birthday, country, city)
    VALUES
      (1,"Alex","1991-12-21 00:00:00","Australia","Adelaide"),
      (2,"Dana","1980-10-31 00:00:00","Czech_Republic","Moravia"),
      (3,"Lee","1986-12-07 00:00:00","India","Kollam");
    
    INSERT INTO AccountTransferAccount
      (id, to_id, amount, create_time, order_number)
    VALUES
      (7,16,300,"2020-08-29 15:28:58.647","304330008004315"),
      (7,16,100,"2020-10-04 16:55:05.342","304120005529714"),
      (16,20,300,"2020-09-25 02:36:14.926","103650009791820"),
      (20,7,500,"2020-10-04 16:55:05.342","304120005529714"),
      (20,16,200,"2020-10-17 03:59:40.247","302290001255747");
    
    INSERT INTO PersonOwnAccount
      (id, account_id, create_time)
    VALUES
      (1,7,"2020-01-10 06:22:20.222"),
      (2,20,"2020-01-27 17:55:09.206"),
      (3,16,"2020-02-18 05:44:20.655");
    

    以下图表显示了插入内容中的用户、账号、账号所有权和账号转移:

    示例图表。

  3. 点击运行。运行完成后,结果标签页显示 3 行 已插入。

运行图表查询

  1. 在数据库概览页面上,点击导航菜单中的 Spanner Studio

  2. Spanner Studio 页面上,点击 New tab(新建标签页),或使用“Editor”标签页。

  3. 在查询编辑器中输入以下查询。该查询查找 以及汇款金额

    GRAPH FinGraph
    MATCH
      (from_person:Person {name: "Dana"})-[:Owns]->
      (from_account:Account)-[transfer:Transfers]->
      (to_account:Account)<-[:Owns]-(to_person:Person)
    RETURN
      from_person.name AS from_account_owner,
      from_account.id AS from_account_id,
      to_person.name AS to_account_owner,
      to_account.id AS to_account_id,
      transfer.amount AS amount
    
  4. 点击运行

    结果标签页会显示从 Dana 到 Account {id:20} 的以下路径:

    • 发送给 Alex 拥有的 Account {id:7}
    • 归小李所有的Account {id:16}所有。

      图表查询结果示例。

清理

后续步骤中的许多示例都使用了您在本文档中设置的资源。如果您想继续使用以下示例之一处理 Spanner 图,请暂时不要执行这些清理步骤。

否则,为避免系统向您的 Cloud Billing 账号收取额外费用,请删除 您在设置期间创建的数据库和实例。删除 自动删除实例中创建的所有数据库。

删除数据库

  1. 在 Google Cloud 控制台中,前往 Spanner 实例页面。

    转到 Spanner 实例

  2. 点击包含要删除的数据库的实例的名称,例如测试实例

  3. 点击要删除的数据库的名称,例如, example-db

  4. 数据库详细信息页面上,点击删除删除数据库

  5. 输入数据库名称,然后点击删除,确认您要删除该数据库。

删除实例

  1. 在 Google Cloud 控制台中,前往 Spanner 实例页面。

    转到 Spanner 实例

  2. 点击要删除的实例的名称,例如 Test Instance

  3. 点击删除实例

  4. 通过输入实例来确认要删除实例 然后点击删除

后续步骤