作为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)