Spanner Graph 查询概览

本文档概述了如何将图查询语言与 Spanner Graph 搭配使用,包括其图模式匹配语法,并介绍了如何针对图运行查询。借助 Spanner Graph,您可以运行查询来查找模式、遍历关系,并从属性图数据中获取数据分析洞见。

本文档中的示例使用您在设置和查询 Spanner Graph 中创建的图表架构。下图对此进行了说明。

Spanner Graph 架构示例。
图 1:Spanner Graph 架构示例。

运行 Spanner Graph 查询

您可以使用 Google Cloud 控制台、Google Cloud CLI、客户端库、REST API 或 RPC API 运行 Spanner 图查询。

Google Cloud 控制台

以下步骤介绍了如何在Google Cloud 控制台中运行查询。这些步骤假设您有一个名为 test-instance 的实例,其中包含一个名为 example-db 的数据库。如需了解如何创建包含数据库的实例,请参阅设置和查询 Spanner Graph

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

    前往 Spanner 实例

  2. 点击名为 test-instance 的实例。

  3. 数据库下,点击名为 example-db 的数据库。

  4. 打开 Spanner Studio,然后点击 新标签页或使用编辑器标签页。

  5. 在查询编辑器中输入查询。

  6. 点击运行

gcloud CLI

如需使用 gcloud CLI 命令行工具提交查询,请执行以下操作:

  1. 安装 gcloud CLI(如果尚未安装)。

  2. 在 gcloud CLI 中,运行以下命令:

    gcloud spanner databases execute-sql

如需了解详情,请参阅 Spanner CLI 快速入门

REST API

如需使用 REST API 提交查询,请使用以下命令之一:

如需了解详情,请参阅使用 REST API 查询数据使用 REST 开始使用 Spanner

RPC API

如需使用 RPC API 提交查询,请使用以下命令之一:

客户端库

如需详细了解如何使用 Spanner 客户端库运行查询,请参阅以下内容:

如需详细了解 Spanner 客户端库,请参阅 Spanner 客户端库概览

直观呈现 Spanner Graph 查询结果

您可以在 Google Cloud 控制台的 Spanner Studio 中查看 Spanner Graph 查询结果的可视化表示形式。通过查询可视化图表,您可以了解返回的元素(节点和边)之间的连接方式。这可以揭示在表格中查看结果时难以发现的模式、依赖关系和异常情况。如需查看查询的可视化图表,查询必须以 JSON 格式返回完整节点。否则,您只能以表格格式查看查询结果。如需了解详情,请参阅使用 Spanner Graph 查询可视化图表

Spanner Graph 查询结构

Spanner Graph 查询由多个组件组成,例如属性图名称、节点和边模式以及量词。您可以使用这些组件创建查询,以在图表中查找特定模式。本文档的图模式匹配部分介绍了每个组件。

图 2 中的查询展示了 Spanner Graph 查询的基本结构。查询首先使用 GRAPH 子句指定目标图表 FinGraph。然后,MATCH 子句定义要搜索的模式。在本例中,它是通过 Owns 边连接到 Account 节点的 Person 节点。RETURN 子句用于指定要返回的匹配节点的哪些属性。

Spanner Graph 查询结构示例。
图 2:Spanner Graph 查询的结构示例。

图表模式匹配

图表模式匹配可在图表中查找特定模式。最基本的模式是元素模式,例如匹配节点的节点模式和匹配边的边模式。

节点模式

节点模式用于匹配图表中的节点。此模式包含一对匹配的圆括号,其中可选择包含图形模式变量、标签表达式和属性过滤器。

查找所有节点

以下查询会返回图表中的所有节点。变量 n(称为图表模式变量)会绑定到匹配节点。在这种情况下,节点模式会匹配图表中的所有节点。

GRAPH FinGraph
MATCH (n)
RETURN LABELS(n) AS label, n.id;

此查询会返回 labelid

标签 id
账号 7
账号 16
账号 20
用户 1
用户 2
用户 3

查找具有特定标签的所有节点

以下查询会匹配图中具有 Person 标签的所有节点。该查询会返回匹配节点的 label 以及 idname 属性。

GRAPH FinGraph
MATCH (p:Person)
RETURN LABELS(p) AS label, p.id, p.name;

此查询会返回匹配节点的以下属性:

标签 id name
用户 1 Alex
用户 2 Dana
用户 3 Lee

查找与标签表达式匹配的所有节点

您可以创建包含一个或多个逻辑运算符的