图数据库

共 20 题
📑 题目列表 20 题
#
★★★

1. 图数据库的存储模型,原生图(Neo4j, NebulaGraph, JanusGraph)与多层映射(图→关系表→内存图)的性能差异?

原生图存储(Neo4j、NebulaGraph、JanusGraph)与多层映射(图→关系表→内存图)在性能上有什么差异?

  • 原生图存储模型的特点
  • 多层映射(图→关系表→内存图)的代价
  • 两者性能差异的根源

原生图存储(如 Neo4j、NebulaGraph、JanusGraph)在图结构上直接存储节点与边,用指针/邻接结构把边与两端节点物理相邻存放,遍历时通过指针跳转实现"索引邻居"(index-free adjacency),多跳遍历无需全局索引查找,遍历性能与图大小无关、只与遍历子图相关,因此深度遍历与多跳查询很高。多层映射通常是先把图建模为关系表(节点表+边表),再用 JOIN 或加载到内存图(如内存图计算框架)执行遍历,其代价是每跳遍历都要通过索引/JOIN 重建邻接关系,涉及多次索引查找与行的物化,遍历深度越大开销越大,且内存图还需要加载与序列化开销。性能差异的根源是"邻接关系是否物理化存储":原生图把邻接关系固化在存储中,遍历零成本获取邻居;映射式每次遍历都要重新计算邻接关系,导致遍历成本随深度线性叠加。

核心概念是 index-free adjacency(索引无关邻接访问)。回答应强调原生图把"邻居关系"作为物理存储的一部分,遍历是内存指针跳转,而映射式依赖 JOIN/索引重建邻接,遍历成本随深度放大。同时说明内存图适合批量算法(如全图 PageRank)但一次性加载有成本,体现对两种路径适用场景的理解。

#
★★★

2. 图查询语言,Cypher(Neo4j)、nGQL(NebulaGraph)、GQL(ISO/IEC 39075 国际标准)的语法与表达力对比?

对比 Cypher(Neo4j)、nGQL(NebulaGraph)、GQL(ISO/IEC 39075 国际标准)三种图查询语言的语法与表达力?

  • 三种语言的语法特点
  • 三种语言的表达力差异
  • GQL 标准化的意义

Cypher 是 Neo4j 的声明式图查询语言,以 ASCII 艺术式模式匹配((a)-[:REL]->(b))表达图模式,语法直观、面向路径遍历,支持 MATCH、WHERE、RETURN、可变长度路径(可变长度关系)等,表达力强且易于理解。nGQL 是 NebulaGraph 的查询语言,语法类似 SQL(GOFETCHMATCH 等),支持分布式图上的点边查询、路径与管道式数据流,同时提供 SQL 风格与图遍历风格两套语法。GQL 是 ISO/IEC 39075 国际标准图查询语言,以属性图为基础,统一了模式匹配、路径查询与图遍历的表达,目标是消除各厂商方言差异,提供跨平台的标准图查询能力。三者表达力都覆盖图模式匹配与路径查询,差异在于语法风格(Cypher 直观、nGQL 兼具 SQL 与遍历、GQL 标准化)与生态绑定(Cypher 绑定 Neo4j、nGQL 绑定 NebulaGraph、GQL 是开放标准)。

回答应抓住"语法风格 + 标准化程度"两个维度。Cypher 与 nGQL 是厂商生态语言,GQL 是国际标准,三者都支持模式匹配,但表达风格与可移植性不同。GQL 的提出意味着图查询语言开始标准化,回答可提及 GQL 与 SQL/PGQ 的关系,体现对标准演进的了解。

#
★★★

3. 图数据库的批量导入与写入性能(Neo4j import、Nebula 批量写入)

图数据库如何实现批量导入与高写入性能?以 Neo4j import 与 Nebula 批量写入为例说明?

  • 批量导入的常见方式
  • Neo4j import 的机制
  • Nebula 批量写入的机制

