抽象的图数据库网络结构

GSQL 深度研究

TigerGraph 图查询语言的设计、应用与优化

图灵完备

支持复杂算法和迭代计算

并行处理

分布式执行引擎优化

执行摘要

GSQL 是 TigerGraph 图数据库的核心查询与分析语言,它结合了 SQL 的声明式特性和图灵完备的编程能力,专为高效处理复杂图数据而设计。 GSQL 支持从数据加载、图模式定义到高级图算法和特定场景应用的全链路操作,其强大的控制流、累加器和并行处理机制使其能够应对大规模图数据的深度分析需求。

核心优势

图灵完备的语言设计,支持复杂算法实现

性能表现

并行处理引擎,支持大规模图数据计算

应用场景

社交网络、推荐系统、欺诈检测等

1. GSQL 语言基础

1.1 语法结构与核心概念

GSQL 语言借鉴了 SQL 的语法风格,使其对于熟悉关系型数据库的用户易于上手,但其核心设计理念是面向图数据的查询与分析。 GSQL 是一种图灵完备的语言,这意味着它可以表达任何可计算的算法,这主要得益于其强大的控制流语句和累加器机制 [1]

核心特性

  • 顶点(Vertex)边(Edge)作为核心数据模型
  • 并行处理执行模型,支持大规模图计算
  • 查询调用查询功能,支持模块化开发 [70]
  • 累加器(Accumulators)机制,用于并行数据聚合
执行模型示例
CREATE QUERY exampleQuery() FOR GRAPH MyGraph {
  SumAccum<INT> @@globalCount = 0;
  Start = {Person.*};
  
  Result = SELECT v FROM Start:v
           WHERE v.age > 30
           ACCUM @@globalCount += 1;
           
  PRINT @@globalCount;
}

1.2 数据类型与变量声明

GSQL 提供了丰富的数据类型来满足图数据建模和计算的需求。 基本数据类型包括 INTUINTFLOATDOUBLEBOOLSTRINGDATETIME [47]

基本数据类型

  • INT - 整数类型
  • UINT - 无符号整数
  • FLOAT/DOUBLE - 浮点数
  • BOOL - 布尔值
  • STRING - 字符串
  • DATETIME - 日期时间

复杂数据类型

  • LIST - 有序值序列
  • SET - 唯一值集合
  • MAP - 键值对映射
  • BAG - 多重集合

变量作用域

局部变量

在查询或代码块内部声明

INT x;
参数

查询定义的输入参数

(INT p1, STRING p2)
累加器

并行聚合变量

@@global, @vertex

1.3 控制流语句 (IF, WHILE, FOR循环)

GSQL 语言提供了标准的控制流原语,包括 IF-THEN-ELSE 形式的分支语句和 WHILE、FOR 循环语句,这些控制流语句极大地增强了 GSQL 的表达能力 [1] [59]

IF 语句

条件分支控制

IF condition THEN
  // 代码块
ELSE IF condition2 THEN
  // 代码块
ELSE
  // 代码块
END

WHILE 循环

条件循环执行

WHILE condition DO
  // 代码块
  // 更新条件
END

FOREACH 循环

集合遍历

FOREACH item IN list DO
  // 处理每个元素
END
循环嵌套与并行化

GSQL 的循环可以自由嵌套,最内层循环的代码块会形成一个有向无环图(DAG),这种设计允许中间数据在图上传递,为并行化处理提供了潜力 [1]

1.4 函数与运算符

GSQL 提供了丰富的内置函数和运算符,用于数据处理、转换、计算和聚合。 这些函数和运算符覆盖了字符串处理、数学运算、日期时间计算、类型转换等多个方面。

常用函数类别

  • 字符串函数: gsql_trim(), gsql_ltrim(), gsql_rtrim()
  • 数学函数: abs(), ceil(), floor(), log()
  • 日期时间: datetime_format(), datetime_diff()
  • 类型转换: to_int(), to_float(), to_string()

运算符

  • 算术: +, -, *, /, %
  • 比较: =, !=, >, <, >=, <=
  • 逻辑: AND, OR, NOT
  • 集合: IN, NOT IN, UNION, INTERSECT
累加器操作

累加器支持特定的聚合操作,如 SumAccum 使用 += 运算符, ListAccum 使用 += 添加元素, SetAccum 添加不重复元素。

2. 图模式设计

2.1 顶点类型 (Vertex Types) 定义

