Apache AGE如何同时执行关系数据和图数据的查询?



作为Apache AGE的一个特性,它可以同时对关系数据和图数据执行查询。

我浏览了Apache AGE网站,并认为这是Apache-AGE的一个特性混合查询技术同时执行关系数据和图数据的查询。

谁能解释一下Apache AGE的这个特性并给出一些见解?

混合查询基本上是在单个查询中同时使用SQL和Cypher的一种形式。我将通过示例来说明:

假设我们在AGE中有一个图形数据库,其中有一些具有一些通用属性(姓名,年龄等)的"person"节点。显示所有这些节点的Cypher查询如下所示:

MATCH (p:person)
RETURN p

要在AGE中复制此操作,我们将编写以下查询:

SELECT *
FROM cypher('graph_name',
$$
MATCH (p:person)
RETURN p
$$
) as (p agtype);

这将返回图中标签为'person'的所有节点及其所有属性。现在假设您只想检索每个人的姓名和年龄。重写查询语句,得到:

SELECT *
FROM cypher('graph_name',
$$
MATCH (p:person)
RETURN p.name, p.age
$$
) as (name agtype, age agtype);

结果如下所示:

name    | age 
-----------+-----
"Alice"   | 38
"Charlie" | 53
"Daniel"  | 54
"Bob"     | 25
"Eskil"   | 41
| 61
| 

注意cypher()函数调用基本上向FROM子句返回了一个由2列组成的关系表。现在我们可以对这个表执行常规的SQL操作了。例如,我们可以过滤掉所有超过50年的行,然后按升序显示结果。

SELECT * 
FROM cypher('isEmpty_test',
$$
MATCH (person)
RETURN person.name, person.age 
$$               
) as (name agtype, age agtype)
WHERE age < 50
ORDER BY age;

结果:

name   | age 
---------+-----
"Bob"   | 25
"Alice" | 38
"Eskil" | 41
(3 rows)

相关内容

  • 没有找到相关文章

最新更新