图数据库批量导入通常分为两类:一是离线批量导入工具,用于一次性灌入海量数据;二是在线批量写入 API,用于持续写入。Neo4j 的 neo4j-admin import 是离线工具,直接从 CSV 文件构建图(节点文件与关系文件),跳过正常事务与索引构建,利用预排序与批量构建,可快速导入大规模数据,适合初始化。Neo4j 在线写入常用 Cypher 的 UNWIND 批量参数化插入或 apoc.load.csv,配合显式事务分批提交。NebulaGraph 的批量写入通过 INSERT 语句配合 batch 参数与多线程客户端,把数据写入分布式存储,利用批量提交与压缩降低网络与写入开销,并支持从 CSV 导入;其写入路径按点/边分区分布到各存储节点,批量写入可减少 RPC 次数。批量导入的性能关键在:预排序、关闭事务日志、分批提交、避免逐条插入、利用并行与批量网络交互。

回答应区分"离线初始化导入"与"在线持续写入"两类场景,并说明各自工具与优化手段。核心是批量、预排序、分批提交以降低开销,避免逐条事务的多次随机写。体现对图数据库写入性能优化手法的理解。

#
★★★

4. Neo4j GDS 的图投影(graph projection)与 Cypher 查询有何区别?为什么 PageRank、Louvain 等图算法要在内存投影图上执行?

Neo4j GDS 的图投影(graph projection)与 Cypher 查询有什么区别?为什么 PageRank、Louvain 等图算法要在内存投影图上执行?

  • 图投影的概念与作用
  • 图投影与 Cypher 查询的区别
  • 图算法在内存投影图上执行的原因

图投影(graph projection)是 GDS(Graph Data Science)库把图数据加载到内存中的专门表示,形成紧凑的、面向算法执行的图结构(如 CSR 邻接表),它与 Cypher 查询的区别在于:Cypher 是声明式查询,返回匹配模式的子图结果,适合交互式路径查询;图投影是显式构建一个独立的内存图副本,供图算法(PageRank、Louvain、社区检测、最短路径等)整体迭代执行。图算法必须在内存投影图上执行的原因是:这类算法需要反复遍历整张图、多次迭代收敛(如 PageRank 迭代多轮、Louvain 需多次模块度优化),若每次迭代都回到存储层用 Cypher 取数,会因大量网络与磁盘 IO 而无法接受;内存投影图把邻接关系紧凑驻留内存,配合列式/CSR 结构与并行计算,使算法在每个迭代都能快速访问邻居,实现高性能的整体计算。投影还支持子图投影(只投影部分节点/边)与属性投影,便于在特定子图上运行算法。

核心是"查询 vs 算法计算"两种工作负载的差异。查询是"找出匹配子图",算法是"对整图或子图反复迭代计算"。回答应说明投影是算法的数据准备,把图固定为内存中的紧凑结构,避免算法迭代中的存储往返。体现"声明式查询 vs 分析式算法"的区分。

#
★★★

5. Cypher 查询优化器如何选择遍历起点(节点标签与属性索引)?多跳遍历的执行计划与关系库的 JOIN 计划有何对应?

Cypher 查询优化器如何选择遍历起点(基于节点标签与属性索引)?多跳遍历的执行计划与关系库的 JOIN 计划有什么对应关系?

  • 遍历起点的选择策略
  • 标签与属性索引的作用
  • 多跳遍历与 JOIN 的对应

Cypher 查询优化器通过两个步骤选择遍历起点:一是基于谓词与标签,选择能用节点标签或属性索引(如 WHERE n.name = 'x' 命中属性索引)收敛候选集的模式作为起点,起点应是最具选择性(能最小化候选集)的节点;二是对起点做代价估算,比较不同起点与扩展顺序的代价,选择代价最小的执行计划。多跳遍历的执行计划与关系库的 JOIN 计划有明确对应:图遍历中的一跳((a)-[:R]->(b))等价于关系库中节点表与边表的 JOIN,多跳遍历等价于多次 JOIN 的链式连接;遍历的扩展顺序等价于 JOIN 的连接顺序,图优化器选择起点与扩展顺序,正如关系优化器选择 JOIN 顺序与连接方式。差异在于图遍历用邻接指针免索引访问邻居,而关系 JOIN 需索引或哈希连接重建关联,因此图遍历在深路径上更高效,结构上等价于"关系表的多表 JOIN"。

