[Neo4j] 그래프 DB기초 및 실습
2026. 8. 16. 18:54

Neo4j

그래프 데이터 모델을 기반으로 데이터를 저장하고 관리하는 오픈소스 그래프 DBMS

Labeled Property Graph를 사용

Cypher

Neo4j 데이터베이스를 쿼리하는데 쓰이는 그래프 쿼리 언어

예) 2000년 이후 개봉된 영화중 5개 쿼리 하는 Cypher예시

MATCH (m:Movie)
WHERE m.released > 2000
RETURN m LIMIT 5

위와 같이 쿼리를 날리면 조건에 해당하는 5개의 노드가 리턴된다.

핵심 요소

1. Node: 엔티티(개체/데이터단위) 예) User, Movie

  • 노드는 ()로 묶어서
    (p:Person) -> p는 변수, Person은 해당 변수가 참조하는 노드 유형

2. Relationship: 노드 간의 방향서 연결 예) [:LIKES], [:ACTED_IN]

  • Relationship은 []으로 묶어서 표현
    [w:WORKS_FOR] -> w는 변수, WORKS_FOR은 Relationship 타입
  • 노드는 하나 이상의 Relationship에 연결될 수 있다.

  • 관계 유형 : incoming과 outgoing관계가 존재함.

위 그림에서 Tom Hanks는 Outgoing relationship이고 Cloud Atlas는 Incoming relationship

Replationship은 항상 방향을 가진다.

사이퍼에서 관계는 화살표로 나타낸다.

아래 쿼리에서 Persion은 Outgoing Relationship이고 Movie는 Incoming Relationship이다.

MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
RETURN p,r,m

3. Property: 노드나 관계에 key-value형태로 부여되는 세부 정보 예) name:홍길동, rating:5
특정한 노드의 프로퍼티를 리턴하고 싶을떄는 아래와같이 쿼리

MATCH (m:Movie)
RETURN m.title, m.released

4. Label: 노드를 분류하거나 그룹화하기 위해 붙이는 태그 예) :Person, :Product

  • 노드나 관계의 식별자나 이름
    Movie나 Person은 노드 라벨이고, ACTED_IN, REVIEWED 등은 Relationship의 타입이다.
    특정한 타입의 노드를 수행하고자 할 때 사용됨.

Match and Where절

Match : 특정한 패턴의 노드를 찾을때 쓰임.
대부분의 Match에서는 아래와 같이 name:'Tom Hanks'같이 필터를 할 수 있음.

MATCH (p:Person {name: 'Tom Hanks'})
RETURN p

Where : 좀 더 복잡한 조건이 필요할때. >,<,STARTS WITH, END WITH와 같은 조건들을 쓸 수 있음

MATCH (p:Person)
WHERE p.name = "Tom Hanks"
RETURN p