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等 |