回答应建立"图遍历 = 关系链式 JOIN"的等价模型,并说明优化器选起点实质是"选选择性最高的表作为驱动表"。核心是理解图优化器与关系优化器在"选择驱动表/连接顺序"上的同构,同时指出图存储的邻接访问优势。

#
★★

6. 图遍历算法(BFS/DFS/最短路径/PageRank)的实现原理与在大图上的工程优化(剪枝、并行、索引)?

图遍历算法(BFS/DFS/最短路径/PageRank)的实现原理是什么?在大图上如何做剪枝、并行、索引等工程优化?

  • 各遍历算法的实现原理
  • BFS/DFS/最短路径/PageRank 的差异
  • 大图上的工程优化

BFS(广度优先)用队列逐层扩展,适合求最短路径与连通分量;DFS(深度优先)用栈/递归深入,适合拓扑排序与路径枚举;最短路径算法(如 Dijkstra、A*、BFS)用优先队列按距离扩展,Dijkstra 用于正权图,A* 用启发式剪枝加速;PageRank 是迭代式影响力算法,通过多次迭代按出边传播权重直到收敛。大图上的工程优化包括:剪枝(A* 启发式、双向 BFS、限制搜索深度、按扇出裁剪)、并行(按节点/边分片并行遍历、多线程扩展邻居、GPU 加速)、索引(用邻接索引与属性索引快速定位起点、用标签/属性过滤缩小候选集)、以及内存技术(CSR 紧凑邻接、位图标记访问集、避免重复访问)。这些优化共同降低大图遍历的时间与内存开销。

回答应区分两类算法:确定性遍历(BFS/DFS/最短路径)与迭代分析(PageRank),并说明各自原理。工程优化重点是剪枝减少搜索空间、并行提升吞吐、索引加速定位与内存结构紧凑化。体现对"算法 + 工程"双层面的理解。

#
★★

7. 图存储的邻接表实现,CSR/CSC 与邻接链表在大图遍历中的缓存与内存差异?

图存储的邻接表实现中,CSR/CSC 与邻接链表在大图遍历中的缓存与内存上有什么差异?

  • CSR/CSC 的结构
  • 邻接链表的结构
  • 两者在缓存与内存上的差异

CSR(Compressed Sparse Row)/CSC(Compressed Sparse Column)是紧凑的稀疏图表示:用两个数组分别存储"每行起始偏移"与"非零邻居的列号/目标节点",把所有邻居连续、有序地存放在一个数组中,没有指针开销。邻接链表(adjacency list)为每个节点维护一个链表,每个邻居用指针连接。差异关键在于内存与缓存:CSR/CSC 的节点与邻居是连续密集数组,访问某节点的邻居是连续内存访问,缓存命中率高、内存占用低(无指针、无碎片),非常适合内存图算法与并行遍历;邻接链表为每个邻居分配独立节点、用指针连接,邻居在内存中分散,遍历时指针跳转导致缓存命中率低、内存占用高(指针开销+碎片),且无法利用向量化。因此在大图遍历中,CSR/CSC 在缓存局部性与内存效率上显著优于邻接链表。

核心是"紧凑连续数组 vs 分散指针链表"的缓存与内存差异。回答应说明 CSR/CSC 的连续存储带来高缓存命中与低内存占用,邻接链表因指针分散导致缓存不佳。体现对"数据布局决定遍历性能"的理解,这也是内存图引擎普遍采用 CSR 的原因。

#
★★

