当前位置: 首页 > article >正文

图数据库 TuGraph 基本操作 作业一

一、基础知识介绍(一)图数据库图数据库以顶点 (Vertex / Node)、边 (Edge / Relationship) 与属性 (Property) 三种元素表达事物及其关联关系。顶点对应实体, 边对应实体之间的关系, 属性以键值对形式附着在顶点或边上。相较关系数据库, 图数据库把 关系 提升为存储层的一等公民, 对多对多、深度关联的查询尤为高效。在工业界, 属性图模型 (Property Graph Model) 已成为 Neo4j、TuGraph、NebulaGraph 等图数据库共同遵循的事实标准。(二) TuGraphTuGraph 由蚂蚁集团与清华大学联合研发, 提供高性能 OLTP / OLAP 双引擎、内置图算法库以及兼容 OpenCypher 的查询接口, 在国际图数据库基准测试中多次取得性能榜首, 是国产图数据库的代表性产品之一。其核心服务程序 lgraph_server 在单节点模式下通过 7070 端口对外提供REST API 与 Web 管理界面, 通过 7687 端口提供 Bolt 协议供 Neo4j 兼容客户端连接, 通过 9090 端口提供 RPC 服务与 Prometheus 监控接入。TuGraph 同时配套了离线导入工具 lgraph_import、Web 端可视化的 DB Browser 以及完整的 Cypher 增删改查与算法存储过程体系。(三) Cypher查询语言Cypher 是一种声明式图查询语言, 关键字不区分大小写, 以模式匹配为核心表达力。节点写作 (变量名: 标签 {属性}), 关系写作 -[变量名: 关系类型]-, 路径写作 (a)-[r]-(b)。查询的基本范式为 MATCH 加 RETURN, 类比关系数据库的 SELECT。完整的增删改查能力分别由 CREATE 创建顶点与关系、SET 更新属性、DELETE 与 REMOVE 删除元素、MATCH 加 WHERE 检索四类语句承担, 复杂查询则通过路径模式 (a)-[*..n]-(b)、WITH 中间结果传递、聚合函数 count / sum / avg 与排序限量 ORDER BY、LIMIT 组合实现。TuGraph 在标准 Cypher 之外, 额外提供algo.shortestPath、algo.pagerank、algo.jaccard 等存储过程, 通过 CALL 语句调用。(四)数据集准备本次作业使用 Elliptic Bitcoin Transactions 数据集, 该数据集由比特币交易历史脱敏抽样而成, 广泛用于区块链反洗钱与可疑交易识别研究。数据集由两个 CSV 文件构成。elliptic_txs_classes.csv 共 203,769 行 (不含表头), 两列, 第一列 txId 为交易编号 (整数), 第二列class 为类别标签, 取值为 1 (非法交易, 共 4,545 条)、2 (合法交易, 共 42,019 条) 或 unknown (未标注, 共 157,205 条)。elliptic_txs_edgelist.csv 共 234,355 行 (不含表头), 两列, 第一列 txId1 为引用方交易编号, 第二列 txId2 为被引用方交易编号。两个文件经图建模后, 共同构成一张203,769 顶点、234,355 边的稀疏有向图。二、启动TuGraph平台(一)运行环境本次作业在 Windows 10 家庭版 (Build 19045, 64 位) 上完成。宿主机预先安装 Docker Desktop 4.73.0 (WSL2 后端), 启动后左下角显示 Engine running。TuGraph 选用官方运行时镜像tugraph/tugraph-runtime-ubuntu18.04, 版本号 4.3.1。宿主机为 12 核 CPU、约 7.5 GiB 可用内存。Web 端使用 Microsoft Edge 浏览器访问。(二)启动步骤启动 TuGraph 共需四步, 全部命令在 PowerShell 中依次执行。第一步, 拉取 TuGraph 运行时镜像。docker pull tugraph/tugraph-runtime-ubuntu18.04:4.3.1第二步, 为数据库文件目录与日志目录分别创建 Docker 命名卷, 实现数据持久化, 避免容器删除导致数据丢失。docker volume create tugraph-datadocker volume create tugraph-log第三步, 以后台模式启动 TuGraph 服务容器, 同时将容器内的 7070 (HTTP / Web)、7687 (Bolt 协议)、9090 (RPC) 三个端口映射至宿主机。docker run -d --name tugraph ^-p 7070:7070 -p 7687:7687 -p 9090:9090 ^-v tugraph-data:/var/lib/lgraph/data ^-v tugraph-log:/var/log/lgraph_log ^--restart unless-stopped ^tugraph/tugraph-runtime-ubuntu18.04:4.3.1 ^lgraph_server -c /usr/local/etc/lgraph.json -d run其中 -d 表示后台运行容器; -p 参数完成端口映射; -v 参数挂载持久化数据卷; --restart unless-stopped 保证宿主机重启后容器自动恢复。末尾的 lgraph_server 命令以前台模式启动 TuGraph 服务进程。第四步, 打开浏览器, 在地址栏输入 http://localhost:7070, 进入 TuGraph DB Browser 登录界面。图 1 TuGraph DB Browser 登录界面(三)系统登录使用 TuGraph 默认账号登录, 用户名 admin, 密码 73TuGraph。首次登录时, 系统强制跳转至修改密码界面, 要求输入原密码并将其修改为长度不少于八位且与默认密码不同的新密码。完成修改后再次以新密码登录, 系统跳转至 Cypher 工作台 (Workbench/Cypher) 主界面, 左侧导航栏依次显示 查询、建模、导入、插件、帮助 五个功能模块, 右上角显示当前账号 admin 与默认子图default。至此, TuGraph 平台启动并登录成功。图 2 系统登录成功, 进入 Cypher 工作台主界面三、数据集图建模与数据导入(一)图建模设计依据数据集两个 CSV 文件的字段结构, 设计如下属性图模型。顶点标签 Transaction 表示一笔比特币交易, 主键为 txId, 数据类型 INT64; 附带 class 属性, 数据类型 STRING, 用于存储类别标签。边标签 Refers 表示一笔交易引用另一笔交易的关系, 起止顶点的标签约束均为 Transaction。该模型在 TuGraph 中表达为以下 JSON 格式的导入配置, 文件命名为 import.json, 与两个 CSV 文件置于同一目录下。{schema: [{ label: Transaction, type: VERTEX,primary: txId,properties: [{ name: txId, type: INT64 },{ name: class, type: STRING }]},{ label: Refers, type: EDGE,constraints: [ [Transaction, Transaction] ]}],files: [{ path: elliptic_txs_classes.csv, header: 1, format: CSV,label: Transaction, columns: [txId, class] },{ path: elliptic_txs_edgelist.csv, header: 1, format: CSV,label: Refers, SRC_ID: Transaction, DST_ID: Transaction,columns: [SRC_ID, DST_ID] }]}schema 块声明全部顶点标签与边标签及其属性结构, files 块描述每个 CSV 文件如何映射到对应的标签, 其中 header 字段为 1 表示首行是表头需要跳过, columns 字段以位置顺序声明列对应的属性名。对于边文件, SRC_ID 与 DST_ID 字段指定起止顶点所属的标签, 配合 columns 中的SRC_ID 与 DST_ID 占位符即可建立顶点之间的关联。图 3 TuGraph 建模界面, 左侧顶点标签 Transaction 已创建, 右侧为图谱可视化(二)数据导入步骤TuGraph 提供命令行工具 lgraph_import 用于离线批量导入数据。导入采用临时容器方式执行, 将本机存放 CSV 与 import.json 的目录映射进容器内的 /import, 同时挂载预先创建的持久化数据卷, 命令执行完毕后容器自动销毁, 数据保留在数据卷中供 TuGraph 服务容器使用。docker run --rm ^-v tugraph-data:/var/lib/lgraph/data ^-v D:\path\to\tugraph-deploy\import:/import ^tugraph/tugraph-runtime-ubuntu18.04:4.3.1 ^bash -c cd /import lgraph_import -c import.json ^-d /var/lib/lgraph/data --overwrite 1 --v3 1lgraph_import 读取 import.json 声明的 schema, 按顺序解析顶点 CSV 与边 CSV, 将顶点数据写入 LMDB 主键索引, 将边数据写入 RocksDB SST 文件。在本机环境下, 全量导入用时约 1.7 秒。导入完成后启动 TuGraph 服务容器, 浏览器登录 DB Browser, 在 Cypher 工作台中分别执行以下两条 Cypher 语句, 对顶点数与边数进行核对。MATCH (n:Transaction) RETURN count(n) AS num_vertices图 4 顶点数核对结果: Transaction 顶点共 203,769 个MATCH ()-[r:Refers]-() RETURN count(r) AS num_edges图 5 边数核对结果: Refers 边共 234,355 条进一步执行下列语句, 调用 TuGraph 内置过程 db.vertexLabels() 与 db.edgeLabels() 列出当前子图全部顶点与边标签, 用以核对 schema 是否按预期建立。CALL db.vertexLabels() YIELD label RETURN 顶点 AS type, labelUNION ALLCALL db.edgeLabels() YIELD label RETURN 边 AS type, label图 6 Schema 标签清单, 顶点标签 Transaction, 边标签 Refers上述四项核对结果均与数据集公开统计完全一致, 表明 Elliptic 数据集已成功导入 TuGraph 默认子图 default。四、Cypher查询示例Cypher 语言完整的增删改查范式由 CREATE 创建顶点与关系、SET 更新属性、DELETE 与REMOVE 删除元素、MATCH 加 WHERE 检索四类语句构成, 其中 MATCH 是最常用且应用最广的查询语句。本节针对已导入的 Elliptic 数据集, 自行设计基础查询与复杂查询各一例, 分别展示标签过滤与聚合统计的基础用法, 以及内置最短路径算法的高级用法。(一)基础查询:按交易类别分组统计业务问题: Elliptic 数据集中三种类别 (非法、合法、未标注) 的交易数量各有多少, 哪一类占比最高。MATCH (n:Transaction)RETURN n.class AS class, count(*) AS cntORDER BY cnt DESC语句要点: 该查询以 MATCH 子句匹配全部 Transaction 顶点, 通过 n.class 属性触发隐式分组(Cypher 中没有显式 GROUP BY, 由聚合函数 count(*) 触发隐式分组), 最后以 cnt 字段降序排列。图 7 基础查询执行结果结果分析: 执行结果共三行, 未标注 (unknown) 157,205 条占 77.15 %, 合法 (2) 42,019 条占20.62 %, 非法 (1) 4,545 条占 2.23 %。数据集存在显著的类别不平衡, 非法与合法的样本比例约为 1 比 9.2, 未标注样本占绝对多数。该现象反映出真实场景下带标签反洗钱样本极为稀缺, 也是Elliptic 数据集被反复引用为半监督学习基准的根本原因。(二)复杂查询:两交易顶点之间的最短引用路径业务问题: 给定 txId 3181 与 txId 288734134 两笔具体交易, 在 Refers 引用关系所构成的有向图上, 它们之间是否存在连通路径? 最短路径包含几跳? 路径上经过哪些中间顶点和边。MATCH (a:Transaction {txId: 3181}),(b:Transaction {txId: 288734134})CALL algo.shortestPath(a, b, {}) YIELD nodeCount, totalCost, pathRETURN nodeCount, totalCost, path语句要点: TuGraph 的最短路径算法以内置存储过程 algo.shortestPath 形式提供, 调用范式为先 MATCH 后 CALL。MATCH 子句先把两个端点绑定为 NODE 变量 a 与 b, 再以 CALL ... YIELD ... 形式调用过程, 接收 nodeCount (路径顶点数)、totalCost (路径累计代价, 无权图等价于跳数) 与 path (顶点与边交错的完整路径) 三项返回字段; 过程的第三个参数 {} 为空配置, 表示使用默认的双向广度优先搜索。该写法与 Neo4j 内联式的 MATCH p shortestPath((a)-[*]-(b)) 存在差异, 跨平台迁移时需要按 TuGraph 规范改写。图 8 最短路径查询执行结果结果分析: 查询返回 nodeCount 4, totalCost 3, 表明两个端点之间存在一条长度为 3 跳的最短引用路径, 路径上共经过 4 个顶点与 3 条边。path 字段以 V[内部顶点 ID] 与 E[内部边 ID] 交错形式给出完整路径序列, 顶点的业务可读 txId 主键可通过额外 MATCH 查询展开, 其中内部顶点ID 与导入顺序绑定, 同一份业务数据在不同次导入后会得到不同的 V[...] 序号, 而 txId 始终稳定。3 跳的路径长度与 Elliptic 数据集的稀疏图特征相吻合 (顶点数 203,769, 边数 234,355, 平均出度仅 1.15), 稀疏图中两端可达的顶点对之间, 路径长度普遍较短。

