跳转至

TuGraph 图数据库

TuGraph 是由蚂蚁集团与清华大学联合研发的高性能图数据库,本文档将介绍 TuGraph 的核心概念、架构设计和应用场景。

项目地址https://github.com/TuGraph-family/tugraph-db

什么是图

我们今天介绍的图,是图论中使用点和边表示的图(Graph),而非图像的图(Image)。

图的基本元素是,其中点表示事物或实体,边表示点之间的关联关系。

例如在企业图谱中,点可以表示公司、员工、项目,边则表示他们之间的关系:

  • 公司和员工之间的雇佣关系
  • 员工和员工之间的好友关系
  • 项目和员工之间的参与关系

除此之外,点和边上可以附加属性,比如员工的工号、雇佣的时间等,这样的图称为属性图

图有非常丰富的表达能力,可以用于金融、工业、医疗等各个领域。在实际应用中,图的规模越来越大,比如金融交易图,点边规模可能达到百亿级别。

TuGraph 简介

TuGraph 图数据库由蚂蚁集团与清华大学联合研发,构建了一套包含图存储图计算图学习图研发平台的完善图技术体系,拥有业界领先规模的图集群。

TuGraph 解决了图数据分析面临的大数据量、高吞吐率和低延迟等重大挑战,是蚂蚁集团金融风控能力的重要基础设施,显著提升了欺诈洗钱等金融风险的实时识别能力和审理分析效率。

核心特性

TuGraph 是支持大数据量、低延迟查找和快速图分析功能的高效图数据库,具有以下功能特征:

数据模型

  • 属性图模型
  • 实时增删查改
  • 多重图(点间允许多重边)
  • 多图(大图与多个子图)

事务处理

  • 完善的 ACID 事务处理
  • 隔离级别为可串行化(Serializable)
  • 点边索引

查询与计算

  • 混合事务和分析处理(HTAP)
  • 支持图查询、图分析、图学习
  • 主流图查询语言(OpenCypher、ISO GQL 等)
  • 支持 OLAP API,内置 30 多种图分析算法
  • 基于 C++/Python 的存储过程
  • 事务内并行 Traversal API

可视化工具

  • 提供图可视化工具
  • Browser 和 Explorer 网页端交互

性能与扩展性

  • 千万点/秒的高吞吐率
  • TB 级大容量
  • 高可用性支持
  • 高性能批量导入
  • 在线/离线备份恢复

TuGraph 产品架构

TuGraph 的整体架构自下而上包括以下几层:

1. 软硬件环境

TuGraph 核心由 C++ 开发,默认使用 GCC 8.4 编译器,遵循 C++17 标准。

CPU 兼容性:测试过基于 X86 和 ARM 的 CPU,包括 Intel、AMD、Kunpeng、Hygon、飞腾等

操作系统兼容性:支持多个操作系统,包括:

  • Ubuntu、CentOS、SUSE
  • 银河麒麟、中标麒麟、UOS

硬件要求

  • 不需要特殊硬件如 GPU
  • 对 RDMA、HBM 等硬件升级可以天然适配
  • 默认 KV 存储使用 LMDB,需要文件系统支持 POSIX 接口

2. 存储层

图数据模型

  • 支持属性图模型
  • 按照层次分为:子图、标签(点标签和边标签)、属性
  • 使用直观的多层树状模型

存储实现

  • 多图采用数据物理隔离,每个图对应一个 LMDB 实例
  • 图数据自适应映射到 KV 键值对,最大程度发挥读性能
  • KV 层实现多线程写,解决 LMDB 写性能较低的劣势
  • 主键索引和二级索引通过 B+ 树实现

3. 计算层

计算层分为三个引擎:

图事务引擎

  • 处理并发的图操作(单点查询、邻居查询、路径遍历)
  • 侧重 ACID 事务保证
  • 性能指标:QPS(每秒查询数量)

图分析引擎

  • 处理全图迭代的复杂分析任务
  • 单个任务并发利用所有硬件资源
  • 性能指标:任务完成总时长

图神经网络引擎

  • 全图迭代 + 机器学习框架
  • 集成 PyTorch、MXNet、TensorFlow 等
  • 可使用 GPU 等加速硬件

4. 客户端

SDK 支持

  • Java、Python、C++ 等多种语言
  • RPC 协议(基于 brpc,长连接,高性能)
  • REST 协议(宽泛兼容,易对接)

