
GDBMS(Graph Database Management System)의 한 종류
이러한 특징들로 관계형 데이터베이스보다 더 복잡한 연결성을 가진 데이터를 다루는 데 적합하며, 실시간 네트워크 및 그래프 분석에 유용하다.
Neo4j 는 속성 그래프 데이터베이스 모델을 사용한다.

구조는 관계로 연결될 수 있는 노드로 구성된다. 위의 그림에는 세 개의 노드(원)와 세 개의 관계(화살표)가 표시되어 있다.

CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})-[:ACTED_IN {roles: ['Forrest']}]->(:Movie {title: 'Forrest Gump', released: 1994})<-[:DIRECTED]-(:Person {name: 'Robert Zemeckis', born: 1951})
그래프의 구성 요소에는 크게 Node 와 Relationship 가 있으며, 추가적인 정보를 위해 Property(key-value 쌍)를 가질 수 있다, 또한 Label 을 통해 Node 를 그룹핑 할 수 있다.
Database 에서 구조적으로 의미있는 단일 개체를 나타낸다.
고유한 식별자(ID)를 가지며, 라벨(Label)로 그룹화된다. 라벨은 노드 유형을 나타낸다.
Cypher 쿼리에서 (n:노드명)으로 표현한다.
ex) Label: 사용자 / Node: 이름, 나이
CREATE (:Name:User {birth:2001, nationality: South Korea})
노드 간의 연결을 정의하는 데 사용된다. 또한 방향성을 가질 수 있다.
Cypher 쿼리에서 [r:관계명]으로 표현한다.
ex)
- 사용자(Node) -> 구매(Relationship) <- 제품(Node)
- 양방향: 친구 / 단방향: 팔로우
CREATE (:User)-[:PURCHASE]->(:Product)
노드와 관계에 대한 추가적인 정보 제공
데이터를 세부적으로 설명하고 쿼리하는데 유용한 key-value 쌍이다.
int, float, string, boolean 의 다양한 데이터 타입으로 표현이 가능하며, list를 사용하기도 한다.
ex)
- Relationship: 구매 / Property: 구매 날짜, 수량
- Node: 이름 / Property: 생년월일, 국적
CREATE (:Example {f: [1, 2, 3], g: [2.71, 3.14], h: ['abc', 'example'], i: [true, true, false]})
대소문자를 구분한다. ( User is not user )
참고
https://neo4j.com/docs/getting-started/appendix/graphdb-concepts/