概述
一个赢图实例中允许存在多个图集。每个图集包括以下信息:图结构定义(点边的schema和属性),图的元数据(点边数据),以及索引、进程、任务等信息。“图集”和“图”两种表达有时会互换使用。
创建赢图实例时,会自动创建默认图集(default)。该图集初始状态为空图集,供用户自由使用。但请注意,图集default其名称和描述无法修改,且不可删除和卸载。
在集群环境下,卸载、挂载、清空图集的命令由集群leader执行。
查看图集
// 查看当前实例中的所有图集(调用listGraph接口)
show().graph()
// 查看当前实例中的所有图集(调用listGraph接口)
show().graph("")
/// 查看当前实例中名为Sample的图集
show().graph("Sample")
结果示例:
id |
name |
totalNodes | totalEdges | description |
status |
---|---|---|---|---|---|
0 | default | 0 | 0 | System default graph! | MOUNTED |
1 | Sample | 112 | 125 | MOUNTED |
图集状态共分三种:mounted
(已挂载), unmounted
(已卸载)和 mounting
(挂载中)。 大型图集可能需要一定时间才能完成挂载。
对于已挂载的图集,展示其点边总数。对于已卸载的图集, totalNodes
和 totalEdges
对应数据展示为0。卸载图集时,展示图集当下挂载的点边总数。
创建图集
// 创建名为social的图集并添加表述
create().graph("social", "Campus social graph")
// 创建名为social的图集
create().graph("social")
// 同时创建多个图集
create()
.graph("social")
.graph("transaction", "Bank Card Transaction")
命名规则
图集命名规则如下:
- 名称长度为2~64个字符。
- 名称必须以字母开头。
- 名称只能包含字母、下划线和数字(A-Z、a-z、
_
、0-9)。
每个图集的名称需要唯一。
使用前缀TRY
同时创建3个图集,但其中一个图集(default)与已有图集重名。
create().graph("newGraph_1").graph("default").graph("newGraph_2")
图集newGraph_1在重名图集之前创建,因此创建成功。而图集newGraph_2在重名图集之后创建,因此创建失败,并返回报错信息Duplicated db name!
。
TRY create().graph("newGraph_1").graph("default").graph("newGraph_2")
此次图集创建过程同上,但由于使用了前缀TRY
,报错信息被屏蔽,返回信息为SUCCEED
。
修改图集
// 修改当前图集miniCircle的名称和描述
alter().graph("miniCircle").set({name: "movieCommunity", description: "Unix Movie Platform"})
// 删除图集movieCommunity的描述
alter().graph("movieCommunity").set({description: ""})
// 修改当前图集movieCommunity的名称
alter().graph("movieCommunity").set({name: "movComm"})
卸载图集
可将暂时不使用的图集(除图集default外)卸载以节省服务器内存。例如,LTE的属性将从内存删除。
图集卸载后,仅支持执行挂载、修改和删除该图集的命令,无法修改或读取该图集内的schema、属性、数据等信息。
// 从实例内存中卸载图集LDCC
unmount().graph("LDCC")
挂载图集
系统默认挂载新创建的图集。对于已卸载的图集,需要时可以手动重新挂载。
图集重新挂载后,LTE的属性会重新导入服务器内存;同时自动创建与此前相同的索引和全文索引。
// 将图集LDCC挂载到实例内存
mount().graph("LDCC")
删除图集
即删除整个图集。默认图集default不允许删除。
// 删除图集test0831
drop().graph("test0831")
// 同时删除多个图集
drop().graph("test0831").graph("test0925")
清空图集
清空图集是指删除图集内的指定数据,但不删除图集本身及其结构(schema和属性信息)。
// 删除图集PowerGrid中所有点边数据
truncate().graph("PowerGrid")
// 删除图集PowerGrid中所有@bus点数据(及其临边数据)
truncate().graph("PowerGrid").nodes(@bus)
// 删除图集PowerGrid中所有@connectsTo边数据
truncate().graph("PowerGrid").edges(@connectsTo)
// 删除图集PowerGrid中所有点数据(及边数据)
truncate().graph("PowerGrid").nodes("*")
// 删除图集PowerGrid中所有边数据
truncate().graph("PowerGrid").edges("*")
注意:删除单个点数据,与该点连接的所有边数据也会同时删除。
碎片整理
碎片整理是指清理图集在服务器硬盘上的冗余数据,不会改变其他有效数据。
// 对图集PowerGrid进行碎片整理
compact().graph("PowerGrid")
很多操作都会产生无效数据,如更新或删除数据后所保留的旧数据备份。建议定期对图集进行碎片整理,以提升查询效率。