TigerGraph Tutorials
  • TigerGraph 非官方教程
  • 环境准备
    • 安装
    • 使用数据库的几种方式
  • USECASES
    • PassiveDNS 溯源分析
      • 背景介绍
      • 创建 Schema
      • 数据加载
      • 交互式分析
      • 简单上手GSQL
      • 用GSQL写图遍历算法
    • 基于邀请关系的羊毛党识别
      • 背景介绍
      • 创建 Schema
      • 数据加载
      • 浅度分析
      • 深度分析
      • 结果分析
    • 基于共现关系的羊毛党识别
      • 背景介绍
      • 创建 Schema
      • ETL Pipeline
      • 数据加载
      • 近实时团伙检测
      • 结果分析
由 GitBook 提供支持
在本页
  • 定义 Vertex
  • 定义 Edge

这有帮助吗?

  1. USECASES
  2. PassiveDNS 溯源分析

创建 Schema

上一页背景介绍下一页数据加载

最后更新于5年前

这有帮助吗?

在这个案例中我们将通过 Graph Studio 来完成从 schema 创建、数据导入、查询分析等所有流程。

在使用图数据库进行图分析之前,我们需要创建好 Graph Schema,即定义好在我们需要解决的问题中,哪些信息作为图上的点 (Vertex),哪些信息作为图上的边 (Edge)。不同的 Schema 适合解决不同的需求,这点在之后的两个案例中,会有更深的体会。

打开浏览器,访问 TigerGraph 服务器的 14240 端口,选择 Design Schema 页面

定义 Vertex

当前的案例比较简单,我们把四类线索对应成图中的四类节点

线索

节点类型

域名

Domain

IP

IP

管理员

DomainAdmin

邮箱

Email

点击 + 键,添加节点:

在创建节点页面中,需要输入节点类型,给该类型节点选择一个方便可视化的颜色和图标。有需要的话,可以给该类型节点配置属性,譬如给 账号 节点配置姓名、性别、年龄等属性。在当前这个案例中,我们不需要配置节点属性。

从概念上理解,管理员姓名、邮箱等信息,可以作为域名的属性,但在此案例中,我们的目标是为了做溯源,因此把管理员姓名、邮箱作为节点看待。当然这不是一个黄金标准,可以思考一下什么情况下,应该把一类信息当成其他类信息的属性,还是单独抽象成一类节点。后面几个案例中,我们会接触到其他的设计方式。

重复刚刚的过程,将其他几类节点也加进来:

定义 Edge

点击工具栏中 + 号右边的 --->,启动边创建工具。点亮之后,按顺序点击需要创建关系的两类节点

输入边的类型之后,需要做个选择,即该类型的边是有向 (Directed) 的还是无向 (Undirected) 的。

如果是无向的,在做图遍历的时候,你可以从 Domain 走向 DomainAdmin,也可以从 DomainAdmin 走向 Domain。如果是有向的,如 Domain -> DomainAdmin,则你只能从 Domain 走向 DomainAdmin,反过来则不行。

若同时勾选了 Directed 与 Reverse edge,则系统会自动创建一条与 reverse_ 开头的反向边。在某些场景下,比如微博中的关注与被关注,或者银行转账场景,边是有方向的。

实际上,从数据库底层原理来看,无向边等价于同时创建了平行的,方向相反的 2 条边,并自动同步了这 2 条边的边属性。因此无向边需要的存储空间要比单向边来的大。

在我们这个案例中,我希望能不同类型线索之间能够互相遍历,并且能够手动控制每一步遍历的方向,因此对于每种类型的边,都选择 Directed + Reverse edge

这里创建了 4 条有向边 + 4 条反向边,一共 8 种类型,分别为:

  • domain_admin reverse_domain_admin

  • domain_email reverse_domain_email

  • admin_email reverse_admin_email

  • domain_ip reverse_domain_ip

Schema 设计好之后,需要点击工具栏最左边的按钮,提交变更

Graph Studio - Design Schema
创建节点
创建节点
创建边
创建边
Publish Schema