(Neo4j) 0. Neo4j 개념과 구현 방법

그래프 데이터를 사용해야하는 이유

우리가 살고있는 세상은 정보가 연결이 되어 있습니다. 예를 들어 한 사람이 사과를 산다면 이 사람과 판매원, 판매점이 연결이 됩니다. 이러한 정보는 ‘관계’에 종속이 되어 있기 때문에 한 사람의 정보를 알면 ‘관계’를 통해 숨겨진 다른 정보도 쉽게 찾을 수 있습니다.

기존 관계형 데이터베이스는 이러한 관계를 저장할 수 있지만, 종종 엄격한 스키마에 묶여 있는 값비싼 JOIN 작업이나 교차 조회로 탐색합니다. “관계형” 데이터베이스는 관계를 제대로 처리하지 못한다는 것이 밝혀졌습니다. 그래프 데이터베이스에는 JOIN이나 조회가 없습니다. 이 시스템은 데이터를 빠르게 탐색할 수 있도록 최적화되어 있습니다.


그래프 데이터를 다룰 수 있는 데이터베이스 관리 시스템

Neo4j 그래프 데이터베이스는 테이블이나 문서 대신 노드와 관계를 저장합니다.

Neo4j는 단순히 데이터를 그래프로 그리는 용도가 아니라, 저장부터 그래프 구조로 저장을 하는 기술입니다.

그래프 데이터 구조는 관계로 연결될 수 있는 Nodes로 구성되어 있습니다.

아래는 세 개의 Nodes(원)와 세 개의 Relationships(화살표)가 있는 그래프의 이미지입니다.

Alt text

그래프 데이터의 구성은 아래의 페이지에서 자세하게 설명했습니다.

[Neo4j] 그래프의 구성


Neo4j DB 구성 방법

  1. 데이터 베이스 구축 방법
    1. 온프레미스 다운로드
      1. https://neo4j.com/deployment-center/
    2. 도커 이미지
      1. https://hub.docker.com/_/neo4j/
  2. 데스크탑 설치
    1. https://neo4j.com/docs/desktop-manual/current/
  3. 온라인 샌드박스
    1. https://neo4j.com/sandbox/

저는 쿠버네티스를 구성해서 웹서비스를 구현하기 때문에 도커 이미지를 사용했습니다. 만약 간단 테스트를 원한다면, 온라인 샌드박스를 사용해보는 것을 추천합니다 ㅎㅎ


Neo4j 데이터 사용방법

Neo4j를 Python, Go, Javascript 등에서 사용할 수 있습니다.

저는 프론트엔드에서 Javascript, VueJS를 이용하여 DB에 접속하여 그래프를 웹서비스에 적용하는 방법과, 백엔드에서 Go를 이용하여 API를 제공하는 방법을 모두 사용해봤는데, 드라이버 설치하여 간단하게 사용할 수 있었습니다.

Create applications with Neo4j - Neo4j Documentation


Neo4j documentation

Neo4j는 문서화와 커뮤니티가 아주 잘 되어 있습니다. 찾고 있는 거의 모든 정보가 문서에 친절하게 작성되어 있어서 따로 구글링을 많이 하지 않아도 된다는 점이 가장 편한점이었습니다.

Getting Started Guide for Neo4j version 5


그래서 어떤 그래프를 그리는데?

아래는 APAC 의 보안 위협 정보 그래프 사용 예시입니다. 이 그래프처럼 그래프 DB를 이용하면 수많은 데이터 들이 연결되며, 그 연결 사이에서 숨겨진 정보를 찾아낼 수 있습니다.

Standard Chartered: Threat Intelligence Using Knowledge Graphs - Graph Database & Analytics

Alt text

Categories:

Updated:

Leave a comment