在 TigerGraph 中,图模式的设计始于顶点类型(Vertex Types)的定义。顶点代表图数据模型中的实体或对象,例如人、地点、事物等 [46]

顶点定义语法
CREATE VERTEX Person (
  PRIMARY_ID name STRING,
  age INT,
  gender STRING,
  state STRING
) WITH primary_id_as_attribute="true"

关键要素

  • PRIMARY_ID - 唯一标识顶点的属性
  • 属性定义 - 描述顶点特征的字段
  • 主键长度限制 - 最多 16384 字节 [47]
  • 顶点大小限制 - 单个顶点不超过 10MB [47]

配置选项

  • primary_id_as_attribute="true" - 主键作为可查询属性
  • WITH STATS="OUTDEGREE_BY_EDGETYPE" - 统计信息收集
  • • 支持多种数据类型:STRING, INT, DATETIME, BOOL 等

2.2 边类型 (Edge Types) 定义

边类型(Edge Types)定义了图中顶点之间的连接关系。 在 TigerGraph 中,使用 CREATE DIRECTED EDGECREATE UNDIRECTED EDGE 语句来定义边类型 [46] [47]

边定义示例
// 无向边
CREATE UNDIRECTED EDGE Friendship (
  FROM Person, 
  TO Person,
  connect_day DATETIME
)

// 有向边(带反向边)
CREATE DIRECTED EDGE Transfer (
  FROM Account, 
  TO Account,
  amount DOUBLE,
  transfer_date DATETIME
) WITH REVERSE_EDGE="Reverse_Transfer"
方向性

有向边表示单向关系,无向边表示双向关系

边属性

可以定义属性描述关系特征

反向边

WITH REVERSE_EDGE 优化双向遍历 [51]

DISCRIMINATOR 属性

当多条同类型边共享相同端点时,可以使用 DISCRIMINATOR 属性区分它们 [51]

CREATE DIRECTED EDGE transfer (
  FROM Account, TO Account,
  date DATETIME DISCRIMINATOR,
  amount DOUBLE
)

2.3 图模式 (Graph Schema) 构建原则

图模式(Graph Schema)是 TigerGraph 数据库的核心,它定义了数据的组织结构,包括顶点类型、边类型以及它们之间的关系 [48]。TigerGraph 采用"模式优先"(schema-first)的方法 [51]

构建原则

  • 清晰性 - 直观反映业务领域
  • 完整性 - 包含所有必要数据元素
  • 可扩展性 - 适应未来需求变化
  • 性能导向 - 优化查询效率

设计流程

  1. 1. 识别主要实体(顶点类型)
  2. 2. 定义实体间关系(边类型)
  3. 3. 确定顶点属性和主键
  4. 4. 确定边属性和方向
  5. 5. 创建图模式实例
图模式创建示例
// 定义顶点类型
CREATE VERTEX Person (PRIMARY_ID name STRING, age INT, gender STRING)
CREATE VERTEX Movie (PRIMARY_ID title STRING, release_year INT, genre STRING)

// 定义边类型
CREATE UNDIRECTED EDGE Friendship (FROM Person, TO Person, since DATETIME)
CREATE DIRECTED EDGE Rated (FROM Person, TO Movie, rating INT, date DATETIME)

// 创建图模式
CREATE GRAPH SocialNet (Person, Movie, Friendship, Rated)

2.4 图模式设计最佳实践与优化

图模式设计的最佳实践旨在创建一个既能准确反映业务需求,又能保证高性能查询和数据管理效率的图结构。 TigerGraph 官方提供了关于图模式设计和查询编写的最佳实践指南 [49]

设计原则

  • "为查询而设计" - 根据常用查询优化模式
  • 属性内联 - 频繁查询属性作为内联属性
  • 关系方向 - 合理使用有向/无向边
  • 反向边优化 - 加速特定方向遍历 [51]

性能优化

  • 外键约束 - 自动创建二级索引 [4]
  • 辅助索引 - 直接在边表创建索引
  • 悬空边处理 - ON DELETE CASCADE 选项 [4]
  • 统计信息 - OUTDEGREE_BY_EDGETYPE [47]
索引优化示例

为优化反向边遍历,可以创建包含边属性的复合索引 [4]

CREATE INDEX PersonOwnAccountByCreateTime 
ON PersonOwnAccount (account_id, create_time);

3. 数据加载与更新

3.1 从外部源加载数据 (CSV, JSON)

