Neo4j

Graph Database

노드간에 관계를 정의하고 관계중심 쿼리를 이용하여 연관된 데이터를 조회할 수 있다.

라이센스

확장, 백업, 모니터링 등의 기능을 사용하려면 상용 라이센스를 구매해야 하며,
사이트에 정확하게 명시되어 있지는 않지만 $6000 per JVM per year 로 비싼편이다.

  • Community
    GPL 라이센스
    어플리케이션에 임베디드할 경우가 아니면 소스 공개 의무는 없다.

  • Advanced
    AGPL 라이센스
    모니터링과 운영 지원이 포함

  • Enterprise
    AGPL 라이센스
    리플리케이션과 백업, 이중화, 모니터링, 운영지원이 포함되어 있다.

비교: https://neo4j.com/editions/

GPL과 AGPL의 가장 큰 차이점은 GPL은 모듈을 직접 사용하는 경우에만 소스를 오픈하면 되지만,
AGPL은 REST 방식으로 사용해도 소스를 오픈해야 한다는 점이다.

Note: 오픈소스 라이센스의 경우 기능구현에는 문제가 없지만 확장 및 백업의 문제가 있을 것으로 판단된다.

Neo4j 특징

  • 자바기반의 그래프 DB
  • 임베딩 방식과 REST 방식을 지원한다.
  • RDBMS 과 같이 CRUD를 제공하며 트랜젹션을 지원한다.
  • 스키마가 존재하지 않으며 기존 그래프에 관계나 노드를 계속해서 추가하는 방식이다.
  • Cypher 라는 전용 언어를 사용한다.
  • 이중화를 통한 고가용성을 지원한다. (상용)
  • 백업 및 복구를 지원한다. (상용)
  • 샤딩을 지원하지 않으며 빅데이터에 적합하지 않다.

모델링하기

Node, Relation, Property

  • Entity를 표현하기 위해서는 node를 사용하라.
  • 각각의 entity의 관계를 설명하기 위해서 relationship을 사용해라 이로써 데이터 구조가 구성된다.
  • relationship의 방향은 관계를 좀 더 명확하게 하는데 사용하면 된다.
    보통 거의 모든 경우에 관계는 일방적이지만, 양방향성의 관계가 존재할때는 쿼리를 만들때 방향을 무시하도록 작성하면 된다.
  • node property는 해당 entity의 속성을 설명하는데 사용하고 타임스탬프나 버전정보같은 메타데이터를 저장하는데 사용하는것이 바람직하다.
  • relationship property는 강도, 가중치, 양을 정의하는데 용이하다.

Clustering

  • HA 모드로 사용할 경우 마스터/슬레이브로 동작한다.
  • 슬레이브에서도 쓰기가 가능하다.
  • consistency를 보장하기 위해서 마스터에 먼저 쓰고 슬레이브에 전달한다.

Cypher

Neo4j 전용 쿼리 언어

참고: http://devopser.me/neo4j-graph-database/




© 2017. by yeopoong.github.io

Powered by yeopoong