본문 바로가기

DB 공부

Neo4j 개요

반응형

Neo4j Neo4jwiki

  • ACID 트랜잭션 지원
  • Native 그래프 DB
  • Cypher 쿼리 언어 제공

그래프 DB와 Neo4j

그래프 DB란 데이터 간의 관계를 일급 엔티티로 다룰 수 있도록 설계된 데이터베이스이다. 관계형 데이터베이스의 경우 검색 시점에 저장된 관계를 이용하는 반면, 그래프 DB는 데이터 간의 관계를 저장 시점에 저장한다. 그래프 DB의 핵심 요소는 Node와 Relation이다.

GraphDB

  • 노드
    • 그래프 엔티티로서 역할에 따른 레이블을 가짐
    • 예) Employee, Company, City
  • 관계
    • 두 노드 사이의 관계
    • 예) :HAS_CEO, :LOCATED_IN
  • 레이블
    • 여러 노드를 하나의 집합으로 묶기 위해서 사용하는 이름을 가지는 그래프 구조체
    • 도메인 객체의 역할을 식별함으로써 레이블을 식별할 수 있다.

쿼리 언어 Cypher

: Cypher는 SQL-Like 선언형 쿼리 언어로, 그래프 모델에 특화된 쿼리 언어이다. 가장 기본적인 쿼리 구문은 다음과 같다.

Cypher

How we model: RDBMS vs. Graph

Relation Graph
스키마를 정의한 후 최소로 변경 스키마는 애플리케이션과 함께 진화
모델링할 때 추상화, 객체보다는 클래스에 초점 모델링할 때 실제 데이터 항목을 사용

그래픽 데이터베이스로 할 수 있는 것

  • 이상탐지
    • 그래프 데이터베이스는 정교한 이상탐지와 예방 기능 있음
    • 실시간으로 금융이나 구매 트랜잭션 처리 가능
    • 예를 들면, 하나의 개인 이메일 주소와 연결된 여러 사람들 또는 ip 주소는 같지만 실제로는 서로 다른 주소에 거주하는 사람들 간의 관계 패턴 파악에 도움
  • 추천엔진
    • 고객, 관심분야, 친구, 구매이력과 같은 정보 카테고리들 사이의 그래프 관계를 저장할 수 있음
    • 고도의 가용성을 가진 그래프 데이터베이스를 사용하여 같은 운동을 즐기고 비슷한 구매 이력을 가진 다른 사용자가 어떤 제품을 구입했는지 파악

NorthWind 예제 따라하기

  • 하나는 관계형 DB에 저장된 NorthWind 데이터셋을 Neo4j로 Load하고, Cypher 쿼리 언어로 질의

그래프 데이터 모델링

  • {키:값} 속성(Property) 식별하기
    • 이 모델이 무슨 질문을 할 것인가?
      • 질문거리 정의
      • 예) About John & Sally
        • John 과 Sally는 친구가 된게 언제인지?
        • Graph Database의 평균 평점은 얼마인지?
        • Graph Database의 저자는?
        • Sally의 나이는?
        • Sally와 John 중에서 누가 나이가 많지?

다운로드 주소

Neo4j 브라우저

Neo4j Browser는 웹 기반 쉘 환경과 같은 명령 기반 클라이언트. 브라우저 상에서 Neo4j 기반 애플리케이션의 프로토타입을 손쉽게 만들 수 있음.

  • 개발자 중심으로 Cypher를 사용한 그래프 쿼리 작성 및 실행
  • 쿼리 결과 내보내기 기능
  • 노드 및 관계를 포함하는 쿼리 결과를 그래프로 시각화
  • Neo4j REST API를 편리하게 탐색

Neo4j Database

Neo4j Graph 플랫폼의 심장은 Neo4j 데이터베이스이다. Neo4j Graph 플랫폼은 Neo4j Database에 그래프 접속을 할 수 있도록 도와주는 툴이다. Neo4j API는 시각화 그래프에 액세스 하기 위한 애플리케이션과 사용자가 지정한 도구를 만들 수 있도록 도와주는 운전자 역할을 한다.

Neo4j Database: Index-free adjacency

인덱스에 자유롭게 접근하면 한 노드나 관계 데이터베이스에 저장되고 연결되어 차후 데이터로 확대시 접근이 매우 빨라지고 포인터 네비게이션 역할을 한다. Neo4j은 순수하게 데이터베이스이며 거기에는 핵심 데이터 모델로 그래프를 가지고 있다. 데이터 모델은 인덱스 필요없이 서로 연결되어 데이터가 지속적으로 가로지르며 큰 그래프도 지원한다

Graph engine

Neo4j 그래프 엔진 Cypher 명령을 해석하고 검색 데이터를 저장할 때, 디스크상이나 메모리에 캐시된다. kernel-level 코드를 실행하며 사용된다. 그래프 Neo4j의 엔진은 모든 발표와 함께 응용 프로그램의 그래프 데이터, 가장 효율적인 접근을 제공할 수 있도록 개선하였다.

화이트보드 모델링

Neo4j 는 속성 그래프 모델로서, 동료들과 함께 화이트 보드 그리면서 데이터를 이해하고 수정과정을 쉽게 협력하여 할 수 있는 것과 같다. Neo4j 데이터를 이행하고 활용하기 위한 노드, 관계, 라벨, 속성을 만들기 위해 이 모델을 사용한다. 이후에도 그래프와 데이터를 용도 변경이 필요한 경우에도 그래프를 수정하기 쉽다.

Neo4j Graph Platform architecture

Platform

개발자들은 Neo4j Browser와 함께 Neo4j Desktop을 사용하여 그래프를 개발하고 테스트할 뿐만 아니라 지원되는 드라이버, 도구 및 API를 사용하여 여러 언어로 애플리케이션을 구현한다. 관리자는 도구를 사용하여 Neo4j 데이터베이스 및 클러스터를 관리 및 모니터링한다. 비즈니스 사용자는 즉시 사용 가능한 그래프 시각화 도구를 사용하거나 사용자 지정 도구를 사용한다. 데이터 분석가와 과학자들은 Graph Algorithm 라이브러리의 분석 기능을 사용하거나 사용자 정의 라이브러리를 사용하여 결과를 이해하고 기업에 보고. 애플리케이션 또한 기존 데이터베이스(SQL or NOSQL)와 통합되어 그 위에 Neo4j를 계층화하여 데이터에 대한 풍부한 그래프 가능 액세스를 제공할 수 있다.

반응형

'DB 공부' 카테고리의 다른 글

Database  (0) 2021.03.08
MongoDB (root) 계정 만들기  (0) 2020.05.05
macOS mongoDB 설정  (0) 2020.05.05
Neo4j - Cypher 언어  (0) 2020.03.24