概述
图集(GraphSet)包括构成图的点边数据、点边的schema和属性定义,以及任务、索引等各类信息。
每个嬴图实例包含一个默认图集(default),该图集不可删除和卸载。在一个嬴图实例中可创建多个图集。
一个图集如果暂不使用,可以将其卸载(Unmount),以节省服务器内存。图集被卸载期间,内存中与该图集相关的信息将被删除(例如LTE的属性),仅支持执行修改、删除和挂载该图集的命令,无法对该图集内的schema、属性和元数据进行任何操作。需要时可重新挂载(Mount)该图集,挂载后系统会自动恢复其卸载前LTE的属性。
卸载、挂载、清空图集的命令由集群leader完成。
图集命名规则
图集由用户命名,规则如下:
- 2~64个字符
- 以字母开头
- 仅允许使用字母、下划线和数字(_、A-Z、a-z、0-9)
在一个嬴图实例中,图集不能重名。
查看图集
返回的表名:_graph
返回的表头:id
| name
| totalNodes
| totalEdges
| description
| status
(图集ID、图集名、点数量、边数量、描述、状态)
图集状态有mounted(已卸载)、unmounted(已挂载)和mounting(挂载中)。只有mounted图集能显示totalNodes
和totalEdges
。
// 查看当前实例中的所有图集(listGraph接口)
show().graph()
// 查看当前实例中的所有图集
show().graph("")
// 查看当前实例中的一个指定图集
show().graph("<name>")
创建图集
// 在当前实例中创建一个图集
create().graph("<name>", "<desc?>")
// 在当前实例中创建多个图集
create()
.graph("<name>", "<desc?>")
.graph("<name>", "<desc?>")
...
示例:创建图集test
create().graph("test")
如果图集test已存在:
Duplicated db name!
使用前缀TRY:
- 图集名不存在时创建图集
- 图集名已存在时不报错
try create().graph("test")
修改图集
// 修改当前实例中一个指定图集的名称和描述
alter().graph("<name>")
.set({name: "<new_name?>", description: "<new_desc?>"})
删除图集
// 从当前实例中删除一个指定图集
drop().graph("<name>")
// 从当前实例中删除多个指定图集
drop().graph("<name>").graph("<name>")...
默认图集default不允许删除。
挂载图集
// 在当前实例中挂载一个指定图集
mount().graph("<name>")
卸载图集
// 从当前嬴图实例中卸载某个图集
unmount().graph("<name>")
默认图集default不允许卸载。
清空图集
清空图集是指将某个图集的所有或部分点边数据删除,但不删除图集中的schema及属性定义。
// 清空当前实例中一个指定图集的所有点边数据
truncate().graph("<graphSet>")
// 清空当前实例中一个指定图集的指定schema的所有点数据
truncate().graph("<graphSet>").nodes(@<schema>)
// 清空当前实例中一个指定图集的指定schema的所有边数据
truncate().graph("<graphSet>").edges(@<schema>)
// 清空当前实例中一个指定图集的所有点数据
truncate().graph("<graphSet>").nodes("*")
// 清空当前实例中一个指定图集的所有边数据
truncate().graph("<graphSet>").edges("*")
示例:删除图集test的全部数据
truncate().graph("test")
示例:删除图集test的所有边数据
truncate().graph("test").edges("*")
碎片整理
碎片整理是清理当前实例中某个图集的无效数据,不会改变任何有效数据。
// 对当前嬴图实例中一个指定图集进行碎片整理
compact().graph("<graphSet>")
很多操作都会产生无效数据,例如删除、修改数据时所保留的旧数据备份。这些无效数据会降低查询效率,建议定期对图集进行碎片整理。