본문 바로가기
GDB & Cypher/기본 개념

[Cypher] Cypher란?

by 열정주니어 2023. 1. 3.
반응형

Cypher는 그래프 데이터를 대상으로 질의를 수행하는 그래프 질의 언어이다.

 

쉽게 말하면 RDB에서의 질의 언어 Oracle, PostgreSQL 등과 같이 GDB를 대상으로 하는 질의 언어가 Cypher라고 생각하면 된다.

 

GDB에대해 모르는 분들은 이전 포스팅 'GDB란?'을 보고 오시길 바란다.

GDB란?

 

GDB란?

GDB란? Cypher 사용하는 방법을 설명하기에 앞서 GDB에 대해 간단히 알아보도록 하자. GDB는 Graph Database의 약자로 위키피디아에서 "데이터를 표현하고 저장하기 위해 노드, 에지 및 속성이 있는 시맨

jobdahan-tech.tistory.com

 

Cypher 특징

Cypher의 주요 특징은 다음과 같다.

 

1. Cypher는 선언형(Declarative) 언어이다.

명령형은 어떤 일을 어떻게 할것인가에 관한 HOW의 접근이고, 선언형은 무엇을 할 것인가에 관한 What의 접근이다.

명령형 언어는 실행될 알고리즘을 명시하는 반면 선언형 언어는 목적을 명시한다.

예시(출처:https://medium.com/@kimdohun0104/사람들은-왜-선언형-ui에-열광할까-1440d03f4e49)

Cypher는 선언형 언어이다. 명령형 언어와는 대조적으로 목표를 명시하므로 사용자가 질의를 함에 있어 세부적인 구현에 대한 부담을 덜어준다.

 

2. Cypher는 패턴 일치(Pattern Matching)한다.

Cypher는 찾고자 하는 그래프 데이터를 그리듯 표현하는 언어이다. 찾고자 하는 그래프 패턴을 ASCII Art처럼 괄호와 대시 등을 사용하여 표현하며 해당 패턴과 일치하는 그래프 데이터를 찾는다. 

찾고자 하는 형태를 직접 그리기 때문에  직관적으로 질의문을 작성할 수 있다.

 

3. Cypher는 표현력(Expressive)이 좋다.

Cypher는 표현이 풍부한 질의를 위해 다양한 처리 방식들을 차용하였다.

 

SQL에서 WHERE와 ORDER BY 같은 대부분의 키워드, SPARQL에서 패턴 매칭, Haskell & Python에서 collection 개념을 빌려오는 등 다양한 언어에서 방식들을 차용해 익숙하면서도 간단하게 질의를 표현할 수 있다.

 

Cypher의 기본 요소

Cypher의 기본 요소로는 node, edge, vlabel, elabel, property, variable이 있다.

 

Node

노드(Node)는 그래프를 구성하고 있는 가장 기본적인 요소이며 객체를 나타낸다.

Cypher에서는 위와 같이 괄호()를 이용하여 표현한다.

 

Edge

엣지(Edge)는 각 노드 사이의 관계를 나타내며 엣지 단독으로 존재할 수 없다.

Cypher에서는 위와 같이 대괄호[]와 하이픈-을 이용하여 표현하며 방향성을 나타낼 때 화살표를 추가한다.

 

Vlabel

노드 레이블(Vlabel)은 노드들을 분류하는 기준이 되도록 사용자가 부여한 특정 이름이다.

Cypher에서는 위와 같이 노드를 나타내는 괄호() 안에 콜론:을 붙이고 노드레이블을 입력하는 형태로 표현한다.

 

Elabel

엣지 레이블(Elabel)은 엣지의 이름으로 노드사이의 관계를 나타내는 역할을 한다.

Cypher에서는 위와 같이 엣지를 나타내는 형태안에 콜론:을 붙이고 엣지레이블을 입력하는 형태로 표현한다.

 

Property

속성(Property)는 노드 혹은 엣지에 개별적, 차별적으로 부여할 수 있는 속성이다.

Cypher에서는 위와 같이 노드의 경우 괄호(), 엣지의 경우 대괄호[] 안에 중괄호{}를 이용하여 속성명:속성값의 형태로 표현한다.

 

Variable

변수(Variable)는 노드나 엣지에 임의로 부여되는 식별자이다.

Cypher에서는 위와 같이 콜론:앞에 노드나 엣지의 이름에 해당하는 레이블을 임의로 나타내는 식별자 형태로 표현한다.

 

 

 

이것으로 Cypher에 대한 간단한 설명을 마치고 다음 포스팅부터는 본격적으로 Cypher의 사용법을 예시를 통해 알아보도록 하자.

 

참고

https://bitnine.net/ko/documentation/ (아젠스그래프 개발자 메뉴얼 가이드)

 

문서 ⋆ Bitnine Global Inc.

문서 ⋆ Bitnine Global Inc.

bitnine.net

 

반응형

'GDB & Cypher > 기본 개념' 카테고리의 다른 글

GDB란?  (0) 2023.01.02