首页 / 资讯中心 / 文章详情

pgGraph表注册教程:auto_discover自动发现外键与add_edge手动建模完整指南

pgGraph表注册教程:auto_discover自动发现外键与add_edge手动建模完整指南 ★ FEATURED ARTICLE
【免费下载链接】pgGraphOpen-source graph database superpowers for your existing Postgres data.项目地址https://gitcode.com/gh_mirrors/pggr/pgGraph点击查看免费下载pgGraph是一款基于 PostgreSQL 的开源图数据库扩展它让普通的数据表直接获得图查询能力——在已有表上构建派生的图索引支持多跳遍历、最短路径、节点搜索等图查询。而表注册是把关系表变成图的第一步先告诉 pgGraph 哪些表是节点、哪些外键关系是边再执行graph.build()构建图索引。本教程面向新手带你掌握两种注册方式auto_discover自动发现外键一条命令搞定规范 schema和graph.add_edge手动建模精细控制边方向、权重、标签并教你检查注册结果、避坑重建。为什么需要表注册pgGraph 不要求你迁移数据你的表仍然是数据真相来源source of truth。但它必须知道三件事需要告知的信息对应概念注册函数哪些表是节点节点表graph.add_table()表间哪些关系是边边 / 关系graph.add_edge()哪些列可用于搜索与过滤属性 / 过滤列columns参数、graph.add_filter_column()注册元数据会保存在扩展的目录表catalog tables中然后graph.build()据此加载节点和边、生成图投影。完整注册流程可参考官方文档schema-registration.mdx。两种方式怎么选场景推荐方式说明规范的 schema主键 外键齐全graph.auto_discover()一条命令扫描 schema自动注册表和外键边并自动触发构建只涉及少数几张表graph.auto_discover_tables()限定在指定表集合内做发现先看看会注册出什么graph.preview_discover()/preview_discover_tables()只返回预览行不写入任何注册状态中间表、动态标签、权重、多租户graph.add_edge()手动建模精确控制方向、双向性、label_column、weight_column等语义官方建议快速上手和规范外键 schema 用自动发现关系表、动态标签、权重或自定义租户场景用手动注册。auto_discover 自动发现外键一条命令建图graph.auto_discover(schema_name)会扫描指定 schema 下的所有表和外键约束把发现的表注册为节点、把外键注册为边并在build : true默认时自动调用graph.build()构建图。SELECT * FROM graph.auto_discover(public);返回值是(item_type, item_name, details)三列逐条列出发现了哪些表、哪些外键边方便你核对。自动发现的两条聪明规则二元中间表一张组合主键表若恰好有两个单列外键、且都指向单列主键会被识别为一张关系表注册为 1 条边映射而不是两条外键边。例如follows(follower, followee)这类关注关系表。开放词表关系单代理主键 恰好两个外键 一个名为relationship_name、relationship_type、edge_type或rel_type的文本列会被注册为带动态标签的边映射该文本列自动成为label_column。先预览再落地对陌生 schema 建议先预览确认推断出的映射符合预期SELECT * FROM graph.preview_discover(public);如果两张表的关系不符合上述约定比如组合外键、引用的是备用唯一键、方向或语义需要调整就改用手动注册。限定表集合auto_discover_tables只把users和orders纳入图还能顺带指定租户列SELECT * FROM graph.auto_discover_tables( ARRAY[public.users::regclass, public.orders::regclass], tenant_column : account_id ); 自动发现只把有界的字符串类列注册为可搜索属性名字、编码、标签等短文本大文本、数字、JSON、时间戳列不会进入搜索面。需要更精确控制搜索列时请用手动注册。add_edge 手动建模两种边形态手动建模先注册节点表再注册边。以订单-客户为例-- 1. 注册节点表id_column 必须是主键或唯一 NOT NULL 列 SELECT graph.add_table( table_name : public.customers::regclass, id_column : id, columns : ARRAY[name, email] ); SELECT graph.add_table( table_name : public.orders::regclass, id_column : id );形态一FK 风格外键列即边源行的主键是起点外键列的值指向目标节点SELECT graph.add_edge( from_table : public.orders::regclass, from_column : customer_id, to_table : public.customers::regclass, to_column : id, label : placed_by, bidirectional : true );它建模的关系是orders.id --placed_by-- customers.id终点由orders.customer_id取值。bidirectional : true会额外存储一条可反向遍历的邻接记录让遍历可以从客户走向订单。形态二边表风格中间表即边当一张表本身存放关系行两端点都来自这张表时用同构的写法SELECT graph.add_edge( from_table : public.follows::regclass, from_column : follower, to_table : public.users::regclass, to_column : followee, label : follows, bidirectional : false );高级参数动态标签与权重label_column每行边可以自带标签空值/NULL 回退到静态label适合开放词表的关系系统weight_column注册数值型权重列后即可使用graph.weighted_shortest_path()加权最短路径NULL 权重按 1 处理复合主键节点用id_columns : ARRAY[...]重载注册。更多参数细节见 api-reference.mdx 和 sql-signatures.mdx。检查注册结果与构建图注册完成后用视图函数核对元数据再确认构建状态-- 检查已注册的节点表与边 SELECT * FROM graph.registered_tables(); SELECT * FROM graph.registered_edges(); -- 构建auto_discover 已自动构建手动注册后需自行调用 SELECT * FROM graph.build(); -- 验证节点与边的加载情况 SELECT node_count, edge_count, edge_types FROM graph.status();修改边定义如graph.rename_edge()、graph.alter_edge()或删除注册项graph.remove_edge()、graph.remove_table()后必须重新graph.build()查询才会使用新映射。注意删除一张表会连带删除相关过滤列和以它为端点的边。常见坑与最佳实践坑说明与对策id_column不合法必须是主键或唯一NOT NULL索引列否则注册前校验就会失败搜索查不到列搜索只考虑columns里注册过的列遍历过滤下推需另用graph.add_filter_column()自动发现猜错中间表双外键表实际是实体表、或引用了备用唯一键时改用graph.add_table()graph.add_edge()手动注册行级子图按行谓词裁剪的子图不受支持返回 SQLSTATE0A000需要时用 PostgreSQL 视图作为数据源或用auto_discover_tables做表级子集升级后图没更新升级扩展后需要重建每个图参见 release-notes.mdx一句话总结规范外键 schema 用graph.auto_discover(public)一步到位复杂建模场景用graph.add_table()graph.add_edge()手动注册再用graph.registered_tables()/graph.registered_edges()核对、graph.build()构建、graph.status()验收。延伸资料注册流程与全部参数docs/user_guide/schema-registration.mdx快速上手含 demo 表与自动发现示例docs/quickstart.mdx完整函数签名docs/user_guide/sql-signatures.mdx一键体验脚本scripts/quickstart.sh赞分享【免费下载链接】pgGraphOpen-source graph database superpowers for your existing Postgres data.项目地址https://gitcode.com/gh_mirrors/pggr/pgGraph点击查看免费下载相关推荐Joern与Ghidra集成二进制代码分析的强大组合Joern与Ghidra集成二进制代码分析的强大组合 Joern是一款基于代码属性图CPG的开源代码分析平台支持C/C、Java、JavaScrip应用安全开发工具mRemoteNG 外观设置注册表指南Appearance 选项键完整解析mRemoteNG 外观设置注册表指南Appearance 选项键完整解析 导读 本文围绕 mRemoteNG 的 外观Appearance选项页 对应的桌面应用网络如何禁用 Laravel Debugbar 自动发现手动注册 ServiceProvider 的完整指南如何禁用 Laravel Debugbar 自动发现手动注册 ServiceProvider 的完整指南 Laravel Debugbar 是一款强大的调试工开发工具后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站