8. Supernode(超级节点)问题,高扇出节点的遍历爆炸如何用索引、剪枝与采样缓解?

Supernode(超级节点)问题中,高扇出节点的遍历爆炸如何用索引、剪枝与采样缓解?

  • Supernode 问题的成因
  • 索引、剪枝、采样缓解手段
  • 各手段的适用场景

Supernode 是被极多边连接的高扇出节点(如社交网络中的意见领袖、名人),遍历到它时,其邻居数量巨大,导致遍历分支因子爆炸、搜索空间急剧膨胀,影响性能。缓解手段:一是索引,对节点的边按属性/时间/类型建立二级索引,遍历时按条件过滤只访问满足条件的邻居子集,缩小搜索范围;二是剪枝,限制搜索深度、设置遍历的扇出上限与路径条件,或使用启发式(如 A*、双向搜索)减少无效扩展;三是采样,对高扇出节点的邻居做随机或代表性采样,用近似结果替代精确遍历,常用于统计分析(如抽样邻居估计影响力)。实际中常组合使用:索引精确过滤、剪枝控制规模、采样近似求解,三者按需求在精确性与性能间取舍。

核心是"高扇出导致分支爆炸"。回答应说明三类手段分别从"缩小每步候选集(索引)""控制扩展规模(剪枝)""近似替代精确(采样)"入手,并指出它们是精确与性能的权衡。体现对图遍历中偏斜热点问题的处理能力。

#
★★

9. 图数据库的遍历查询,BFS/DFS 与深度限制(fan-out)?

图数据库的遍历查询中,BFS/DFS 与深度限制(fan-out)如何作用?

  • BFS/DFS 在遍历查询中的使用
  • fan-out(扇出)与深度限制的意义
  • 遍历查询的优化

图数据库的遍历查询(如可变长度路径、多跳模式)通常基于 BFS 或 DFS 执行:BFS 逐层扩展,适合求最短路径与按层传播;DFS 深入探索,适合路径枚举与条件查找。fan-out(扇出)指某节点可扩展的邻居数量,深度限制指遍历最多延伸的跳数。在遍历查询中设置深度限制(如 *1..3)可防止无限深度的路径爆炸,而 fan-out 超限(如邻居数量超过阈值)预示遍历爆炸,需通过剪枝、过滤或限制路径条件控制。实际执行中,优化器会按 BFS 扩展、控制深度、用索引过滤邻居、对高扇出节点限流,以在保证结果的同时控制搜索规模。

回答应说明 BFS/DFS 的适用场景与深度限制、fan-out 的作用。核心是"遍历规模控制":深度限制防止深度爆炸,fan-out 控制反映分支宽度,二者共同抑制遍历爆炸。体现对图遍历查询执行控制的理解。

#
★★

10. 图查询语言,Cypher/Gremlin/GQL 的表达力差异?

对比 Cypher、Gremlin、GQL 三种图查询语言在表达力上的差异?

  • 三种语言的范式差异
  • 表达力差异
  • 适用场景

Cypher 是声明式、基于模式匹配的图查询语言,用 ASCII 模式表达路径,强调"描述想要的结果"(如 MATCH (a)-[:KNOWS]->(b)),检索与模式匹配表达力强、直观易读。Gremlin 是图遍历(graph traversal)语言,采用过程式/函数式风格的遍历步骤链(如 g.V().hasLabel('person').out('KNOWS')),强调"描述如何遍历",可细粒度控制遍历步骤,表达力强但代码更长、学习曲线陡。GQL 是 ISO/IEC 39075 标准语言,以属性图为基础,综合模式匹配与路径遍历,目标是标准化图查询。三者表达力差异的本质:Cypher 声明式强调"结果",Gremlin 过程式强调"遍历过程",GQL 标准化强调"跨平台统一"。声明式语言更简洁、适合复杂模式匹配;过程式语言更灵活、可精确控制遍历与性能;GQL 侧重标准统一。

