Neo4J Cypher 가이드

Neo4j를 기반으로 프로그래밍을 할 일이 생겼다. 특히 Cypher 쿼리 언어를 중심으로 스터디하면서 가장 기본적인 내용을 정리했다. 그래프 DB와 Neo4J를 처음 접하는 처지에서, 전문적인 튜토리얼이나 서적을 보기 전에 먼저 읽어두면 도움이 될 것이다. 이 글에선 간략히 개요를 설명하며, 정리한 내용은 맨 밑의 슬라이드에서 확인할 수 있다.

그래프 DB와 Neo4J

그래프 DB란 데이터 간의 관계를 일급(first-class) 엔티티로 다룰 수 있도록 설계된 데이터베이스다. 관계형 데이터베이스의 경우 검색 시점에 저장된 관계를 이용하는 반면, 그래프 DB는 데이터 간의 관계를 저장 시점에 저장한다. 그래프 모델에서 가장 핵심적인 요소는 노드(Node)와 관계(Relation)이다.

popit_neo4j_graph_model2

그림. 그래프 모델 예시

  • 노드(Node)
    • 그래프의 엔티티로서 역할(Role)에 따른 레이블을 가진다
    • 예) Employee, Company, City
  • 관계(Relatoin)
    • 도 노드 사이의 연결
    • 예) :HAS_CEO, :LOCATED_IN

Neo4J는 오픈소스 그래프 DB이며, 아래와 같은 특성을 가진다. 커뮤니티 버전은 무료이지만, 운영 관점의 주요 기능은 대체로 유료다.

  • ACID 트랜잭션 지원
  • Native 그래프 DB로서, 그래프 엔진 레벨이 아닌 스토리지 레벨까지 구현됨
  • 유연하며 강력한, 그래프 전용 쿼리 언어인 Cypher 제공

쿼리언어 Cypher

Cypher는 SQL-Like 선연형 쿼리 언어로, 그래프 모델에 특화된 쿼리 언어다. 가장 기본적인 쿼리 구문은 다음과 같다.

popit_neo4j_graph_cypher

그림. Cypher 기본 구문

노드는 마치 동그라미와 같은 (a)와 같은 형태로, 관계는 --> 로 표현된다.

NorthWind 예제 따라하기

예제는 Neo4J의 샘플 데이터셋 중에서 NorthWind 샘플을 사용한다.

popit_neo4j_graph_northwind

그림. NorthWind 데이터 구조

예제는 2가지로 구성된다.

  • 하나는 관계형 DB에 저장된 NorthWind 데이터셋을 Neo4J로 Load하고, Cypher 쿼리 언어를 이용해서 질의하는 방법을 간략히 설명한다.
  • 나머지 예제는 Neo4J의 Java 클라이언트 라이브러리 중 하나인 OGM(Object Graph Mapping) 라이브러리를 사용해서 자바 클라이언트를 작성하는 방법을 설명한다. 자바 예제 코드는 socurites/neo4j-northwind-java에서 내려받을 수 있다.

슬라이드

정리된 내용은 아래 슬라이드에서 확인할 수 있으나, 화질이 구리니 PPT 파일을 다운로드하는 것이 좋을 것 같다.

[다운로드]

Link: https://www.slideshare.net/JunyiSong1/201804-neo4-jcypherguide


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.