相关文章:

图数据库 TuGraph 基本操作 作业一

一、基础知识介绍(一) 图数据库图数据库以顶点 (Vertex / Node)、边 (Edge / Relationship) 与属性 (Property) 三种元素表达事物及其关联关系。顶点对应实体, 边对应实体之间的关系, 属性以键值对形式附着在顶点或边上。相较关系数据库, 图数据库把 "关系" 提升为存…...

深入解析Solana SPL Token:原理、生态与未来布局

深入解析Solana SPL Token:原理、生态与未来布局 引言 在追求高性能区块链的浪潮中,Solana以其惊人的交易速度和低廉的费用脱颖而出。而这一切,离不开其核心资产标准——SPL Token的支撑。无论是引爆市场的STEPN,还是承载万亿美…...

汽车供应链客户定位方法拆解:复杂B2B能力如何被客户看懂

从B2B表达方法看,汽车供应链客户定位可以理解为一个“客户判断结构化”的问题。企业不是简单输出自我介绍,而是要把技术能力、项目经验、质量体系、协同机制与证据材料,转化为客户不同角色都能使用的判断信息。很多汽车供应商在做客户定位时&…...

手把手教你用STC89C52和DS1302做一个带按键调节的电子时钟(附完整代码)

从零打造可调式电子时钟:STC89C52与DS1302实战指南 在创客和电子爱好者的世界里,能够亲手制作一个功能完整的电子时钟,无疑是检验单片机编程和硬件连接能力的绝佳项目。本文将带你使用STC89C52单片机和DS1302实时时钟芯片,配合LCD…...