核心是"声明式 vs 过程式 vs 标准"的范式差异。回答应说明 Cypher 的直观模式匹配、Gremlin 的细粒度遍历控制与 GQL 的标准化目标,并指出表达力与可读性、可控性的权衡。体现对图查询语言三种范式的理解。

#
★★

11. 图数据库的事务支持(Neo4j 单机 ACID vs Nebula 分布式事务)

图数据库的事务支持方面,Neo4j 单机 ACID 与 Nebula 分布式事务有什么区别?

  • Neo4j 单机 ACID 事务
  • Nebula 分布式事务
  • 单机与分布式事务的权衡

Neo4j 是单机架构的数据库,提供完整的 ACID 事务:单个写操作或多个写操作在事务中原子提交,配合 WAL 与锁保证原子性、一致性、隔离性与持久性,事务模型与关系型数据库相近,适合需要强一致性的 OLTP 图应用。NebulaGraph 是分布式架构,数据按分片(partition)分布到多个存储节点,事务需要跨节点协调,采用分布式事务(两阶段提交或基于 Raft 的多副本一致性)保证跨分片操作的原子性。其权衡是:分布式事务提供水平扩展与高可用,但跨节点事务的协调开销(网络通信、锁、协调)带来更高的延迟与复杂性;单机事务延迟低、实现简单,但受单机容量与扩展性限制。选型上,关键业务强一致单机 Neo4j 适合,超大规模与高可用分布式选 Nebula 等。

核心是"单机集中式事务 vs 分布式跨节点事务"的权衡。回答应说明 Neo4j 的完整 ACID 与低延迟、Nebula 的分布式一致性与扩展性,以及分布式事务的协调成本。体现对图数据库在"一致性、扩展性、延迟"间取舍的理解。

#
★★

12. 属性图(Cypher/nGQL)与 RDF/SPARQL 的建模差异与选型

属性图(Cypher/nGQL)与 RDF/SPARQL 在建模上有什么差异?如何选型?

  • 属性图模型
  • RDF/SPARQL 模型
  • 建模差异与选型依据

属性图(Property Graph)以节点、边和属性为基本元素,节点与边可带任意属性与标签,建模直观、灵活,适合应用系统与业务图(如社交、风控、推荐),查询语言为 Cypher/nGQL。RDF(Resource Description Framework)以三元组(主语-谓语-宾语)表示知识,是面向语义网与知识表示的标准,强调全局标识符(URI)与语义推理,查询语言为 SPARQL,数据可跨域互操作与本体推理。建模差异:属性图以"实体+关系+属性"为重心,RDF 以"三元组+本体+推理"为重心;属性图侧重图遍历与关联分析,RDF 侧重语义互操作与推理。选型依据:面向业务应用的关系查询与遍历选属性图(Cypher/nGQL),面向语义网、知识图谱与本体系推理选 RDF/SPARQL,需要跨机构数据共享与标准语义时优先 RDF。

核心是"业务图 vs 语义网"两种建模范式。回答应说明属性图的直观灵活与 RDF 的标准语义与本体重心,并给出按应用目标(业务遍历 vs 语义推理)的选型依据。体现对两种图数据模型定位差异的理解。

#
★★

13. 图数据库的索引体系(标签索引、属性索引、全文与空间索引)分别加速什么操作?索引选择如何影响遍历起点?

图数据库的索引体系(标签索引、属性索引、全文与空间索引)分别加速什么操作?索引选择如何影响遍历起点?

  • 各类索引的作用
  • 索引在查询中的加速点
  • 索引选择对遍历起点的影响

