[Pre Onboarding-TIL]Neo4j

연꽃·2021년 11월 7일
0

Pre Onboarding

목록 보기
4/12

그래프 데이터베이스란?

그래프 데이터베이스는 노드, 엣지, 프로퍼티와 함께 그래프 구조를 사용하여 데이터를 저장하고 표현하는 데이터베이스이다. 장점은 다음과 같다.

  • 데이터간의 관계를 그래프 DB로 손쉽게 표현가능
  • 노드와 노드를 관계로 정의하여 검색시 크로스 체크가 가능
  • 비즈니스의 관계 변경시 실시간으로 데이터 관계를 변경 및 추가 노드가 쉽다.

Neo4j

그래프 데이터베이스의 일종으로 현재 가장 대중적인 데이터베이스이다. Neo4j와 그래프 데이터베이스에서 가장 많이 나오는 개념인 노드, 라벨, 관계 및 관계속성에 대해 차례로 알아보겠다.

  • 노드(Node)
    노드는 그래프 개념에서 나오는 노드와 같은 노드이다. 그리고 일반적인 RDBMS에서 row(열)과 비슷한 개념이다. 노드는 엔티티(Entity)이며 (키-값) 쌍으로 구성된 속성(Porpery)을 가진다.
  • 라벨(Label)
    라벨은 일반적인 RDBMS에서 table과 비슷한 개념이다. 라벨은 노드를 그룹화하고 그래프에 대해 쿼리를 필터링하는 데 사용된다. 즉, 쿼리를 최적화하기 위해 라벨을 사용할 수 있다. 작업할 동영상 데이터베이스에서 이 그래프의 노드는 두 가지 유형의 노드를 나타내기 위해 영화 또는 사람이라는 레이블이 지정된다.
  • 관계(Relationship)
    노드간의 관계는 관련 데이터를 쉽게 찾을 수 있어서 그래프 데이터베이스의 핵심기능이다. 관계는 두 개의 노드를 연결하며, 유효한 소스 노드와 대상노드를 갖도록 설계한다. 관계는 노드를 임의의 구조로 구성하여 그래프가 목록, 트리, 지도 또는 복합적인 요소들을 파악할 수 있도록 하여 복잡한 구조를 상호연결 구조로 결합할 수 있다. 또한 관계는 방향성을 갖고 있으며 순방향과 역방향 모두 순회가 가능하다.
  • 관계속성
    노드와 관계는 모두 속성을 가질 수 있다. 속성은 이름(또는 키)이 문자열인 경우 명명된 값이다. 두 노드가 공유하는 정보를 저장한다. 속성 그래프에서 관계는 속성을 포함할 수 있다.

Cypher

Cypher는 사용자가 그래프 데이터베이스에서 데이터를 저장하고 검색할 수 있도록 하는 Neo4j의 그래프 쿼리 언어이다. 대표적인 cypher 쿼리에 대해서 알아보자.

  • 노드생성 - 라벨이 Movie이고 name속성이 Matrix라는 노드를 생성
create (n : Movie) 
set n.name = 'Matrix' 
return n
  • 노드 삭제 - 라벨이 Movie이고 name속성이 Matrix라는 노드를 삭제
match (n: Movie {name : 'Matrix'})
delete n
return n
  • 노드 관계 연결 및 관계속성 정의 - Matrix라는 영화에 Keanu Reeves라는 배우가 출연
match (a: Actor), (b: Movie )
   where a.name = 'Keanu Reeves' AND b.name = 'Matrix'
   create (a)-[r:appear]->(b)
   return type(r)
  • 노드 간의 관계 해제 - Keanu Reeves가 출연한 영화를 모두 삭제
match (n :Actor {name: 'Keanu Reeves'})-[r:appear]->()
delete r
profile
우물에서 자라나는 중

0개의 댓글