模型替换易,工作流锁定难!AI 锁定效应转移,企业决策何去何从?

模型替换易,工作流锁定难模型替换正变得越来越容易,但围绕模型的操作、集成和治理机制却难以更换。近日,普华永道(PwC)宣布为 3 万名员工提供有关 Anthropic 公司 Claude 模型的培训和认证,并围绕该模型为银…...

Vivado IP核避坑指南:Distributed Memory Generator里COE文件初始化与复位信号的那些‘坑’

Vivado分布式存储器IP核实战避坑:COE初始化与复位信号的深度解析 在FPGA开发中,分布式存储器(Distributed Memory Generator)因其灵活性和低延迟特性,常被用于实现小型查找表、寄存器堆等场景。然而,当涉及…...

3分钟搞定Windows右键菜单:ContextMenuManager终极优化指南

3分钟搞定Windows右键菜单:ContextMenuManager终极优化指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经在Windows右键菜单中迷失方向&…...

【GEO实战密码】GEO 的真正护城河,是 RAG

《GEO实战密码》节选:GEO 的真正护城河,是 RAG企业做生成式搜索优化,别只盯着外部曝光。AI 愿不愿意引用你,首先取决于你的内容值不值得被信任。最近和不少企业聊 GEO,也就是生成式搜索优化,发现一个非常典…...

