OushuDB 用户指南图算法之GQL脚本命令

宗恩

image.png
创建VERTEX LABEL:
CREATE VERTEX person (code text, name text, age int, PRIMARY KEY(code));CREATE VERTEX card (code text, PRIMARY KEY(code));

创建EDGE LABEL:
CREATE EDGE owns (from person, to card);CREATE EDGE translate (from card, to card, id text, amount int, DISCRIMINATOR(id));

创建图:

创建图的时候可以指定不同存储类型的图,目前支持的类型有magmaap,orc,创建的语法如下:
CREATE GRAPH graphname(vertex(person, card), edge(owns, translate))format 'magmaap';CREATE GRAPH graphname(vertex(person, card), edge(owns, translate))format 'orc';

创建图的时候默认是不创建主键的索引的,如果需要创建图的时候根据点和边的主键创建唯一索引,可以用如下语句:
CREATE GRAPH graphname(vertex(person, card), edge(owns, translate))format 'magmaap' with(primaryindex=false);

注:orc格式的图不支持唯一索引

创建index
可以对图中任一类型的点或边创建索引,创建vertex index语法如下:
CREATE INDEX indexname ON graphname.person (age);CREATE UNIQUE indexname INDEX ON graphname.person (code);
创建edge index时,可以任意选择edge的属性和源点、目标点的主键,源点和目标点的主键用 FROM 和 TO 表示:
CREATE INDEX indexname ON graphname.translate (FROM, TO, id);
这样索引有三列,(src_person.code, dst_person.code, id)
也可以建立反转edge的index,如
CREATE INDEX indexname ON graphname.translate (TO, FROM, id);
该语句的索引列为 (dst_person.code, src_person.code, id)
注:创建UNIQUE INDEX时必须向左包含primary key/DISCRIMINATOR。如给person创建UNIQUE INDEX,则必须包含code,且code在最左边。

插入数据
INSERT INTO graphname.person VALUES('1234567', '小李', 24);INSERT INTO graphname.person VALUES('2345678', '小王', 25);INSERT INTO graphname.card VALUES('6666666');INSERT INTO graphname.card VALUES('7777777');INSERT INTO graphname.owns VALUES('1234567', '6666666');INSERT INTO graphname.owns VALUES('2345678', '7777777');INSERT INTO graphname.translate VALUES('6666666', '7777777','t123', 10000);

查询数据

单独查询vertex:
SELECT * FROM graphname.person;

单独查询edge:
SELECT * FROM graphname.translate

根据一条edge查询vertex的信息:
SELECT FROM (SELECT FROM graphname.translate WHERE id='t123')AS t1 INNER JOIN graphname.owns ON t1.src_code=graphname.owns.dst_code OR t1.dst_code=graphname.owns.dst_code INNER JOIN graphname.person ON graphname.owns.src_code=graphname.person.code;

删除graph
创建出的图、点、边、索引均可以drop
DROP GRAPH graphname;DROP VERTEX person;DROP VERTEX card;DROP EDGE owns;DROP EDGE translate;DROP INDEX indexname;

阅读 518

关注新科技

2.9k 声望
55 粉丝
0 条评论

关注新科技

2.9k 声望
55 粉丝
文章目录
宣传栏