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