TigerGraph 支持从多种外部数据源导入数据,主要包括文件和消息队列。 文件格式方面,目前 TigerGraph 主要支持 CSV 和 JSON 格式 [9] [54]

CSV 格式要求

  • • 支持表头(Has header)或元表头
  • • 单字符分隔符(如逗号、制表符)
  • • 列表/集合类型需要特殊格式 [7]
  • • 字符串引号处理

JSON 支持

  • • 结构化数据映射
  • • JSON 对象和数组处理 [55]
  • • 半结构化数据支持 [64]
  • • 嵌套属性访问
列表类型数据的 CSV 格式

列表或集合类型属性需要特殊格式处理 [7]

整数列表:

"[2,3,4]"\\[2,3,4\\]

字符串列表:

"[\"a\", \"b\", \"c\"]"

实时数据源

TigerGraph 支持从 Kafka 等消息队列系统持续加载数据,支持实时数据更新场景 [53] [54]

3.2 数据加载作业 (LOADING JOB) 的创建与执行

创建数据加载作业 (LOADING JOB) 是 TigerGraph 数据导入流程中的核心环节。 这个作业定义了数据源中的数据结构如何映射到已定义的图模式上 [9]

加载作业示例
USE GRAPH Social;
BEGIN
CREATE LOADING JOB load_social FOR GRAPH Social {
  DEFINE FILENAME file1="/path/to/persons.csv";
  DEFINE FILENAME file2="/path/to/friendships.csv";

  LOAD file1 TO VERTEX Person VALUES ($0, $1, $2) 
  USING header="true", separator=",";
  
  LOAD file2 TO EDGE Friendship VALUES ($0, $1, $3) 
  USING header="true", separator=",";
}
END
DEFINE FILENAME

定义数据文件路径 [10]

LOAD 语句

映射数据到顶点/边 [56]

USING 子句

指定文件格式参数

作业管理命令

  • RUN LOADING JOB - 执行加载作业 [8]
  • SHOW LOADING STATUS - 查看加载状态 [56]
  • ABORT LOADING JOB - 中止加载作业 [8]
  • RESUME LOADING JOB - 恢复加载作业

3.3 数据插入、更新与删除操作 (UPSERT, DELETE)

TigerGraph 提供了多种机制来对图数据进行修改,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)操作。 这些操作可以通过 GSQL 查询语句或专门的加载作业来完成。

UPSERT 操作

结合 INSERT 和 UPDATE 功能的关键操作:

  • • 顶点/边不存在时创建
  • • 已存在时更新属性
  • • 确保数据一致性
  • • 比单独操作更高效

DELETE 操作

删除顶点、边或满足条件的元素:

DELETE FROM MyVertex 
WHERE condition;

// 避免悬空边
INTERLEAVE IN PARENT Person 
ON DELETE CASCADE
事务支持

TigerGraph 支持 ACID 事务,保证数据修改操作的原子性和一致性。复杂的更新操作可以嵌入到 GSQL 查询中,在分析过程中动态改变图数据。

3.4 数据加载与更新的性能考量

数据加载与更新的性能是 TigerGraph 应用中需要重点考虑的因素,尤其是在处理大规模图数据时。

加载优化策略

  • 批量加载 - 优先使用 CREATE LOADING JOB [55]
  • 并行处理 - 分布式执行加速
  • 参数调优 - 调整并行度和缓冲区
  • 资源监控 - CPU、内存、I/O 监控

更新性能考量

  • 索引维护 - 权衡查询性能与更新开销
  • 事务管理 - 合理设置事务边界
  • 并发控制 - 避免锁竞争
  • 数据分区 - 基于顶点ID哈希均衡负载
增量加载与实时更新

对于持续流入的数据,TigerGraph 支持从消息队列(如 Kafka)进行实时或近实时的数据加载 [53] [54]。需要确保加载速率能够跟上数据流入速率,并注意实时更新的并发控制。

4. 查询设计与优化

4.1 GSQL 查询基础 (SELECT, FROM, WHERE)

GSQL 查询的核心是 SELECT 语句,它用于从图中检索数据。 一个典型的 GSQL SELECT 查询包含多个主要部分,每个部分都有特定的功能和优化考量。

