TuGraph图模型说明

1. 数据模型

1.1. 图模型

TuGraph是一个具备多图能力的强类型、有向属性图数据库。

  • 图项目:每个数据库服务可以承载多个图项目(多图),每个图项目可以有自己的访问控制配置,数据库管理员可以创建或删除指定图项目。

  • 点:指实体,一般用于表达现实中的实体对象,如一部电影、一个演员。

    • 主键:用户自定义的点数据主键,默认唯一索引,在对应的点类型中唯一。

    • VID:点在存储层自动分配图项目中的唯一ID,用户不可修改。

    • 上限:每个图项目存储最多2^(40)个点数据。

  • 边:用于表达点与点之间的关系,如演员出演电影。

    • 有向边:边为有向边。若要模拟无向边,用户可以创建两个方向相反的边。

    • 多条边:两个点数据之间可以有多条边数据。当前TuGraph支持重复边,如要确保边边唯一,需要通过业务策略实现。

    • 上限:两个点数据之间存储最多2^(32)条边数据。

  • 属性图:点和边可以具有与其关联的属性,每个属性可以有不同的类型。

  • 强类型:每个点和边有且仅有一个标签,创建标签后,修改属性数量及类型有代价。

    • 指定边的起/终点类型:可限制边的起点和终点点类型,支持同类型边的起点和终点的点类型不同,如个人转账给公司、公司转账给公司;当指定边的起/终点类型后,可增加多组起/终点类型,不可删除已限制的起/终点类型。

    • 无限制模式:支持不指定边的起点和终点的点类型,任意两个点类型间均可创建该类型的边数据。注:当指定边的起/终点类型后无法再采用无限制模式。

1.2. 数据类型

TuGraph支持多种可用于属性的数据类型。具体支持的数据类型如下:

数据类型

最小值

最大值

描述

BOOL

false

true

布尔值

INT8

-128

127

8位整型

INT16

-32768

32767

16位整型

INT32

- 2^31

2^31 - 1

32位整型

INT64

- 2^63

2^63 - 1

64位整型

DATE

0000-00-00

9999-12-31

“YYYY-MM-DD” 格式的日期

DATETIME

0000-00-00 00:00:00.000000

9999-12-31 23:59:59.999999

“YYYY-MM-DD HH:mm:ss[.ffffff]” 格式的日期时间

FLOAT

32位浮点数

DOUBLE

64位浮点数

STRING

不定长度的字符串

BLOB

二进制数据(在输入输出时使用Base64编码)

POINT

EWKB格式数据,表示点

LINESTRING

EWKB格式数据,表示线

POLYGON

EWKB格式数据,表示面(多边形)

1.3. 索引

TuGraph支持对点或边的属性创建索引,以提升查询效率。

  • 索引可以是唯一或非唯一索引。

  • 如果为点标签创建了唯一索引,在修改该标签的点时,会先执行数据完整性检查,以确保该索引的唯一性。

  • 每个索引都基于一个点或边的一个属性创建,可以对同一点或边的多个属性创建索引。

  • BLOB类型的属性不能建立索引。

2. 图项目、点、边、属性命名规则和建议

2.1 命名规则

图项目、点、边和属性是识别符。该节描述了在TuGraph中识别符的允许的语法。 下面的表描述了每类识别符的最大长度和允许的字符。

识别符

长度

允许的字符

用户、角色、图项目

1-64字符

允许中文、字母、数字、下划线,且首字符不为数字

点类型、边类型、属性

1~256字符

允许中文、字母、数字、下划线,且首字符不为数字

2.2 使用限制

描述

最大个数

用户数、角色数

65536

图项目的个数

4096

每个图项目的点和边类型数量之和

4096

每个点或边类型的属性数量

1024

注: 1、特殊字符和关键字说明:使用特殊字符或非保留关键字时,需要使用反单引号/backquote(``)进行引用;

示例: match (`match`:match) return `match`.id limit 1

2、大小写敏感性:TuGraph大小写敏感;

3、图项目、点/边、属性名称之间可以重复使用,同一点或边下的属性名称不可以重复;

4、属性名字保留关键字:SRC_ID / DST_ID / SKIP

2.3 命名建议

识别符

描述

建议

图项目

字母或中文开头

如graph123、project123等

点/边类型

字母或中文开头,使用下划线区分单词

如person、act_in等

属性

字母或中文

如name、age等