SQL and Cypher
이 절에서는 아래 예제와 같이 SQL 쿼리와 Cypher 쿼리 구문을 함께 사용하는 방법을 설명합니다.
RDB에서 사용하는 SQL 구문을 통해 테이블 및 열 집계, 통계 처리를 수행하고, GDB의 Cypher 구문이 RDB의 조인 연산을 대체함으로써 보다 나은 데이터 쿼리를 지원합니다.
CREATE GRAPH skai;
CREATE VLABEL dev;
CREATE (:dev {name: 'someone', year: 2015});
CREATE (:dev {name: 'somebody', year: 2016});
CREATE TABLE history (year, event)
AS VALUES (1996, 'PostgreSQL'), (2016, 'AgensGraph');
Cypher in SQL
그래프 DB에 저장된 정점이나 간선의 데이터셋을 SQL 구문에서 데이터셋으로 활용하기 위해 FROM 절 안에서 Cypher 구문을 사용할 수 있습니다.
구문 :
SELECT [column_name]
FROM ({table_name|SQLquery|CYPHERquery})
WHERE [column_name operator value];
다음 예제와 같이 사용할 수 있습니다:
SELECT n->>'name' as name
FROM history, (MATCH (n:dev) RETURN n) as dev
WHERE history.year > (n->>'year')::int;
결과 :
name
---------
someone
(1 row)
SQL in Cypher
Cypher 구문을 통해 그래프 DB의 내용을 쿼리할 때, RDB의 특정 데이터로 검색하기 위해 Match 및 Where 구문을 사용할 수 있습니다. 단, SQL 구문의 결과 데이터셋은 단일 행의 결과를 반환하도록 구성해야 합니다.
구문 :
MATCH [table_name]
WHERE (column_name operator {value|SQLquery|CYPHERquery})
RETURN [column_name];
다음 예제와 같이 사용할 수 있습니다:
MATCH (n:dev)
WHERE n.year < (SELECT year FROM history WHERE event = 'AgensGraph')
RETURN properties(n) AS n;
결과 :
n
-----------------------------------
{"name": "someone", "year": 2015}
(1 row)