AgensGraph_v2.5.0后续操作及与SQL集成问题咨询
后续学习与操作路径
- 掌握核心图模型操作:从基础节点拓展到关系边,先尝试创建不同标签的节点:
CREATE(:user {id: 1, name: 'Alice', age: 28}); CREATE(:user {id: 2, name: 'Bob', age: 32}); - 建立节点间关系:给已创建的节点添加关联边,比如好友关系:
MATCH(a:user {id:1}), (b:user {id:2}) CREATE(a)-[:friend {since: 2020}]->(b); - 练习复杂查询:尝试带条件的匹配查询,筛选目标数据:
MATCH(u:user)-[f:friend]->(friend) WHERE u.age > 30 RETURN u.name, friend.name, f.since; - 优化查询性能:为高频查询的属性创建索引:
CREATE INDEX ON :user(id); - 批量数据处理:用
COPY命令导入CSV格式的批量数据:COPY (CREATE(:user {id: id, name: name})) FROM 'C:/users.csv' WITH (FORMAT csv, HEADER true);
AgensGraph与SQL集成方法
AgensGraph基于PostgreSQL开发,天生支持SQL与Cypher的混合使用,具体方式如下:
- SQL中调用Cypher:通过
agens_cypher()函数执行Cypher语句,将结果转为SQL可处理的数据集:SELECT * FROM agens_cypher('test_graph', $$MATCH(a:test) RETURN a.name$$) AS (name text); - Cypher中使用SQL函数:直接在Cypher语句里调用PostgreSQL内置函数:
MATCH(a:user) RETURN a.name, upper(a.name) AS upper_name; - 创建SQL视图:将Cypher查询结果转为SQL视图,方便后续用SQL操作:
CREATE VIEW test_nodes AS SELECT * FROM agens_cypher('test_graph', $$MATCH(a:test) RETURN a.name AS node_name$$) AS (node_name text); - 混合事务操作:SQL与Cypher可在同一事务中执行,保证数据一致性:
BEGIN; -- SQL操作 INSERT INTO sql_table(id, value) VALUES(1, 'test'); -- Cypher操作 MATCH(a:test) SET a.updated = true; COMMIT;
内容的提问来源于stack exchange,提问作者Mahina Sheikh
相关产品推荐
相关产品推荐