智慧树自动刷课插件终极指南:5分钟快速上手,告别手动刷课烦恼

智慧树自动刷课插件终极指南:5分钟快速上手,告别手动刷课烦恼 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视频操作而…...

数字体育可视化 | 智慧赛事与场馆全域协同管控

在发展新质生产力的时代背景下,我国智慧体育行业迎来全新发展机遇与时代使命,进入高速蓬勃发展的新阶段。作为智慧体育生态的核心单元,数字体育通过新一代信息技术与体育产业的深度融合,覆盖群众体育、竞技体育、赛事运营、体育产…...

DH1766电源短路测试避坑指南:为什么你的保险丝熔断时间和想象的不一样?

DH1766电源短路测试中的保险丝熔断现象深度解析 在电子工程实验室中,可编程电源的短路测试是验证电路保护器件性能的常规操作。然而,当使用DH1766这类高精度电源进行测试时,许多工程师都会遇到一个令人困惑的现象:保险丝的实际熔断…...

【实操经验】拒答能力不达标,大模型备案怎么过

在生成式 AI 监管趋严的 2026 年,拒答率≥95% 是大模型备案的硬性门槛(GB/T 45644-2025)。不少自研或二次开发模型因安全对齐不足、拒答逻辑薄弱,测试时频繁 “翻车”—— 敏感问题答非所问、违法指令直接执行、多轮诱导轻易妥协&…...

