本文档介绍如何设置和查询 Spanner Graph, Google Cloud 控制台在本文档中,您将:
- 创建 Spanner 实例。
- 创建数据库。
- 创建图表架构。
- 插入图表数据。
- 查询您创建的图表。
如需详细了解 Spanner 价格,请参阅 Spanner 价格。
如需试用 Codelab,请参阅 开始使用 Spanner Graph。
准备工作
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Spanner API 应自动启用。如果未启用,请手动启用: 启用 Spanner API
-
如需获得创建实例和数据库所需的权限,请让您的管理员为您授予项目的 Cloud Spanner Admin (
roles/spanner.admin
) IAM 角色。
创建实例
首次使用 Spanner 时,您必须创建一个实例,实例是 Spanner 数据库使用的资源分配单位。
在 Google Cloud 控制台中,前往 Spanner 页面。
选择或创建 Google Cloud 项目(如果您尚未创建)。
执行下列其中一项操作:
如果您之前未创建过 Spanner 实例,请在 欢迎使用 Spanner 页面,点击 创建预配的实例。
如果您已创建 Spanner 实例,请在实例页面上点击创建实例。
在选择版本页面上,选择企业 Plus 版或 企业版。
Spanner Graph 仅适用于企业版或企业 Plus 版。要比较不同的版本,请点击 版本对比。有关详情,请参阅 Spanner 版本概览。
点击继续。
在实例名称中,输入实例名称,例如
test-instance
。在实例 ID 中,保留或更改实例 ID。您的实例 ID 默认值 更改为您的实例名称,但您可以更改此名称。实例名称和实例 ID 可以相同,也可以不同。
点击继续。
在选择配置中,执行以下操作:
保持区域级的选择状态。
在选择配置中,选择一个区域。您选择的区域是您的实例的存储和复制位置。
点击继续。
在配置计算容量中,执行以下操作:
在选择单元中,选择处理单元 (PU)。
在选择伸缩模式中,让手动分配保持选中状态, 在数量中保留 1,000 个处理单元。
点击创建。Google Cloud 控制台将显示您创建的实例的概览页面。
创建数据库
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击您创建的实例,例如
Test Instance
。在概览中,点击实例名称下的创建数据库。
在数据库名称中,输入数据库名称。例如
example-db
。在选择数据库方言中,选择“Google 标准 SQL”。Spanner 图 不支持 PostgreSQL 方言。您的数据库创建 页面现在如下所示:
点击创建。Google Cloud 控制台会显示 Overview 页面 所创建的数据库
为 Spanner 图谱数据库创建架构
在导航菜单中,点击 Spanner Studio。
在 Spanner Studio 页面上,点击 Editor 1 标签页或点击
打开新的标签页或使用新标签页。将以下架构复制并粘贴到“编辑器”标签页中。架构 包含两个节点表定义(
Person
和Account
)以及两条边 表定义(PersonOwnAccount
和AccountTransferAccount
)。 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 );
点击运行。结果页面显示架构更新正在运行。 更新完成后,您会在结果中看到一条消息,指示更新已完成。
插入图表数据
Google Cloud 控制台提供了用于插入、修改和删除数据的界面。
插入数据
- 在 Spanner Studio 页面上,点击 New tab(新建标签页),或使用“Editor”(编辑器)标签页。
将以下图数据插入语句复制并粘贴到节点和边中。
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 行 已插入。
运行图表查询
在数据库概览页面上,点击导航菜单中的 Spanner Studio。
在 Spanner Studio 页面上,点击
New tab(新建标签页),或使用“Editor”标签页。在查询编辑器中输入以下查询。该查询查找 以及汇款金额
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
点击运行。
结果标签页会显示从 Dana 到
Account {id:20}
的以下路径:- 发送给 Alex 拥有的
Account {id:7}
。 归小李所有的
Account {id:16}
所有。
- 发送给 Alex 拥有的
清理
后续步骤中的许多示例都使用了您在本文档中设置的资源。如果您想继续使用以下示例之一处理 Spanner 图,请暂时不要执行这些清理步骤。
否则,为避免系统向您的 Cloud Billing 账号收取额外费用,请删除 您在设置期间创建的数据库和实例。删除 自动删除实例中创建的所有数据库。
删除数据库
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击包含要删除的数据库的实例的名称,例如测试实例。
点击要删除的数据库的名称,例如, example-db。
在数据库详细信息页面上,点击删除删除数据库。
输入数据库名称,然后点击删除,确认您要删除该数据库。
删除实例
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击要删除的实例的名称,例如 Test Instance。
点击删除实例。
通过输入实例来确认要删除实例 然后点击删除。
后续步骤
- 使用 codelab 详细了解 Spanner 图。
- 了解 Spanner 图架构。
- 创建、更新或删除 Spanner 图架构。
- 插入、更新或删除 Spanner 图数据。
- Spanner Graph 查询概览。
- 迁移到 Spanner Graph。