Neo4J 소개

Hansu Park·2024년 1월 21일
0
post-thumbnail
post-custom-banner

인턴 과제간 Neo4j를 사용하게 되었다. 우선은 Neo4j의 소개글을 정리해보며, Neo4j가 무엇이고 어떠한 이점을 누릴 수 있는지 전달하고자 한다.

GraphDB

Neo4j는 GrpahDB에 속하는 데이터베이스이다. GrpahDB는 데이터 저장, 데이터 처리, 쿼리 작성을 응집성있게 하도록 도우며, 유연하게 데이터 모델을 설계할 수 있게 해준다.

이점

연관관계를 쿼리타임에 질의하는 것이 아니라 자체적으로 내장하고 있다. 이로 인해서 여러 연관관계를 활용하는 질의하게 될 때 단순하고 빠르게 질의할 수 있다.

사용 사례

  • 깊은 관계를 이용하여 원하는 결과를 만들어내야할 때
  • 숨겨진 연결을 찾아야 할 때
  • 연관관계를 표현하는 데 많은 비율의 데이터가 존재하고 이를 간단하게 처리하고 싶을 때

    e.g. 소셜 네트워크, 도로망 등

그래프 모델의 속성

  • 노드: 그래프가 가지고 있는 요소를 나타낸다.
  • 여러 라벨을 부착하여 역할을 나타낼 수 있다.
  • key-value 쌍의 프로퍼티를 통해 데이터를 가질 수 있다.
  • 라벨은 특정 노드들의 메타데이터로써 활용될 수 있다. (인덱스 역할)
  • 릴레이션: 노드 엔티티간의 관계를 나타낸다.
  • 타입, 시점과 종점과 같은 방향을 항상 유지한다.
  • 노드와 마찬가지로 프로퍼티를 가진다.
  • 하나의 노드에 성능 저하없이 여러 개 부착될 수 있다.

Neo4j란?

오픈소스(GCP v3), NoSQL, ACID를 보장하는 네이티브 그래프 DB[1]이다. Aura[2] DB를 통해 이용할 수 있고, 커뮤니티 에디션과 백업, 클러스터링 등이 추가된 엔터프라이즈 에디션 또한 존재한다. 자바와 스칼라로 작성되었고 깃헙에서 코드를 확인할 수 있다.

[1] Native GrpahDB는 추상화된 그래프만을 제공하는 것이 아니라 (실제 스토리지는 그래프가 아니라 다른 요소로 구성되고, 그래프로 이를 추상화하여 제공하는 형태가 아니라) 실제 스토리지 레벨까지 그래프로 이루어져 있어, 성능이 뛰어나고 유연하다. 또한 ACID, 클러스터링, 런타임 페일오버 등을 제공한다.
[2] Aura란? (중요하진 않으나, 자주 언급되어 간단하게 정리하였습니다.)
Neo4j에서 제공하는 클라우드 서비스(플랫폼)이다. 데이터베이스인 AuraDB와 데이터 사이언스 솔루션인 AuraDS를 제공한다.

편리함을 제공하는 특징들

  • 싸이퍼: GrpahDB를 위한 질의어 (SQL과 비슷한 개념)
  • 빠른 탐색: RDB와는 달리 노드-릴레이션 관계로 되어있어 깊이와 너비가 크더라도 빠르게 탐색이 가능하다.
  • 확장가능성: 유연한 스키마로 빠르게 속성을 수정하거나 확장할 수 있다.
  • 드라이버 제공: Java, JS, Go 등 여러 언어의 드라이버를 제공한다.

Data Import

RDBMS, CSV, API Data 등에서 데이터를 가져올 수 있다. RDBMS의 경우를 살펴보면 자체적으로 RDBMS가 제공하는 CSV 백업 파일을 가져오거나 APOC, ETL, Ketle과 같은 툴들을 이용하여 가져올 수 있다. 가장 기본적인 방법인 드라이버를 통해 직접 프로그래밍하는 방식도 있다.

TMI

"Neo"는 실제로는 새로운이라는 뜻을 갖는 고대 그리스어에서 비롯되었다는 게 중론이지만, 매트릭스 주인공의 이름인 Neo에서 유래되었다는 얘기도 있다.

"4j"는 log4j등과 같이 자바 라이브러리를 나타내는 관례일 것이다. (현재는 자바를 비롯한 타 언어들도 지원하고 있다.)

참고

다음 편

Neo4j 실습

post-custom-banner

0개의 댓글