【工业相机】大恒万兆网相机原生RS232串口调试|无需转换板、直连通信、最简接线教程(实测)

【工业相机】大恒万兆网相机原生RS232串口调试|无需转换板、直连通信、最简接线教程(实测)📑 前言一、硬件说明二、最简接线方式(重点)2.1 接线逻辑2.2 实物接线(直接照抄)2.3 通俗口…...

Python报错Resource averaged_perceptron_tagger_eng not found

用python标注英文单词词形时,报错: import nltk nltk.download(‘averaged_perceptron_tagger_eng’) Resource averaged_perceptron_tagger_eng not found. 估计是因为网络问题,遂改用离线安装的方式。 第一步:下载averaged_perc…...

为什么你的Perplexity返回过时新闻?环境时区、缓存策略与源权重配置三重校准指南

更多请点击: https://intelliparadigm.com 第一章:为什么你的Perplexity返回过时新闻?环境时区、缓存策略与源权重配置三重校准指南 Perplexity 的实时新闻响应延迟,常被误认为模型能力缺陷,实则源于底层检索链路中三…...

Seraphine:如何通过智能战绩查询和BP辅助提升英雄联盟竞技体验

Seraphine:如何通过智能战绩查询和BP辅助提升英雄联盟竞技体验 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 想象一下这样的场景:你刚刚进入英雄联盟的排位赛BP阶段,屏幕…...

tars 环境安装及开发部署

参考:https://tarscloud.github.io/TarsDocs/installation/source-windows.html 安装环境 安装nodejs、vs(已安装了vs2022)、cmake(已安装,版本是3.30.0)、git(已安装,版本是2.45.2)、Mysql 下载并安装nodejs https://nodejs.org/en/ 版本是22.15.0 添加到环…...

2026年阿里云OpenClaw/Hermes Agent配置Token Plan新手友好流程

2026年阿里云OpenClaw/Hermes Agent配置Token Plan新手友好流程。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

Google I/O 2026发布Gemini 3.5 Flash:性能超越3.1 Pro,输出速度快4倍!

Google在I/O 2026上正式发布Gemini 3.5 Flash,这是其最新一代结合前沿智能与行动能力的模型系列,在多项基准测试中表现出色,输出token速度更是其他前沿模型的4倍。 性能卓越 3.5 Flash定位为迄今最强的Agentic和编程模型,在Termin…...