基础查询结构
CREATE QUERY exampleQuery() FOR GRAPH MyGraph {
  SumAccum<INT> @friendCount = 0;
  Start = {Person.*};

  Result = SELECT p FROM Start:p -(Friendship)- :f
           WHERE p.age > 30
           ACCUM p.@friendCount += 1
           POST-ACCUM (p)
           HAVING p.@friendCount > 0
           ORDER BY p.@friendCount DESC
           LIMIT 100;

  PRINT Result[Result.name, Result.@friendCount];
}

FROM 子句

指定查询起始点,可以是顶点集别名

WHERE 子句

过滤顶点或边,应尽早应用减少数据量

图遍历模式

通过 -(边模式)->(顶点模式) 描述路径

ACCUM 子句

遍历每条边时执行聚合操作

POST-ACCUM 子句

处理顶点所有边后的进一步操作

结果处理

ORDER BY, LIMIT, PRINT/RETURN

4.2 图遍历与模式匹配

GSQL 的图遍历能力是其核心功能之一,它允许查询沿着图的边从一个顶点集导航到另一个顶点集,并在遍历过程中收集数据或执行计算 [1]

遍历模式语法

FROM Start:s-(:e)->User:t - 从顶点集 Start 出发

FROM p-(Friendship:f)->Person:friend - 指定边类型

MATCH 子句 - 复杂模式匹配 [30]

优化策略

  • 从低基数节点开始 - 控制初始规模 [29]
  • 明确指定标签 - 避免不必要扫描 [29]
  • 利用 ACCUM 聚合 - 比后聚合更高效
MATCH 子句示例
MATCH (src:Account {id: 7})-[:Transfers]->{1,3}(dst:Account)
WHERE src.balance > dst.balance
ACCUM @@transactions += 1
PRINT @@transactions;

明确指定节点和边标签,限制路径长度范围 [29]

4.3 累加器 (Accumulators) 的使用与优化

累加器 (Accumulators) 是 GSQL 中一种非常重要的数据结构,用于在并行计算过程中收集和聚合数据 [1] [57]

累加器类型

全局累加器 - @@前缀,集中存放结果

顶点累加器 - @前缀,分散存储于顶点

聚合类型 - Sum, Max, Min, Avg, List, Set, Map [58] [60]

应用场景

  • PageRank - 存储顶点得分和变化
  • 路径查找 - 收集路径信息 [16]
  • 模式匹配 - 聚合满足条件元素
  • 共同好友 - 使用 SetAccum 计算
累加器操作时机

累加器主要在 SELECT 查询块的 ACCUM 和 POST-ACCUM 子句中进行操作 [57]

ACCUM - 遍历每条边时执行

ACCUM v.@score += 1

POST-ACCUM - 处理顶点所有边后执行

POST-ACCUM v.@final = f(v.@temp)

4.4 索引 (Indexing) 与查询性能优化

索引是提高数据库查询性能的常用手段,在图数据库中也不例外。 虽然 TigerGraph 自动为主键创建索引,但合理的索引策略对查询性能至关重要。

索引类型

  • 主键索引 - 自动创建,高效顶点查找
  • 外键约束 - 自动创建二级索引 [4]
  • 辅助索引 - 直接在边表创建
  • 复合索引 - 包含多个属性

索引优化策略

  • 反向边优化 - 为目标节点键创建索引 [4]
  • 属性过滤 - 为频繁查询属性创建索引
  • 边属性索引 - 包含边属性的复合索引
  • 权衡考量 - 索引维护开销与查询收益
索引创建示例
// 为反向边遍历创建索引
CREATE INDEX PersonOwnAccountByCreateTime 
ON PersonOwnAccount (account_id, create_time);

// 分析查询负载识别索引需求
// 避免创建重复或冗余索引 [11]

查询计划分析

TigerGraph 提供了查询执行计划的分析工具。通过分析查询计划,可以了解查询是如何执行的,识别潜在的性能瓶颈,并进行针对性的优化。

4.5 GSQL 查询编写最佳实践

编写高效的 GSQL 查询需要遵循一系列最佳实践,这些实践有助于充分利用 TigerGraph 的并行处理能力和优化查询执行计划。 TigerGraph 官方提供了关于图模式设计和查询编写的最佳实践指南 [49]

1. 尽早过滤数据

WHERE 子句尽早应用过滤条件,减少后续计算数据量

2. 合适遍历起点

从基数较小的顶点类型开始遍历,避免全图扫描

3. 明确指定类型

在 FROM 和 MATCH 中明确指定顶点和边类型 [29]

4. 合理使用累加器

正确选择累加器类型,避免存储过大数据结构

