什么是Apache年龄?
Apache AGE是一个提供图数据库功能的PostgreSQL扩展。因此,它涵盖了Postgres的功能,同时将Cypher纳入用于图形管理。这种独特的组合使您能够在关系数据库基础结构的框架内访问高级图查询建模。
定义
顶点(节点)
它充当存储实体相关数据的容器,可能包含多个属性。值得注意的是,每个顶点都可以容纳各种属性,但仅限于具有单一标签的名称。
边缘(关系)
边缘在图中链接节点,定义与定义属性的独特关系或相互作用。这对于在图形数据模型中导航复杂的互连至关重要。
路径
该路径表示连接的边缘和节点的序列。它捕获了实体之间的路线或旅程,从而探索了图中的关系和模式。
使用Cypher的常见子句
create :用于在图中添加新节点和边缘。
delete :用于删除图形的节点,边缘或整个路径。
匹配:用于从图形数据库中检索数据。它使您可以指定节点和边缘的模式,从而促进互连实体和关系的发现。
合并:允许您根据指定的模式创建新节点和边缘或匹配并更新现有的节点。
删除:用于从顶点和边缘删除属性。
返回:指定由于查询而要检索的数据。它允许您定义感兴趣的节点和边缘的属性或属性。
set :用于更新图表中的节点或边缘的属性。
其中:根据指定条件过滤查询的结果。它可以帮助您缩小搜索范围并仅检索符合特定条件的数据。
示例
创建一个没有标签的顶点并将其返回
SELECT * FROM cypher('graph_name', $$
CREATE (v)
RETURN v
$$) AS (vertex agtype);
返回所有顶点
SELECT * FROM cypher('graph_name', $$
MATCH (v)
RETURN v
$$) AS (vertex agtype);
用属性创建一个顶点
SELECT * FROM cypher('graph_name', $$
CREATE (v {property: 'value'})
RETURN v
$$) AS (vertex agtype);
用指定的值返回顶点
SELECT * FROM cypher('graph_name', $$
MATCH (v {property: 'value'})
RETURN v
$$) AS (vertex agtype);
使用where
返回带有指定值的顶点
SELECT * FROM cypher('graph_name', $$
MATCH (v)
WHERE v.property = 'value'
RETURN v
$$) AS (vertex agtype);
删除所有顶点
SELECT * FROM cypher('graph_name', $$
MATCH (v)
DELETE v
$$) AS (vertex agtype);
创建带有标签和属性的顶点
SELECT * FROM cypher('graph_name', $$
CREATE (v:Label {property1: 1, property2: 'value', property3: true})
RETURN v
$$) AS (vertex agtype);
用指定的标签获取所有顶点
SELECT * FROM cypher('graph_name', $$
MATCH (v:Label)
RETURN v
$$) AS (vertex agtype);
获取带有标签的顶点并更改其属性的值
SELECT * FROM cypher('graph_name', $$
MATCH (v:Label)
SET v.property1 = 0
RETURN v
$$) AS (vertex agtype);
删除第三属性
SELECT * FROM cypher('graph_name', $$
MATCH (v:Label)
REMOVE v.property3
RETURN v
$$) AS (vertex agtype);
创建一个新的顶点和与我们已经存在的节点的关系,返回创建的路径。
SELECT * FROM cypher('graph_name', $$
MERGE p=(x:Label)-[r:relationship]->(y:newNode)
RETURN p
$$) AS (path agtype);
参考和手册
Apache AGE documentation
Apache AGE repository
Apache AGE website