数据模型
本文介绍Nebula Graph的数据模型。数据模型是一种组织数据并说明它们如何相互关联的模型。
数据结构
Nebula Graph数据模型使用6种基本的数据结构:
图空间(space)
图空间用于隔离不同团队或者项目的数据。不同图空间的数据是相互隔离的,可以指定不同的存储副本数、权限、分片等。
点(vertex)
点用来保存实体对象,特点如下:
- 点是用点标识符(
VID
)标识的。VID
在同一图空间中唯一。VID 是一个 int64, 或者 fixed_string(N)。 - 点必须有至少一个标签(Tag),也可以有多个标签。
- 点是用点标识符(
边(edge)
边是用来连接点的,表示两个点之间的关系或行为,特点如下:
- 两点之间可以有多条边。
- 边是有方向的,不存在无向边。
- 四元组
<起点VID、边类型(edge type)、边排序值(rank)、终点VID>
用于唯一标识一条边。边没有EID。 - 一条边有且仅有一个边类型。
- 一条边有且仅有一个 rank。其为int64, 默认为0。
标签(tag)
标签由一组事先预定义的属性构成。
边类型(edge type)
边类型由一组事先预定义的属性构成。
属性(properties)
属性是指以键值对(key-value pair)形式存储的信息。
有向属性图
Nebula Graph使用有向属性图模型,指点和边构成的图,这些边是有方向的,点和边都可以有属性。
下表为篮球运动员数据集的结构示例,包括两种类型的点(player、team)和两种类型的边(serve、follow)。
类型 | 名称 | 属性名(数据类型) | 说明 |
---|---|---|---|
tag | player | name (string) age (int) | 表示球员。 |
tag | team | name (string) | 表示球队。 |
edge type | serve | start_year (int) end_year (int) | 表示球员的行为。 该行为将球员和球队联系起来,方向是从球员到球队。 |
edge type | follow | degree(int) | 表示球员的行为。 该行为将两个球员联系起来,方向是从一个球员到另一个球员。 |