GSQL 常见问题

如何设计SCHEMA?

导出所有的数据表,或者每一张表导出部分样例数据。准备一张白纸和一支笔,理解数据表的含义和表之间的关系,如果是实体,在白纸上画一个圆并取个名字;如果实体之间有关联关系,则连一条边。然后为实体和边添加上可能有的属性。最后,为所有的实体创建节点 CREATE VERTEX xxx (PRIMARY_ID xxx_id UINT, ...)属性放在括号中,为所有的关系创建边 CREATE UNDIRECTED/DIRECTED EDGE edge_type (FROM xxx, TO xxx, ...)属性同样防在括号中,创建Grahp CREATE GRAPH xxxGraph (*)。 参考定义一个图模型

如何确定是有向边还是无向边

根据关系的特点。例如,微博上的关注、通话中的拨出、交易中的支付,都是有明确的发起方和接收方,就需要设计成有向边。而朋友关系、人到物的拥有/喜欢等,不需要明确谁是发起方,或者可以很容易确认出谁是发起方,就可以使用无向边。

有向边定义为何要加上“WITH REVERSE_EDGE=”?

是为了逆向访问。例如,a–>b,这个有向边,如果没有逆向边的话,只能从a访问到b,而不能从b访问到a(没有其它类型边的情况下)。如果有了逆向边,就可以从b访问到a。因此,如果确定不需要逆向访问,则可以不加逆向边。

为何GADMIN STATUS -V GRAPH 显示的边个数和原始数据的记录数目不一致?

无向边需要双向访问,存储的时候其实是两条边。有向边,如果有逆向边的话,也是两条边;如果没有逆向边,则只是一条边。

如何创建多图(MULTIGRAPH)?

首先,请确认是商业版并且有多图的权限。在schema.gsql 中加入多个CREATE GRAPH xxxGraph (xxx,xxx)即可,把子图中需要包含的节点类型和边类型放在括号中。

VIM是否支持GSQL语法高亮?

可以,请先下载 gsql.vim,并放置到目录 “~/.vim/syntax/”,然后在~/.vimrc 末尾加入:

au BufRead,BufNewFile *.gsql set filetype=gsql
au! Syntax gsql source $VIM/syntax/gsql.vim

Last updated