What is Neo4j

Lee Jieun·2024년 4월 14일

Introduction

GDBMS(Graph Database Management System)의 한 종류

  1. 노드(Node)와 노드 사이의 관계(Relationship)로 데이터를 표현하며, 각 노드는 속성(Properties)을 가질 수 있다.
  2. Cypher 라는 그래프 쿼리 언어를 제공하여 그래프 데이터를 질의, 조작하는 데 사용된다. 또한 트랜잭션을 지원하며, 확장 가능한 아키텍처를 통해 대규모 데이터 세트를 처리할 수 있다.

이러한 특징들로 관계형 데이터베이스보다 더 복잡한 연결성을 가진 데이터를 다루는 데 적합하며, 실시간 네트워크 및 그래프 분석에 유용하다.

그래프의 구조

Neo4j 는 속성 그래프 데이터베이스 모델을 사용한다.

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

Example graph

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 를 그룹핑 할 수 있다.

Node(노드)

Database 에서 구조적으로 의미있는 단일 개체를 나타낸다.
고유한 식별자(ID)를 가지며, 라벨(Label)로 그룹화된다. 라벨은 노드 유형을 나타낸다.

Cypher 쿼리에서 (n:노드명)으로 표현한다.

ex) Label: 사용자 / Node: 이름, 나이

CREATE (:Name:User {birth:2001, nationality: South Korea})

Relationship(관계)

노드 간의 연결을 정의하는 데 사용된다. 또한 방향성을 가질 수 있다.

Cypher 쿼리에서 [r:관계명]으로 표현한다.

ex)
- 사용자(Node) -> 구매(Relationship) <- 제품(Node)
- 양방향: 친구 / 단방향: 팔로우

CREATE (:User)-[:PURCHASE]->(:Product)

Property(속성)

노드와 관계에 대한 추가적인 정보 제공
데이터를 세부적으로 설명하고 쿼리하는데 유용한 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]})

Naming conventions

대소문자를 구분한다. ( User is not user )

Node label

  • 대문자로 시작하는 Camel case
    Upper Camel case : VehicleOwner

Relationship

  • 대문자, 단어 간 밑줄 사용
    Upper case, underscore : OWNS_VEHICLE

Property

  • 소문자로 시작하는 Camel case
    Lower camel case: firstName

참고
https://neo4j.com/docs/getting-started/appendix/graphdb-concepts/

0개의 댓글