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 末尾加入:
Last updated