Graph Database

Graph Database란?

Graph Database(GDB)란?

  • 그래프 구조를 사용하여 데이터를 표현하고 저장하는 데이터베이스
  • 관계형 데이터에비스를 보완하기위해 등장
  • 데이터자체를 노드와 선인 그래프 형태로 저장하고 이를 시각화 함으로써 분석이 용이
  • 아래 그림과 같이 이름이 홍길동인 사람과 앨리스는 친구 관계이며, 앨리스는 해리포터를 3번 읽었고 홍길동은 책을 2번 읽었고
    이러한 그래프 내용을 한눈에 이해 가능

그래프데이터 예시

RDB(Relational Database)와 GDB의 비교

  • RDB는 관계형 데이터베이스로 데이터를 Table의 형태로 표현하는 데이터베이스를 말함
  • RDB는 테이블 내에 속성과 튜플로 구성
  • GDB는 RDB의 테이블과 동일한 '레이블'과 RDB의 튜플과 같은 노드로 구성

RDB로 표현한 사원 테이블
GDB로 표현한 사원레이블

  • 정리해서 RDB와 GDB의 명칭을 비교하면 아래 표와 같음

명칭 비교 RDB와 GDB

GDB의 특징(1) 직관적인 모델

  • 예를 들어 아래와 같은 RDB형태의 테이블을 확인한다고 하면 주문 테이블만 봤을때 고객번호1이 누구인지, 상품번호 A가 무엇인지를 고객테이블과
    상품 유형 테이블을 확인해야 확인이 가능

RDB 테이블

  • 하지만 GDB를 통해서 확인할 때에는 어떤 고객이 어떤 상품을 주문했고 주문번호가 무엇인지를 한눈에 확인이 가능

GDB 테이블

  • 각각의 데이터 객체와 이를 연결하는 관계 선들로 이루어진 그래프 데이터베이스는 사용자들에게 보다 직관적인 형태로 모형을 제공

GDB의 특징(2) Schema-less

  • RDB같은 경우에는 원래의 테이블에서 새로운 속성(컬럼)을 추가하는것은 굉장히 복잡

RDB - Schema-less

  • 반면 GDB는 다른 속성을 가진 데이터가 추가되어도 별개의 노드이기 때문에 설정이 자유로움

GDB - Schema-less

  • 데이터를 정형화된 형태의 테이블에 삽입하는 방식이 아닌 하나의 객체로 저장하기 때문에 형태가 다양해져도 문제가 되지 않음

Cypher Query란

  • 사이퍼(cyper)는 식으로 나타내는 그래프의 효율적인 질의를 위한 그래프 질의어를 의미
  • 사이퍼는 처음 그래프 데이터베이스인 neo4j를 대상으로 neo4j사가 만들었으나 오픈사이퍼 프로젝트를 통해 개방되었으며 그뒤로
    Agens Graph를 포함한 여러 그래프 데이터베이스 벤더에 채택
  • Create와 Match문이 가장 대표적인 구문

Cypher Query(1) - Create

  • 노드를 생성하거나 또는 관계를 생성할 때 사용
  • create (n:레이블명{속성:값, 속성:값})의 형태로 작성
  • 예를 들어 앞의 고객테이블을 생성한다면 create(n:고객{고객번호:1,이름:'김00',나이:23})
  • 문자를 입력하 때 속성에는 따옴표를 붙이지 않지만 값은 항상 따옴표를 붙여줘야 함 , 숫자 제외
  • 관계를 생성할 때에는 첫번째로 관계를 맺을 레이블을 검색해야하기 때문에 Select문과 동일한 Match문을 활용
  • Match(a:고객)(b:상품) create (a)-[:구매하다]->(b) 와 같은 형태로 작성

Cypher Query(2) - Match

  • RDB의 Select와 같은 용도로 사용
  • 노드를 검색하거나 관계를 검색하는 용도로 주로 사용
  • 예를들어 나이가23, 이름 김ㅇㅇ 고객을 검색한다면 match (n:고객) where 나이=23 and 이름='김ㅇㅇ' return n
  • return 값을 써주지 않으면 에러가 발생
  • 만약에 위의 예시 쿼리에서 나이가 23, 이름 김ㅇㅇ인 고객의 고객번호만 알고싶으면 
    match(n:고객) where 나이=23 and 이름='김ㅇㅇ' return n.고객번호 처럼 검색

  • n.리턴값의 형식으로 입력

GDB 비교

  • Neo4j는 GDB중 가장 널리알려지고 보편적으로 사용되는 그래프데이터베이스이며, AgensGraph는 국내 GDB AnzoGraph는 해외 GDB

 

AnzoGraph

AgensGraph

Neo4j

설명

그래프 분석 데이터 베이스

관계 및 그래프 데이터 모델을 지원하고 Postgre를 기반으로 구축된
다중 모델 데이터베이스

오픈 소스 그래프 데이터베이스

서버 운영체제

Linux

LinuX, Windows

Linux, Solaris, Windows

지원 프로그래밍
언어

C++ , Java

C , Java, Javascript , Python

Python, Java, Javascript, Php, Perl, Ruby, Scala

쿼리 언어

Sparql

Cypher

Cypher

개발사

cambridge semantics

Bitnine

Neo4j

  • 위와 같이 만약 GDB를 사용한다면 운영체제와 지원프로그래밍 언어를 확인하여 선택하면 좋을 듯 함
728x90

'Graph Database' 카테고리의 다른 글

SPARQL 이란?  (0) 2020.03.23
Neo4j 설치 가이드  (0) 2019.07.30
Graph Database란?  (1) 2019.07.19