交互方式

  • 命令行工具(lgraph_cypher
  • Browser 和 Explorer 网页端
  • OGM(Object Graph Mapping)工具

5. 生态工具

TuGraph DataX

  • 支持 MySQL、Kafka、Hive 等多数据源导入
  • 使用 SparkSQL 进行数据清洗
  • 提供空库导入和增量导入模式

核心功能

查询语言

TuGraph 提供 Cypher 图查询语言,遵循 OpenCypher 标准:

  • 支持 Procedure 嵌入
  • 可插拔优化框架
  • 可扩展安全性检查框架

存储过程(Procedure)

从 3.5 版本开始,TuGraph 支持新的存储过程编程范式:

  • 定义标准的签名和结果
  • 支持 POG(Procedures on Graph Query Languages)编程
  • POG 库打破了查询语言和存储过程之间的界限
  • 扩展了查询语言的使用范围

数据导入导出

导入功能

  • 空库导入(离线导入):吞吐率极高
  • 增量导入:在线数据导入
  • 空库导入性能约为增量导入的 10 倍

导出功能

  • 命令行工具:lgraph_export
  • 支持格式:CSV、JSON
  • 基于快照保证数据一致性

备份恢复

备份类型

  • 主动/定时备份
  • 离线/在线备份
  • 全量/增量备份

恢复功能

  • 恢复到最新状态
  • 恢复到历史时间点
  • 保证数据库一致性

数据预热

TuGraph 是基于磁盘的图数据库,仅当访问数据时才加载到内存。通过事先进行数据预热,可以改善服务器刚开启后因频繁 IO 操作导致的性能问题。

高可用

TuGraph 采用 RAFT 协议的多机热备机制:

  • 实时多副本数据热备
  • 部分副本不可用时集群仍能正常服务
  • RPO 接近 0
  • 主从模式:主节点处理写请求,主从节点均可处理读请求
  • 写请求需同步到多于二分之一的节点才算完成

应用场景

金融领域

金融领域的实体主要涉及人、公司、账户、产品等,它们之间的关系包括交易关系、登录关系、股权关系、雇佣关系等。

场景 描述
贷款审核 通过分析申请人的关联关系、交易情况等辅助判断偿还能力和意愿
贷后管理 分析借款人交易情况,预警逾期风险
失联修复 通过社交和购物数据找出其他联系方式
担保环检测 检测环状、链式、家族式、交叉等特殊担保结构
信用卡团伙欺诈检测 通过社区发现算法检测疑似欺诈团伙
反洗钱 在交易和社交网络中识别洗钱行为和链路
车险反欺诈 分析被保人、案件地点和修理厂关系,识别骗保行为

工业领域

工业生产和制造过程中产生大量异构数据,包括设计文档、设备数据、仿真方案、实验结果等。

场景 描述
供应链管理 管理产品-部件-零件的多层次、多供应商复杂网络
文档管理 有机组织不同类型文档,方便查找相关信息
研发过程管理 管理测试流程、数据版本、算法版本等复杂关系网络
设备信息管理 表示设备间的供电、供料、空间等关系

智慧城市

智能化城市管理需要综合道路、管线等拓扑信息,电力、饮用水等供求信息,以及环境信息等异构数据。

场景 描述
智能交通 基于道路拓扑、容量和流量进行智能信号灯调度
智能排水 基于排水系统信息和雨量对排水系统进行调度
管线管理 全周期管理管线,包括故障排查、寿命评估等
人群疏散 综合多种交通方式和道路承载量,优化疏散方案

社会治理

社会治理包括公共安全、法律事务、舆论、网络安全等多方面。

场景 描述
犯罪团伙发现 通过图分析算法识别联系紧密的犯罪团伙
涉众案件调查 有效组织涉众案件的人员和要素,提供证据支持
违法网站甄别 基于 IP-域名网络建立可信度模型,判断网站合法性
法院卷宗管理 管理案件间的复杂关系,提高办案和查询效率

互联网

人-人关系的社交网络、人-商品的购买关系构成图,通过分析提供优质服务。

场景 描述
ID 映射 统一存储用户信息和关系,识别单人多号和多人一号
好友推荐 基于社交网络提供"好友的好友"、"共同好友"等推荐
商品推荐 找出兴趣爱好类似的用户,推荐类似商品
垃圾用户识别 基于网络信息精准识别垃圾用户

快速开始

部署方式

TuGraph 提供三种部署方式:

  1. 云部署:基于阿里云计算巢快速部署
  2. Docker 部署:使用预编译的 Docker 镜像
  3. 安装包部署:支持 CentOS、Ubuntu 等操作系统

最新版本

TuGraph 最新版本为 4.5.2,提供以下安装包和镜像:

  • CentOS 7/8 安装包(RPM)
  • Ubuntu 18.04 安装包(DEB)
  • CentOS 7 预安装镜像
  • CentOS 7/8、Ubuntu 18.04 编译镜像

学习资源

文档资源

视频教程

示例场景

  • 电影图谱
  • 流浪地球图谱
  • 三体图谱
  • 三国图谱

主要仓库

  • TuGraph-DB:https://github.com/TuGraph-family/tugraph-db
  • 可视化界面:https://github.com/TuGraph-family/tugraph-db-browser
  • 性能测试(Twitter 数据):https://github.com/TuGraph-family/gdbms-microbenchmark
  • 性能测试(LDBC-SNB):https://github.com/TuGraph-family/tugraph-snb-interactive
  • TuGraph-Analytics:https://github.com/TuGraph-family/tugraph-analytics

本文档基于 TuGraph 官方文档整理,更多详细信息请访问 TuGraph 官方文档