Cypher API
Aura 图分析 (Graph Analytics) 的 Cypher API 与 GDS 插件 API 尽可能保持一致。除了一些限制外,您可以应用文档其余部分中的大多数示例。
|
现在,您可以在 AuraDB 内部使用 Cypher API,而无需 Aura API 凭据。 |
投影图 (Projecting a graph)
|
Aura 图分析不支持原生投影 (Native projections) 和旧版 Cypher 投影。 |
使用带有附加身份验证子句的 Cypher 投影,将图投影到 GDS 会话中。
确保在创建会话的同时,包含带有 Aura Graph Analytics 标签的附加参数。
CYPHER runtime=parallel (1)
MATCH (source)
OPTIONAL MATCH (source)-->(target)
RETURN gds.graph.project('g',
source,
target,
{},
{ memory: '2GB' } (2)
)
| 1 | 建议使用 Cypher parallel 运行时,但这并非强制要求。 |
| 2 | 包含与会话相关参数(例如 memory,必填)的映射。 |
如果您已显式创建了会话,请添加 sessionId 参数作为会话 ID,以使用该现有会话。
CYPHER runtime=parallel (1)
MATCH (source)
OPTIONAL MATCH (source)-->(target)
RETURN gds.graph.project('g',
source,
target,
{},
{ sessionId: '00000000-11111111' }
)
| 1 | 建议使用 Cypher parallel 运行时,但这并非强制要求。 |
运行算法
|
有关不支持的算法列表,请参阅限制部分。 |
Aura 图分析的 Cypher API 支持所有现有执行模式中的大多数算法和机器学习操作。其语法与 GDS 插件相同,并增加了身份验证子句。
stream 模式下调用算法过程CALL gds.pageRank.stream('g')
会话管理
会话管理过程允许显式创建不附带任何图的新会话,或者列出并删除现有会话。
创建会话
调用 gds.session.getOrCreate 过程会根据指定的参数触发 GDS 会话的创建。如果具有给定名称和配置的会话已存在,则直接返回该会话。
CALL gds.session.getOrCreate(
'test-session',
'2GB',
duration({minutes: 30})
)
YIELD name
RETURN name
| 名称 (name) |
|---|
"test-session" |
当您通过 gds.session.getOrCreate 显式创建会话时,请记下 sessionId,并在投影新图时将其设置为 gds.graph.project 过程的配置参数。
语法
CALL gds.session.getOrCreate(
sessionName: String,
memory: String,
ttl: Duration
cloudLocation: Map
) YIELD
id: String,
name: String,
auraInstanceId: String,
memory: String,
status: String,
creationTime: Datetime,
host: String,
expiryDate: Datetime,
ttl: TemporalAmount,
errorMessage: String
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
sessionName |
字符串 |
否 |
要创建或返回的 GDS 会话名称。 |
memory |
字符串 |
否 |
GDS 会话的大小,例如 |
TTL (存活时间) |
Duration |
是 |
当没有记录到活动时,GDS 会话的生存时间 (TTL),例如 |
| 名称 | 类型 | 描述 |
|---|---|---|
|
字符串 |
GDS 会话的唯一标识符。 |
|
字符串 |
GDS 会话的名称。 |
|
字符串 |
GDS 会话所附属的 Aura 实例 ID。 |
|
字符串 |
GDS 会话的大小,例如 |
|
字符串 |
GDS 会话的状态,例如 |
|
Datetime |
GDS 会话创建的时间。 |
|
字符串 |
GDS 会话的公共主机地址。 |
|
Datetime |
GDS 会话最终过期的确定时间。 |
|
TemporalAmount |
因不活动而导致 GDS 会话过期前的剩余时间。 |
|
字符串 |
如果 GDS 会话无法创建或处于不健康状态,则显示的错误消息。 |
列出会话
gds.session.list 过程返回当前 Aura 用户可用的所有 GDS 会话。
语法
CALL gds.session.list(
projectId: String,
filterAuraInstanceId: boolean
) YIELD
id: String,
name: String,
auraInstanceId: String,
memory: String,
status: String,
creationTime: Datetime,
host: String,
expiryDate: Datetime,
ttl: TemporalAmount,
errorMessage: String
| 名称 | 类型 | 可选 | 默认 | 描述 |
|---|---|---|---|---|
项目 ID (projectId) |
字符串 |
是 |
"" |
GDS 会话所属的项目 ID。如果未指定,将返回 Aura 用户的所有会话。 |
filterAuraInstance |
字符串 |
是 |
false |
如果设置为 |
| 名称 | 类型 | 描述 |
|---|---|---|
|
字符串 |
GDS 会话的唯一标识符。 |
|
字符串 |
GDS 会话的名称。 |
|
字符串 |
GDS 会话所附属的 Aura 实例 ID。 |
|
字符串 |
GDS 会话的大小,例如 |
|
字符串 |
GDS 会话的状态,例如 |
|
Datetime |
GDS 会话创建的时间。 |
|
字符串 |
GDS 会话的公共主机地址。 |
|
Datetime |
GDS 会话最终过期的确定时间。 |
|
TemporalAmount |
因不活动而导致 GDS 会话过期前的剩余时间。 |
|
字符串 |
如果 GDS 会话无法创建或处于不健康状态,则显示的错误消息。 |
限制
与 GDS 插件相比,Aura 图分析的 Cypher API 存在一些限制。
|
如果您通过 GDS Python 客户端使用 Aura 图分析,其中一些限制可能不适用。有关详细信息,请参阅 Python 客户端文档。 |
其他过程和函数
Aura 图分析的 Cypher API 不支持 GDS 插件中提供的所有过程和函数。此处提到的一些内容将来可能会得到支持,而其他内容可能永远不会得到支持。
图目录
以下图目录过程不受支持:
-
gds.graph.project -
gds.graph.project.estimate -
gds.graph.project.cypher -
gds.graph.project.cypher.estimate -
gds.graph.export -
gds.graph.export.csv -
gds.graph.export.csv.estimate -
gds.backup -
gds.restore -
gds.graph.graphProperty.drop -
gds.graph.graphProperty.stream
机器学习
训练好的模型只能在训练它们时所在的同一会话中用于预测。会话删除后,所有训练好的模型都将丢失。
以下机器学习过程不受支持:
-
gds.model.publish -
gds.model.store -
gds.model.load -
gds.model.delete -
gds.linkprediction.adamicAdar -
gds.linkprediction.commonNeighbors -
gds.linkprediction.preferentialAttachment -
gds.linkprediction.resourceAllocation -
gds.linkprediction.sameCommunity -
gds.linkprediction.totalNeighbors -
gds.splitRelationships
此外,所有 pipeline 过程均不受支持。
显式验证 Aura API
当直接在 AuraDB 实例中执行 Cypher 查询时,您会自动获得创建和管理自己的 Aura 图分析会话的权限,无需提供显式的 API 凭据。
仅在以下两种特定情况下,需要通过 Aura API 凭据进行显式身份验证:
-
项目范围管理 (Cypher):您正在使用 Cypher,并且需要管理整个 Aura 控制台项目中所有会话的生命周期操作(例如列出或删除),而不仅仅是您当前登录的数据库用户所创建的会话。在这种情况下,您必须在每个 Cypher 查询中使用
gds.aura.api.credentials()函数。 -
使用 Python 客户端:如果您使用专用的 GDS Python 库来编排会话,则客户端需要 Aura API 凭据来验证控制平面。有关说明,请参阅 Neo4j 图数据科学客户端文档。
|
对于凭据等敏感数据,使用查询参数是一种良好的做法。这也消除了多次输入相同字符串的需要。 在 Aura 控制台中,您可以在 查询工具 (Query tool) 中设置查询参数。对于其他环境,请参阅 Cypher 手册。 |
gds.aura.api.credentials 的使用WITH gds.aura.api.credentials($clientId, $clientSecret) AS credentials (1)
MATCH (source)
OPTIONAL MATCH (source)-->(target)
RETURN gds.graph.project('g',
source,
target,
{},
{ memory: '4GB' }
)
| 1 | 只要指定了别名,您可以使用任何别名。 |
该函数不返回任何值,而是将凭据注册到查询上下文中。凭据不会保存在任何地方,并且在查询完成后立即被丢弃。
如果您在此管理上下文中进行操作,则必须在与会话交互的每个查询中包含凭据函数。例如,如果您使用显式凭据创建了图,则尝试在新查询中运行算法而不再次传递凭据将会失败。
CALL gds.wcc.stream('g') // This alone will not work