图数据库的索引体系包括:标签索引(label index)加速按标签定位节点集合,如查找所有 Person 节点;属性索引(property index)加速按属性值过滤与定位起点,如 WHERE n.name = 'x',是遍历起点选择的关键;全文索引(full-text index)加速对文本属性的关键词检索,如按名称模糊搜索;空间索引(spatial index)加速按地理位置查询,如查找附近节点。索引选择直接影响遍历起点:优化器倾向选择使用标签+属性索引、能最小化候选集(选择性最高)的节点作为遍历起点,从而减少后续扩展的搜索空间。合理的索引策略(为常用过滤属性建索引、标签与属性组合)能显著降低遍历起点成本与整体查询延迟。

核心是"索引加速定位起点与过滤"。回答应逐类说明索引加速的操作,并强调索引的选择性决定遍历起点——起点应是候选集最小、由索引精确定位的节点。体现对"索引 → 起点选择 → 遍历规模"链条的理解。

#

14. 图数据库的应用场景,社交网络、知识图谱、欺诈检测、推荐系统的工程边界与选型?

图数据库在社交网络、知识图谱、欺诈检测、推荐系统等场景的应用边界与选型如何?

  • 各场景的图需求
  • 图数据库的应用边界
  • 选型考量

社交网络依赖图数据库做多跳关系查询、好友推荐、社区发现与影响力分析,图遍历表达"朋友的朋友"等关系;知识图谱用图数据库存储实体与关系,支持实体消歧、语义查询与推理,适合 RDF 或属性图;欺诈检测用图数据库发现账户之间的关联环、可疑资金路径与异常子图,通过多跳遍历与图算法识别欺诈模式;推荐系统用图做基于关系的推荐(如"购买过该商品的人还买了")与图算法(如 PageRank 做权威推荐)。工程边界:图数据库擅长关系密集型、多跳遍历的分析,但单图大数据量、复杂事务或需要强关系型 SQL 能力的场景,需结合关系库与图计算引擎;图数据库常与关系库、搜索、消息队列等混用,形成组合架构。选型考量:场景是关系查询/遍历为主可选图数据库,数据量巨大且需分布式扩展选分布式图库(Nebula/JanusGraph),需要标准语义推理选 RDF/知识图谱,需海量磁盘扫描与 OLAP 分析则配合图计算引擎。

回答应说明各场景的"图需求"(多跳、社区、路径、推荐)与图数据库的适用边界(关系密集型遍历),并指出图库常与关系库、图计算引擎组合使用。体现对"场景驱动选型 + 组合架构"的理解。

#

15. 图数据库与关系型数据库的混合使用,图查询嵌入 SQL(SQL/PGQ, ISO 39075)的标准化进展?

图数据库与关系型数据库如何混合使用?图查询嵌入 SQL(SQL/PGQ、ISO 39075)的标准化进展如何?

  • 图与关系库的混合使用模式
  • SQL/PGQ 的概念
  • ISO 39075 标准化进展

图数据库与关系库的混合使用常见于:关系库存储事务与事实数据,图库承载关系分析与遍历,二者通过数据同步或联邦查询协同;或把图数据建模为关系表(节点表+边表)用递归 CTE 实现有限的多跳查询。图查询嵌入 SQL 的标准化是 SQL/PGQ(SQL Property Graph Queries),它是 SQL 标准(ISO/IEC 9075-16)的一部分,与 GQL(ISO/IEC 39075)共同构成图的国际标准,允许在标准 SQL 中嵌入图模式匹配(MATCH 在 SQL 中)与路径查询,使关系库能直接表达图查询。进展:SQL/PGQ 已进入 ISO 标准制定,主流数据库(如 Oracle、PostgreSQL)开始实验支持图模式匹配,目标是把图查询能力引入 SQL 生态,使关系库与图库查询统一。其意义是降低图查询门槛,让已有 SQL 生态直接受益于图遍历能力。

核心是"SQL 与图查询融合"的标准化方向。回答应说明混合使用模式(关系存事实、图做分析、递归 CTE 辅助),并介绍 SQL/PGQ 与 ISO 39075 的进展,体现"图查询标准化进入 SQL 生态"的趋势理解。

#