5. 优化 ACCUM/POST-ACCUM

边级别操作放 ACCUM,顶点级别操作放 POST-ACCUM

6. 避免重复计算

将重复使用的计算结果存储在累加器中

7. 利用索引

为频繁查询的非主键属性创建辅助索引

8. 分析查询计划

使用分析工具识别性能瓶颈

9. 模块化查询

复杂逻辑分解为多个可重用查询

10. 测试与基准测试

比较不同查询写法的执行时间和资源消耗

5. 高级功能与应用

5.1 递归查询 (Recursive Queries)

递归查询是图数据库中一项重要的高级功能,它允许查询遍历图中任意深度的路径,直到满足特定条件。 GSQL 支持递归查询,这对于处理层级数据、寻找连通分量、执行图算法等场景非常有用 [69]

实现方式

  • WHILE 循环 - 结合累加器和顶点集变量
  • 查询调用 - 模块化组织复杂递归逻辑 [70]
  • 累加器 - 记录已访问顶点避免重复
  • 终止条件 - 防止无限循环

应用场景

  • 层级数据 - 组织架构、文件系统
  • 连通分量 - 查找所有可达顶点
  • 传递闭包 - 计算关系的传递闭包
  • 图算法 - PageRank、社区发现
递归查询示例
CREATE QUERY findAllReachable(VERTEX<Person> start) FOR GRAPH Social {
  OrAccum @visited = false;
  SetAccum<VERTEX> @@reachable;
  SetAccum<VERTEX> @@current;
  
  Start = {start};
  @@current = Start;
  
  WHILE @@current.size() > 0 DO
    @@current = SELECT t FROM @@current:s-(Friendship)-Person:t
               WHERE t.@visited == false
               ACCUM t.@visited = true;
    @@reachable += @@current;
  END;
  
  PRINT @@reachable;
}

注意:在某些版本中,查询直接调用自身的递归可能导致 TigerGraph 导出解决方案功能挂起,已在 3.7 及更高版本修复 [71]

5.2 用户自定义函数 (UDFs) 的开发与集成

TigerGraph 允许用户通过 C++ 开发用户自定义函数(User-Defined Functions, UDFs),并将其集成到 GSQL 查询语言中,以扩展 GSQL 的内置功能 [61] [62]

开发流程

  1. 1. 编写 C++ 函数代码
  2. 2. 添加到 ExprFunctions.hpp 文件 [61]
  3. 3. 在 UDIMPL 命名空间内定义 [61]
  4. 4. 重新编译 GSQL 或重启服务
  5. 5. 在查询中调用 UDF

管理方式

  • 本地部署 - 直接修改头文件
  • 云平台 - 通过 GitHub 仓库管理 [63]
  • 版本控制 - 便于团队协作
  • 测试验证 - 性能评估和功能测试
UDF 示例
// C++ 实现
#include <random>
namespace UDIMPL {
  int random_range(int min, int max) {
    std::random_device rd;
    std::uniform_int_distribution<int> dist(min, max);
    return dist(rd);
  }
}

// GSQL 调用
CREATE QUERY useRandom() FOR GRAPH MyGraph {
  INT rand_val = random_range(1, 100);
  PRINT rand_val;
}

注意事项

  • • 复杂的 UDF 逻辑可能影响查询性能
  • • 需要进行充分的测试和性能评估
  • • UDF 为 TigerGraph 提供了极大的灵活性
  • • 支持集成外部库和特定领域计算 [62]

5.3 内置图算法的使用 (如 PageRank, 最短路径)

TigerGraph 提供了一个丰富的图算法库(GSQL Graph Algorithm Library),其中包含了许多常用的图算法,如 PageRank、最短路径、连通分量、社区发现等 [38] [66]

常用算法

  • PageRank - 顶点重要性计算 [67]
  • 最短路径 - BFS 实现 [66]
  • 连通分量 - 查找连通子图
  • 社区发现 - Louvain 算法 [38]
  • 路径查找 - 交互式运行 [68]

使用方式

  • GitHub 获取 - 下载算法库 [38]
  • 安装查询 - 在 TigerGraph 中安装
  • 参数化调用 - 指定起点、终点等参数
  • 可视化运行 - Insights 图形界面 [67]
  • 定制修改 - 查看和修改实现
PageRank 算法原理