2026年京东云OpenClaw/Hermes Agent配置Token Plan详细方法汇总

2026年京东云OpenClaw/Hermes Agent配置Token Plan详细方法汇总。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

手把手教你用树莓派4B搭建个人服务器(保姆级图文教程,含SSH与远程桌面配置)

树莓派4B打造高性能个人服务器的终极指南 在当今数字化时代,拥有一个24小时在线的个人服务器不再是企业或技术巨头的专利。树莓派4B以其惊人的性价比和低功耗特性,正在重新定义个人服务器的可能性。想象一下,你的书架上安静运行着一台耗电仅5…...

废物利用实战:把吃灰的中兴B860AV1.1-T刷成Armbian服务器,跑Docker、挂小雅

旧机顶盒重生计划:中兴B860AV1.1-T改造家庭服务器全指南 当家里闲置的机顶盒积满灰尘时,大多数人会选择丢弃或闲置。但你可能不知道,这些被淘汰的设备往往隐藏着惊人的潜力——只需简单改造,就能变身为一台7x24小时运行的低功耗家…...

C++虚函数从原理到实践:多态实现、设计模式与性能优化

1. 项目概述:从“魔法”到“利器”的认知转变虚函数,对于很多刚接触C的开发者来说,常常被看作一种“黑魔法”——知道它能实现多态,但具体怎么用、什么时候用、用不好会有什么坑,心里却没底。我见过不少项目&#xff0…...

智慧树自动刷课插件:5分钟告别手动点击,学习效率提升300%

智慧树自动刷课插件:5分钟告别手动点击,学习效率提升300% 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还记得那个深夜,你盯着智慧…...

graph-autofusion:CANN 的自动算子融合引擎

GE 的图优化 pass 里,算子融合是对推理性能影响最大的一个。但 GE 的融合规则是硬编码的——ConvBNReLU 写一条规则,BMMSoftmaxBMM 写一条规则。规则多了维护成本直线上升,总有覆盖不到的融合场景。 graph-autofusion 解决了这个问题。它是一…...

asnumpy:NPU 原生的 NumPy 体验

如果你用 Python 做 AI 开发,大概率写过类似这样的代码:用 NumPy 预处理数据,把结果转成 PyTorch Tensor,推理完再转回 NumPy 做后处理。这个过程里数据在 CPU 和 NPU 之间来回拷贝了一次,拖慢了整体速度。 CANN 的 a…...

HCCL 集合通信:昇腾集群的参数同步引擎

大模型训练的本质是将一个超大矩阵乘法拆到多张 NPU 上并行计算,每张卡算完自己的分片后把梯度合并。合并操作就是集合通信。 HCCL(Huawei Collective Communication Library)是 CANN 的集合通信库,对应 NVIDIA NCCL。它不参与模…...

Tenstorrent:基于RISC-V的异构计算架构如何挑战AI芯片市场

1. 项目概述:Tenstorrent的野心与Jim Keller的蓝图在芯片设计的江湖里,Jim Keller这个名字本身就代表着一种传奇。从AMD的K7、K8架构,到苹果A系列、M1芯片的奠基,再到特斯拉的自动驾驶芯片,他参与的每一个项目都深刻影…...

2026毕业季降AI工具排行榜,4款知网维普降AI软件横评

2026年毕业季过半,但还有大量同学的论文卡在AIGC检测这一关。知网在年初做了一次算法升级,维普、万方也在跟进,检测变得越来越严。论文一个字没改,去年12月查AI率18%能过,今年再查变成32%,很多同学就是栽在…...

Win11系统下JDK1.8(jdk-8u121)环境变量配置保姆级教程,附常见报错排查

Win11系统Java开发环境配置全指南:从安装到故障排查 1. 为什么Java环境配置如此重要? 对于每一位Java开发者来说,正确配置开发环境是迈入编程世界的第一步。想象一下,当你满怀期待地写下第一个"Hello World"程序&#x…...