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

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

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

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

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

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

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

    Go to project selector

  5. 确保您的 Google Cloud 项目已启用结算功能

  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. 通过输入实例来确认要删除实例 然后点击删除

后续步骤