PageRank 计算过程通常涉及迭代,直到所有顶点上的得分计算最大误差低于一个给定阈值或达到最大迭代次数 [1] [18]

  1. 初始化所有顶点的 PageRank 值
  2. 迭代计算每个顶点的得分
  3. 使用累加器聚合变化值
  4. 检查收敛条件或最大迭代次数

最短路径算法

最短路径算法用于查找图中两个顶点之间的最短路径。在 GSQL 中,通过遍历实现:从一个起始节点开始,逐步扩展到其邻居,直到找到目标节点或遍历完所有可达节点 [15] [16]

CREATE QUERY shortestPath(VERTEX<Person> start, VERTEX<Person> end) FOR GRAPH Social {
  OrAccum @visited = false;
  SumAccum<INT> @distance = -1;
  Start = {start};
  
  Start = SELECT s FROM Start:s
         ACCUM s.@visited = true, s.@distance = 0;
         
  WHILE Start.size() > 0 DO
    Start = SELECT t FROM Start:s-(Friendship)-Person:t
           WHERE t.@visited == false
           ACCUM t.@visited = true,
                 t.@distance = s.@distance + 1
           HAVING t == end; // 找到目标节点时停止
  END;
  
  PRINT end.@distance;
}

5.4 GSQL 在特定场景的应用 (社交网络分析, 推荐系统, 欺诈检测)

GSQL 凭借其强大的图处理能力和灵活的查询语言,在多个领域都有广泛的应用,特别是在需要深度关系分析的场景中。

社交网络分析

  • • 共同好友发现 [39]
  • • 用户影响力计算
  • • 社区发现算法
  • • 信息传播路径 [72]

GSQL 101 教程使用简单的社交友谊图演示基本操作 [47]

推荐系统

  • • 协同过滤推荐 [22]
  • • 基于内容的推荐
  • • 图遍历模式匹配
  • • 相似用户/商品发现 [23]

将用户、商品和交互建模为图,实现复杂推荐算法

欺诈检测

  • • 循环交易检测
  • • 欺诈团伙识别
  • • 异常行为发现 [57]
  • • 实时风险预警 [72]

金融图中定义 Account 顶点和 transfer 边,识别可疑资金流动 [51]

金融欺诈检测示例

查询与当前交易账户有过多共同邻居且这些邻居行为异常的账户 [24]

CREATE QUERY detectFraud(Account source, DATETIME startDate, DATETIME endDate) FOR GRAPH FinancialGraph {
  SetAccum<Account> @@suspiciousAccounts;
  SetAccum<Account> @neighbors;
  
  // 查找源账户在时间范围内的交易邻居
  SourceNeighbors = SELECT n FROM source:s-(transfer:e)-Account:n
                   WHERE e.transfer_date >= startDate AND e.transfer_date <= endDate
                   ACCUM s.@neighbors += n;
  
  // 查找共同邻居异常的交易账户
  SuspiciousAccounts = SELECT t FROM SourceNeighbors:n-(transfer:e)-Account:t
                      WHERE t != source AND e.transfer_date >= startDate AND e.transfer_date <= endDate
                      ACCUM 
                        INT commonNeighbors = (n.@neighbors INTERSECT t.@neighbors).size(),
                        IF commonNeighbors > THRESHOLD THEN 
                          @@suspiciousAccounts += t 
                        END;
  
  PRINT @@suspiciousAccounts;
}

5.5 GSQL 与 TigerGraph 生态系统集成

GSQL 作为 TigerGraph 的核心查询语言,与 TigerGraph 的整个生态系统紧密集成,提供了多种方式来访问和操作图数据。

REST API 集成

  • RESTPP 服务 - 通过 HTTP 请求交互 [51]
  • 多语言支持 - Python, Java, JavaScript 等
  • 功能完整 - 查询、加载、管理图模式
  • JSON 结果 - 易于处理和集成

pyTigerGraph SDK

  • 官方 Python SDK - 功能丰富的封装 [46]
  • DataFrame 支持 - Pandas 数据加载
  • 高级功能 - 结果转换、算法调用
  • 简洁 API - 直观的对象和方法

可视化工具

GraphStudio

基于 Web 的可视化界面,支持图模式设计、数据加载、查询编写和结果可视化 [46]

Insights

无代码模式搜索,集成路径查找和图算法功能 [67]

集成优势

  • 易于嵌入 - 轻松集成到现有应用架构
  • 团队协作 - 支持多开发者协作
  • 全链路支持 - 从开发到生产部署
  • 生态系统 - 丰富的工具和库支持

参考文献