一、实验基础知识介绍

(一)图数据库 (Graph Database)

图数据库是一种非关系型数据库,以“图论”为基础,使用节点(Nodes/Vertices)、边(Edges)和属性(Properties)来表示和存储数据。与传统的关系型数据库相比,图数据库在处理复杂关系网络(如社交网络、资金流向、知识图谱)时具有更高的效率和更直观的数据模型。

  • TuGraph 图数据库平台

TuGraph 是由蚂蚁集团自主研发的高性能图数据库。它具备单机大数据量支持、高吞吐率以及灵活的 API 接口,能够同时支持高效的在线事务处理 (OLTP) 和在线分析处理 (OLAP)。本次实验使用 TuGraph 的 Web 可视化控制台进行图建模、数据导入及查询分析。

  • 数据集准备

本次实验使用了 Elliptic Data Set 的两个子集:

  1. Transactions Dataset (比特币交易集)

包含交易节点(txs_classes.csv)和交易流向边(txs_edgelist.csv)。节点包含交易 ID 和类别(非法、合法、未知),边表示比特币的资金流向。

  1. Actors Dataset (钱包地址集)

包含钱包地址节点(wallets_classes.csv)和转账关系边(AddrAddr_edgelist.csv)。用于分析不同类别钱包之间的资金交互网络。

二、启动 TuGraph 平台

启动步骤:

  1. 在阿里云计算巢服务台启动 TuGraph 服务。
  2. 在服务实例里申请免费试用。
  3. 在登录界面输入默认管理员账号admin和密码进行登录。
  4. 系统验证通过后,进入 TuGraph 欢迎界面,准备创建图项目。

三、Transactions Dataset图建模与数据导入

(一)图建模步骤

1. 创建图项目:新建一个名为作业11hzz的图项目。

2. 定义点模型 (Vertex):创建点类型Transactions。

3. 添加属性txId,类型设为INT32,并设为主键(Primary Key)。

4. 添加属性class,类型设为STRING,用于存储交易类别(如 "1", "2", "unknown")。

  1. 定义边模型 (Edge):创建边类型 Transfer 。
  2. 设置边的起点类型为 Transactions,终点类型为 Transactions,表示资金在不同交易间流动。

(二)数据导入步骤

1. 导入点数据:上传 elliptic_txs_classes.csv 文件。将文件中的 txId 列映射到点模型的 txId,class 列映射到 class。系统成功导入 203,769 条节点数据 。


2.导入边数据:上传 elliptic_txs_edgelist.csv 文件。将文件中的 txId1 映射为起点 (SRC_ID),txId2 映射为终点 (DST_ID)。系统成功导入 234,355 条边数据 。

四、Actors Dataset 图建模与数据导入

(一)图建模步骤

1. 定义点模型:创建点类型 actor 。

2. 属性 address:类型 STRING,作为主键(钱包地址)。

3. 属性 class:类型 INT32,用于存储钱包的分类标识。

  1. 定义边模型:创建边类型 edge 。
  2. 起点与终点均设置为 actor。

(二)数据导入步骤与特殊处理

1. 导入点数据:上传 wallets_classes.csv,成功导入 65,535 个钱包节点 。


  1. 导入边数据:上传 AddrAddr_edgelist.csv。

我的操作和建模是正确的,但我使用的这两个文件是不完全匹配的子集。边文件记录了大规模的转账活动,但我的点文件只包含了其中很小一部分参与者的地址。

五、Cypher 语句增删改查示例

(一)Transactions Dataset

1. 基础查询 (Basic Query)

目标:查询并展示 10 个被标记为“非法(Illicit)”的交易节点。 实际含义:在反洗钱场景中,快速定位已知的非法交易记录。

2. 创建与删除 (Create & Delete)

目标:模拟新增一笔可疑交易,核查后再将其删除。 实际含义:演示数据的动态维护,比如手动录入最新的黑名单交易。

显示创建了一个 ID 为 999999 的新节点

显示删除了 1 个节点,证明清理干净了

3. 复杂查询 (Complex Query)

目标:追踪非法资金的流向(查询从“非法交易”流出的 2 跳路径)。 实际含义:资金链路追踪。这是图数据库最强大的功能,用于发现洗钱路径——查找“脏钱”流向了哪些账户,甚至是否流入了合法账户。

(二)Actor dataset

1. 基础查询 (Basic Query)

目标:查询 10 个类别为 "2" 的钱包地址。 实际含义:快速检索特定类型的钱包账户(例如检索已知的交易所地址或高活跃地址)。

2. 创建与删除 (Create & Delete)

目标:创建一个用于测试的假钱包地址,验证无误后将其删除。 实际含义:模拟系统中新用户的注册与注销过程。

(1)创建节点

(2)删除节点

3. 复杂查询 (Complex Query)

目标:查询资金流向路径(查找从“类别3”钱包流向“类别2”钱包的交易路径)。 实际含义:跨类别资金追踪。查看未知身份的钱包(Class 3)是否在向已知实体(Class 2)频繁转账,这是分析资金来源的重要手段。

更多推荐