本文档介绍了如何使用 Google Cloud 控制台和客户端库设置和查询 Spanner Graph 数据库,以对复杂的数据关系进行建模、存储和分析。
以下主题可帮助您了解如何:
如需了解 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.
-
Verify 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.
-
Verify that billing is enabled for your Google Cloud project.
- 启用 Spanner API:
前往“启用 Spanner API” -
如需获得创建实例和数据库所需的权限,请让您的管理员为您授予项目的 Cloud Spanner Admin (
roles/spanner.admin
) IAM 角色。 -
如需获得查询 Spanner Graph 所需的权限(如果您未获得 Cloud Spanner Admin 角色),请让您的管理员为您授予项目的 Cloud Spanner Database Reader (
roles/spanner.databaseReader
) IAM 角色。 在 Google Cloud 控制台中,前往 Spanner 页面。
选择或创建 Google Cloud 项目(如果您尚未执行此操作)。
执行下列其中一项操作:
如果您之前未创建过 Spanner 实例,请在欢迎使用 Spanner 页面上点击创建预配实例。
如果您已创建 Spanner 实例,请在实例页面上点击创建实例。
在选择版本页面上,选择企业 Plus 版或企业版。
Spanner Graph 仅适用于企业版或企业 Plus 版。如需比较不同版本,请点击版本对比。如需了解详情,请参阅 Spanner 版本概览。
点击继续。
在实例名称中,输入实例名称,例如
test-instance
。在实例 ID 中,保留或更改实例 ID。实例 ID 默认为实例名称,但您可以更改它。实例名称和实例 ID 可以相同,也可以不同。
点击继续。
在选择配置中,执行以下操作:
保持选择区域级。
在选择配置中,选择一个区域。Spanner 会在您选择的区域中存储和复制实例。
点击继续。
在配置计算容量中,执行以下操作:
在选择单元中,选择处理单元 (PU)。
在选择扩缩模式中,保持手动分配处于选中状态,并在数量中保留 1,000 个处理单元。
点击创建。 Google Cloud 控制台会显示您创建的实例的概览页面。
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击您创建的实例,例如
Test Instance
。在概览中,点击实例名称下的创建数据库。
在数据库名称中,输入数据库名称。例如
example-db
。在选择数据库方言中,选择 Google 标准 SQL。PostgreSQL 方言不支持 Spanner Graph。
在 DDL 模板编辑器标签页中输入以下架构。该架构包含两个节点表定义(
Person
和Account
)和两个边缘表定义(PersonOwnAccount
和AccountTransferAccount
)。Spanner Graph 使用关系型表来定义图表,因此您会在架构中看到关系型表和图表语句。如需详细了解 Spanner Graph 架构,请参阅 Spanner Graph 架构概览: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 页面上,点击
新标签页或使用编辑器标签页。将以下图表数据插入语句复制并粘贴到节点和边缘中。
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 页面上,点击
新标签页或使用编辑器标签页。在查询编辑器中输入以下查询。该查询会查找 Dana 向其汇款的所有人,以及这些汇款的金额。
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
点击运行。
结果标签页显示账号 20 的所有者 Dana 的以下路径:
- 汇款给 Alex 拥有的
Account {id:7}
。 汇款给 Lee 拥有的
Account {id:16}
。
- 汇款给 Alex 拥有的
在 Google Cloud 控制台中,前往 Spanner 实例。
点击实例名称,例如 Test Instance。
点击数据库名称,例如 example-db。
在数据库详细信息页面上,点击删除数据库。
输入数据库名称,然后点击删除,以确认您要删除该数据库。
在 Google Cloud 控制台中,前往 Spanner 实例页面。
点击要删除的实例的名称,例如 Test Instance。
点击删除实例。
输入实例名称,然后点击删除,以确认您要删除该实例。
- 如需详细了解 Spanner Graph,请使用codelab。
- 了解 Spanner Graph架构。
- 创建、更新或删除 Spanner Graph 架构。
- 插入、更新或删除 Spanner Graph 数据。
- Spanner Graph 查询概览。
- 迁移到 Spanner Graph。
创建 Spanner 实例
首次使用 Spanner 时,必须创建一个实例,该实例会为 Spanner 数据库分配资源。本部分介绍如何使用 Google Cloud 控制台创建实例。
使用架构创建图表数据库
本部分介绍了如何使用 Spanner Graph 架构创建 Spanner Graph 数据库。您可以使用 Google Cloud 控制台或客户端库。
控制台
客户端库
Python
Java
Go
C++
插入图表数据
创建数据库后,您可以向其中添加数据。本部分介绍了如何使用 Google Cloud 控制台的图形界面或通过客户端库以程序化方式将数据插入图表中。
控制台
客户端库
Python
Java
Go
C++
下图显示了插入项中的人员、账号、账号所有权和账号转移情况:
运行图表查询
将数据插入图表后,您可以查询该图表以查找模式和关系。本部分介绍了如何使用Google Cloud 控制台的图形界面或通过客户端库以程序化方式运行查询。
控制台
客户端库
Python
Java
Go
C++
清理
本部分介绍了如何清理您创建的资源,以避免您的 Cloud Billing 账号产生费用。如果您打算在后续步骤部分中探索其他 Spanner Graph 示例,请暂时不要执行以下步骤。删除 Spanner 实例也会删除该实例中的所有数据库。