NebulaGraph教程 — 第二章 概念简单介绍

  • 提示
  • 1 图
  • 图的构成
  • 为什么要使用图数据库
  • 2 图数据库【略】
  • 3 相关技术【略】
  • 4 什么是 NebulaGraph
  • 什么是图数据库
  • NebulaGraph 的优势
  • 适用场景
  • 5 数据模型
  • ※ NebulaGraph 中没有无向边,只支持有向边。
  • 图空间(Space)
  • 点(Vertex)
  • 边(Edge)
  • 标签(Tag)
  • 边类型(Edge type)
  • 属性(Property)
  • ※Tag和Edge type的作用
  • 6 路径
  • walk
  • trail
  • path
  • 7 点 VID
  • 8 服务架构
  • 架构总览
  • Meta 服务
  • Graph 服务
  • Storage 服务


提示

主要是对官方文档(3.3.0版本) 简介 章节 知识概念进行提炼总结。

1 图

图的构成

图通常由以下几部分组成:

  • 节点,即对象或实体。在本书中,通常简称为点(Vertex)
  • 节点之间的关系,在本书中,通常简称为边(Edge)。通常边是有方向或者无方向的,以表示两个实体之间有持续的关系。

为什么要使用图数据库

虽然关系型数据库(MySQL)XML/JSON 等半结构类型的数据库,都可以用来描述图结构的数据模型。

但是,图(数据库)不仅可以描述图结构与存储数据本身,更着眼于处理数据之间的关联(拓扑)关系。具体来说,图(数据库)有这么几个优点:

  • 图是一种更直观、更符合人脑思考直觉的知识表示方式。这使得我们在抽象业务问题时,可以着眼于“业务问题本身”,而不是“如何将问题描述为数据库的某种特定结构(例如表格结构)”。
  • 图更容易展现数据的特征,例如转账的路径、近邻的社区
  • 图查询语言是针对图结构访问设计的,可以更加直观
  • 由于存储引擎和查询引擎可以针对图的结构专门设计,图的遍历(对应 SQL 中的 join)要高效得多
  • 图数据库具有广泛的适用场景。例如数据集成(知识图谱)、个性化推荐、欺诈与威胁检测、风险分析与合规、身份(与控制权)验证、IT 基础设施管理、供应链与物流、社交网络研究等。
  • 根据文献的统计,使用图技术最多的领域,依次是:信息技术(IT)、学术界研究、金融、工业界实验室、政府、医疗健康、国防、制药业、零售与电子商务、交通运输、电信、保险

2 图数据库【略】

3 相关技术【略】

4 什么是 NebulaGraph

NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。

什么是图数据库

图数据库是专门存储庞大的图形网络并从中检索信息的数据库。它可以将图中的数据高效存储为点(Vertex)边(Edge),还可以将属性(Property)附加到点和边上。

NebulaGraph使用java连接教材 nebula graph studio_图数据库

NebulaGraph 的优势

  • 开源
  • 高性能
  • 易扩展
  • 易开发
  • 高可靠访问控制
  • 生态多样化
  • 兼容 openCypher 查询语言
  • 面向未来硬件,读写平衡
  • 灵活数据建模
  • 广受欢迎

适用场景

  • 欺诈检测
  • 实时推荐
  • 知识图谱
  • 社交网络

5 数据模型

参考文档:数据模型 推荐看 官方文档

※ NebulaGraph 中没有无向边,只支持有向边。

NebulaGraph 数据模型使用 6 种基本的数据模型。

图空间(Space)

图空间用于隔离不同团队或者项目的数据。不同图空间的数据是相互隔离的,可以指定不同的存储副本数、权限、分片等。

类似于关系数据库(MySQL)的数据表或者NameSpace,因为点的VID在同一图空间中唯一。

点(Vertex)

点用来保存实体对象,特点如下:

  • 点是用点标识符(VID)标识的。VID在同一图空间中唯一。VID 是一个 int64,或者 fixed_string(N)
  • 点可以有 0 到多个 Tag

边(Edge)

边是用来连接点的,表示两个点之间的关系或行为,特点如下:

  • 两点之间可以有多条边。【Rank来区分相同类型边的等级】
  • 边是有方向的,不存在无向边。
  • 四元组 <起点 VID、Edge type、边排序值 (rank)、终点 VID> 用于唯一标识一条边。边没有 EID。
  • 一条边有且仅有一个 Edge type
  • 一条边有且仅有一个 Rank,类型为 int64,默认值为 0

Rank 可以用来区分 Edge type、起始点、目的点都相同的边。该值完全由用户自己指定。
读取时必须自行取得全部的 Rank 值后排序过滤和拼接。
不支持诸如next(), pre(), head(), tail(), max(), min(), lessThan(), moreThan()等函数功能,也不能通过创建索引加速访问或者条件过滤。

标签(Tag)

Tag 由一组事先预定义的属性构成。【组内的属性都是相同类型的】

边类型(Edge type)

Edge type 由一组事先预定义的属性构成。【组内的属性都是相同类型的】

属性(Property)

属性是指以键值对(Key-value pair)形式表示的信息。

※Tag和Edge type的作用

TagEdge type 的作用,类似于关系型数据库中“点表”和“边表”的表结构。

6 路径

参考文档:路径 路径的类型分为三种:walktrailpath

walk

walk类型的路径由有限或无限的边序列构成。遍历时点和边可以重复

GO语句采用的是walk类型路径。

trail

trail类型的路径由有限的边序列构成。遍历时只有点可以重复,边不可以重复。柯尼斯堡七桥问题的路径类型就是trail

trail 类型中,还有cyclecircuit两种特殊的路径类型。

  • cycle 遍历时边不可以重复,起点和终点重复,并且没有其他点重复
  • circuit 遍历时边不可以重复,除起点和终点重复外,可能存在其他点重复

path

path类型的路径由有限的边序列构成。遍历时点和边都不可以重复。

7 点 VID

参考文档:点 VID 推荐看 官方文档 。

8 服务架构

架构总览

参考文档:NebulaGraph 架构总览 推荐看 官方文档 。

NebulaGraph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构。

NebulaGraph使用java连接教材 nebula graph studio_Storage_02

Meta 服务

参考文档:Meta 服务

在 NebulaGraph 架构中,Meta 服务是由 nebula-metad 进程提供的,负责数据管理,例如 Schema 操作、集群管理和用户权限管理等。

Graph 服务

参考文档:Graph 服务

Graph 服务负责处理计算请求,包括解析查询语句、校验语句、生成执行计划以及按照执行计划执行四个大步骤,Graph 服务是由 nebula-graphd 进程提供。

Storage 服务

参考文档:Storage 服务

Storage 服务负责存储数据,Storage 服务是由 nebula-storaged 进程提供。