16. GQL 标准与 SQL/PGQ,ISO 39075 的路径模式查询与现有 Cypher/nGQL 的表达力差异?

GQL 标准与 SQL/PGQ 中,ISO 39075 的路径模式查询与现有 Cypher/nGQL 的表达力有什么差异?

  • GQL 与 SQL/PGQ 的路径模式查询
  • 与 Cypher/nGQL 的表达力差异
  • 标准化带来的统一性

GQL(ISO/IEC 39075)与 SQL/PGQ 共同构成图查询的国际标准,其中路径模式查询(path pattern query)是核心能力:用 MATCH 表达路径模式、支持可变长度路径、路径变量与路径属性,可对路径做过滤与聚合。与 Cypher/nGQL 相比,GQL/SQL/PGQ 的表达力在"对齐"既有图查询能力的基础上,明确了路径模式、路径变量与图模式的标准语义,统一了各厂商方言(Cypher、nGQL、Gremlin)中不一致的细节,如可变长度路径的语法、路径去重与投影语义。差异在于:Cypher/nGQL 是厂商生态语言,语法与语义绑定具体实现,表达力强但存在方言差异;GQL/SQL/PGQ 是标准,目标是跨数据库可移植、与 SQL 融合,路径模式表达趋于统一规范,降低迁移与学习成本。练习强调二者在路径模式与可移植性上的差异,而非简单功能多寡。

核心是"标准化 vs 厂商方言"。回答应说明 ISO 39075 的路径模式查询统一了可变长度路径等语义,与 Cypher/nGQL 的区别在于跨库可移植性与 SQL 融合,而非功能数量。体现对图查询标准演进的理解。

#

17. 图嵌入与图算法在推荐/风控中的落地,与图查询是互补还是替代关系?

图嵌入与图算法在推荐/风控中的落地,与图查询是互补还是替代关系?

  • 图算法与图查询的定位
  • 图嵌入的概念
  • 两者在推荐/风控中的互补关系

图查询(如 Cypher 遍历)用于按需回答结构化问题(如某个用户的二度好友、两点间路径),是确定性、可解释的查询;图算法(如 PageRank、社区检测)用于整体分析(如影响力排序、社区划分);图嵌入(Graph Embedding,如 Node2Vec、GraphSAGE)把节点、边映射为低维向量,用于机器学习模型(如推荐、风控中的相似度计算与分类)。在推荐/风控中,三者是互补而非替代:图查询提供事实与可解释的关联证据(如风控中解释"该账户为何可疑"),图算法提供全局结构洞察(如社区、影响力),图嵌入把图结构转化为特征供 ML 模型打分。三者常结合使用:图嵌入产出特征 → 图算法/查询提供证据与验证 → ML 模型决策。替代关系只有在特定场景下成立(如纯向量检索替代多跳查询),但整体上互补性主导。

核心是"查询、算法、嵌入三者的分工互补"。回答应说明图查询用于可解释的事实检索、图算法用于结构分析、图嵌入用于特征化,强调在推荐/风控中组合使用、互为补充。体现对"图分析能力栈"整体架构的理解。

#

18. 图数据库 vs 关系库递归 CTE,多跳性能对比?

图数据库与关系库递归 CTE 在多跳查询性能上有什么对比?

  • 递归 CTE 的实现机制
  • 两者多跳查询的性能差异
  • 性能差异的根源

关系库的递归 CTE(RECURSIVE CTE)用递归查询表达多跳遍历,每跳通过 SQL 递归合并结果集,本质是"逐跳滚动查询",通过 JOIN 重建邻接关系,每跳都会产生新的结果集并扫描/过滤,深路径时递归次数增多、中间结果集膨胀,性能随跳数增长明显下降。图数据库用邻接指针(index-free adjacency)直接访问邻居,多跳遍历是内存指针跳转,每跳成本低、与图大小无关。性能对比:浅跳(1-2 跳)时两者差异不大,递归 CTE 可用;深跳(3 跳以上)与高扇出时,图数据库优势显著,因为避免了递归 CTE 的重复 JOIN、中间结果集膨胀与索引扫描。此外,递归 CTE 在关系库上通常无法利用图遍历的剪枝与邻接访问优化,且表达式复杂、可读性差。因此,多跳密集型查询(如社交/风控)应优先图数据库,偶发浅跳可用递归 CTE。

