Neo4J Cypher 가이드
Neo4j를 기반으로 프로그래밍을 할 일이 생겼다. 특히 Cypher 쿼리 언어를 중심으로 스터디하면서 가장 기본적인 내용을 정리했다. 그래프 DB와 Neo4J를 처음 접하는 처지에서, 전문적인 튜토리얼이나 서적을 보기 전에 먼저 읽어두면 도움이 될 것이다. 이 글에선 간략히 개요를 설명하며, 정리한 내용은 맨 밑의 슬라이드에서 확인할 수 있다.
그래프 DB와 Neo4J
그래프 DB란 데이터 간의 관계를 일급(first-class) 엔티티로 다룰 수 있도록 설계된 데이터베이스다. 관계형 데이터베이스의 경우 검색 시점에 저장된 관계를 이용하는 반면, 그래프 DB는 데이터 간의 관계를 저장 시점에 저장한다. 그래프 모델에서 가장 핵심적인 요소는 노드(Node)와 관계(Relation)이다.
그림. 그래프 모델 예시
- 노드(Node)
- 그래프의 엔티티로서 역할(Role)에 따른 레이블을 가진다
- 예) Employee, Company, City
- 관계(Relatoin)
- 도 노드 사이의 연결
- 예) :HAS_CEO, :LOCATED_IN
Neo4J는 오픈소스 그래프 DB이며, 아래와 같은 특성을 가진다. 커뮤니티 버전은 무료이지만, 운영 관점의 주요 기능은 대체로 유료다.
- ACID 트랜잭션 지원
- Native 그래프 DB로서, 그래프 엔진 레벨이 아닌 스토리지 레벨까지 구현됨
- 유연하며 강력한, 그래프 전용 쿼리 언어인 Cypher 제공
쿼리언어 Cypher
Cypher는 SQL-Like 선연형 쿼리 언어로, 그래프 모델에 특화된 쿼리 언어다. 가장 기본적인 쿼리 구문은 다음과 같다.
그림. Cypher 기본 구문
노드는 마치 동그라미와 같은 (a)와 같은 형태로, 관계는 --> 로 표현된다.
NorthWind 예제 따라하기
예제는 Neo4J의 샘플 데이터셋 중에서 NorthWind 샘플을 사용한다.
그림. NorthWind 데이터 구조
예제는 2가지로 구성된다.
- 하나는 관계형 DB에 저장된 NorthWind 데이터셋을 Neo4J로 Load하고, Cypher 쿼리 언어를 이용해서 질의하는 방법을 간략히 설명한다.
- 나머지 예제는 Neo4J의 Java 클라이언트 라이브러리 중 하나인 OGM(Object Graph Mapping) 라이브러리를 사용해서 자바 클라이언트를 작성하는 방법을 설명한다. 자바 예제 코드는 socurites/neo4j-northwind-java에서 내려받을 수 있다.
슬라이드
정리된 내용은 아래 슬라이드에서 확인할 수 있으나, 화질이 구리니 PPT 파일을 다운로드하는 것이 좋을 것 같다.
Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.