시작하기

Cypher를 자세히 소개하기에 앞서, 먼저 간단히 살펴보겠습니다. 이 장에서는 그래프를 생성하는 방법, 쿼리를 작성하는 방법, 그리고 생성한 그래프를 수정하는 방법을 다룹니다.

그래프 생성

AgensGraph는 하나의 데이터베이스에 여러 개의 그래프를 저장할 수 있습니다. 따라서 Cypher 쿼리는 그래프를 생성하고 선택한 후에만 사용할 수 있습니다.

  • 그래프 생성

    CREATE GRAPH graphName;
    SET graph_path = graphName;
    

    CREATE GRAPH는 그래프를 생성하는 쿼리이며, 그래프 이름을 반드시 정의해야 합니다. graph_path는 사용할 그래프를 지정하는 변수입니다. SET 명령으로 사용하고자 하는 그래프를 설정할 수 있습니다.

  • 레이블 생성

    CREATE VLABEL vlabelName;
    CREATE ELABEL elabelName;
    
    CREATE VLABEL childVlabelName inherits (parentVlabelName);
    CREATE ELABEL childElabelName inherits (parentElabelName1, parentElabelName2);
    

    CREATE VLABEL과 CREATE ELABEL은 vlabel과 elabel을 생성하는 명령입니다. 각 명령은 해당 이름과 함께 사용해야 합니다. Inherits()는 다른 레이블을 상속하는 명령입니다. 레이블을 생성할 때, 생성하려는 자식 레이블 뒤에 부모 레이블 이름을 지정하면 자식 레이블이 지정한 부모 레이블을 상속합니다. 부모 레이블은 둘 이상이 될 수 있습니다.

  • 정점 및 간선 생성

    CREATE (:person {name: 'Jack'});
    CREATE (:person {name: 'Emily'})-[:knows]->(:person {name: 'Tom'});
    

    위 쿼리들은 정점과 간선을 생성하는 방법을 보여 줍니다. 이 명령은 정점이나 간선을 생성하기 위한 패턴과 함께 올바르게 사용해야 합니다. (정점과 간선에 대한 다양한 절과 패턴은 다른 장에서 자세히 살펴봅니다.)

그래프 쿼리

그래프에 쿼리한다는 것은 찾고자 하는 그래프의 패턴을 정의하고, 응답된 그래프에서 정보를 추출하는 것을 의미합니다.

MATCH (:person {name: 'Jack'})-[:likes]->(v:person)
RETURN v.name;

결과 :

name
-------
Emily
(1 row)

MATCH 절은 MATCH 절에 명시된 내용과 일치하는 그래프 데이터를 조회하는 데 사용되며, RETURN 절에 명시된 속성만 반환됩니다.

그래프 조작

기존 그래프 데이터를 수정하려면 MATCH 절의 패턴을 사용해야 합니다.

MATCH (v:person {name: 'Jack'})
SET v.age = '24';

SET 절을 사용하면 정점이나 간선의 속성 값을 수정할 수 있습니다.