核心是"逐跳 JOIN 重建邻接 vs 指针直连邻居"。回答应说明递归 CTE 的"滚动 JOIN + 结果集膨胀"机制与图遍历的"邻接指针跳转"机制,指出深跳与高扇出时图库优势显著。体现代价随跳数增长的两条不同曲线。

#

19. 图数据库的扩展性,分布式图(Nebula/JanusGraph)?

图数据库的扩展性如何?分布式图(Nebula/JanusGraph)如何实现水平扩展?

  • 图数据库扩展性的挑战
  • Nebula 分布式架构
  • JanusGraph 分布式架构

图数据库的扩展性挑战在于图的随机访问特性:多跳遍历会跨节点访问邻居,若图分布到多个节点,遍历可能产生大量跨节点通信,导致分布式图遍历性能下降。分布式图通过分片(partition)把图水平分布到多节点:NebulaGraph 把图按点/边的分区散列分布到多个存储节点,配合 Raft 多副本保证一致性与高可用,查询时由查询引擎路由到相关分区,支持存储与计算水平扩展;JanusGraph 把图存储在大规模存储后端(如 Cassandra、HBase、Bigtable),利用底层存储的分布式特性实现图数据的水平扩展,用索引后端(如 Elasticsearch)加速查找,属"存储层分布式"架构。两者的共性:图数据分片存储、支持多节点扩展、关注跨分区遍历的通信优化。扩展性的权衡是:横向扩展带来容量与吞吐提升,但跨分区遍历的通信开销与一致性问题增加,需结合图分片策略(如按关联簇分片)缓解。

核心是"分片存储 + 跨分区遍历的权衡"。回答应说明分布式图的分片机制(Nebula 自建分布式、JanusGraph 依赖存储后端),以及扩展带来的通信开销与一致性挑战。体现对"分布式图扩展的收益与代价"的理解。

#

20. LDBC SNB 基准如何衡量图数据库性能?与关系库递归 CTE 的对比实验设计有哪些要点?

LDBC SNB 基准如何衡量图数据库性能?与关系库递归 CTE 的对比实验设计有哪些要点?

  • LDBC SNB 基准的构成
  • 基准衡量指标
  • 对比实验设计要点

LDBC SNB(Social Network Benchmark)是图数据库行业标准基准,以模拟社交网络为数据模型(人员、帖子、好友关系等),提供可扩展的数据生成器(不同规模因子)与三类查询负载:交互式查询(短事务型、多跳遍历)、商务智能查询(复杂聚合分析)、算法查询(图算法如 PageRank、社区检测),用以衡量图数据库的吞吐、延迟、扩展性与存储成本。与关系库递归 CTE 的对比实验设计要点:一是数据规模与分布一致,用相同规模因子生成相同图数据,保证基数可比;二是查询负载一致,把同一批多跳查询分别用图数据库与递归 CTE 实现,语义等价;三是控制变量,同一硬件、同一数据、同批次请求,分别测吞吐(QPS)与延迟(P50/P95/P99);四是考察跳数与扇出变化,分别测试 1-2 跳浅路径与 3+ 跳深路径、高扇出节点,对比两者性能差异的拐点;五是记录资源占用(内存、CPU)并在多种规模下测扩展性,避免单一场景以偏概全。

核心是"基准的负载构成 + 公平可比的实验设计"。回答应说明 LDBC SNB 的三类负载与衡量指标,并强调对比实验要保证数据、查询、硬件一致,并覆盖跳数与扇出的变化,才能得出公平结论。体现对基准方法论与实验科学的理解。