neo4j - part2 - intro to Neo4j

2 분 소요

intro

Introduction to Neo4j

About this module

  • Neo4j Graph Platform은 개발자들에게 어플리케이션, 데이터의 풍부한 연결 위에 만들어진 graph-powered system 을 만들 수 있도록 지원한다. 이 모듈이 끝나면, 아마도 당신은, Neo4j의 그래프 플랫폼을 사용했을 때의 이익과 구성요소에 대해서 알게 될 것이다. 즉,

Neo4j Graph Platform

  • Neo4j 그래프 플랫폼은 graph-enabled 어플리케이션을 개발할 수 있도록 도와주는 다양한 구성요소를 포함한다. Neo4j를 잘 이해하기 위해서는, 이 요소들과 그 요소들이 알려주는 혜택들에 대해서 명확하게 배운다.

Neo4j Database

  • Neo4j 그래프 플랫폼의핵심은 Neo4j 데이터베이스다. Neo4j 그래프 플랫폼은 Neo4j 데이터베이스의 그래프를 접근할 수 있도록 하는 독창적인(out-of-the-box) 도구들을 제공한다. 게다가, Neo4j는 어플리케이션을 만들고, 그래프를 접근하고, 시각화할 수 있는 맞춤형 도구 API와 driver 또한 제공한다.

Neo4j Database: Index-free adjacency

  • index-free-adjancey로 인해서, 노드나 관계(relationship)가 데이터베이스에 쓰여질 때, 그것은 데이터베이스에 연결된 상태로 저장되며, 따라서, 매우 빠른 탐색(pointer navigation)으로 연속된 데이터에 대한 접근(subsequent access)이 가능해진다
  • Neo4j는 native graph DB이기 때문에(핵심 데이터 모델 자체가 그래프이기 때문에), 아주 큰 크기의 그래프에 대해서도, 기본의 DB에서 index로 처리하는 것이 아니라 노드별로 mini-index와 같은 개념으로 처리하므로 한 노드에서 다른 노드를 탐색할 때 고정된 시간(constant time)에 연결된 데이터들을 탐색할 수 있다.

Neo4j Database: ACID (Atomic, Consistent, Isolated, Durable)

  • Neo4j는 ACID를 보증한다, 하나의 관계가 들어오면, 이건 관계 뿐만 아니라 노드까지 업데이트되어야 한다. 모든 업데이트는 성공/실패 둘 중 하나이며, 즉, trasactionality 를 보증한다는 이야기죠.

clusters

  • 또한, Neo4j는 데이터를 읽을 때 고가용성(high availability)와 확장성(scalability)을 공급하며, 동시에 만흥ㄴ 회사들에게 중요한 대체 작동(failover) 또한 지원한다.

Graph engine

  • Neo4j 그래프 엔진은 Cypher 명령문을 이해하기 위해 사용된다. 또한, 그것이, 디스크에 있든, 메모리에 캐쉬되어 있건, 데이터를 검색하고 저장하기 위해서, kernel-level의 코드를 실행한다.
  • 이 그래프 엔진은 많은 Neo4j의 발매판에서, 어플리케이션의 그래프 데이터를 효율적으로 접근할 수 있도록 하기 위해서 많은 향상이 있어 왔다. 그리고, 당신의 어플리케이션 수요에 적합할 수 있도록 성능을 향상 시키기 위해 세부적인 조정을 하는 것 또한 가능하다.

Language and driver support

  • Neo4j는 오픈 소스이기 때문에, 당신은, 어떻게 neo4j 디비가 접든되는지를 캐낼 수있다. 하지만, 많은 개발자들이 내부에 있는 코드를 깊게 이해하는 것 없이, 단순하게, Neo4j를 사용한다.
  • Neo4j는 데이터베이스의 접근에 대한 모든 레벨을 구현할 수 있으며, 고유의 API를 만들 수 있는 풀 스택을 제공한다. Neo4j 디비에서 사용되는 언어는 Cypher이며, 이 또한 오픈 소스 언어다.

  • 게다가, Neo4j는 자바, 자바스크립트, 파이썬, 씨샵, 그리고 Go에 대한 드라이버를 제공하며, Neo4j의 bolt protocol을 통해 이는 데이터베이스에 binary 접근을 가능하게 한다.
  • Bolt는 데이터를 암호화할 뿐만 아니라, 데이터를 압축해서 보내는 효율적인 binary protocol이다. 예를 들어, 너는 Neo4j 디비에 접근하기 위하여, Bolt driver를 사용하여 java application을 만들 수도 있으며, 어플리케이션은 다른 데이터 저장소 및 프레임워크등과도 효과적으로 사용될 수 있다.

  • 또한, Cypher를 사용하지 않고도, 데이터베이스에 직접 접근할 수 있는 당신 고유의 server-side의 확장을 개발하는 것 또한 가능하다. Neo4j 커뮤니티에서는 다양한 언어에 대한 드라이버들이 개발되어 있다.

Tools

  • 개발 환경에서, 당신은 Neo4j 브라우저나 웹브라우저를 사용해서 데이터에 접근하고, cypher statement를 테스트해볼 수 있다. Neo4j 브라우저는 자바스크립트 볼트 드라이버를 사용하여, neo4j 데이터베이스 서버의 그래프 엔진에 접근한다. 또한 Neo4j는 Bloom이라는 cypher를 잘 몰라도, 그래프를 시각화할 수 있는 도구 또한 가지고 있다.

wrap-up

  • 기본적인 Neo4j가 가지고 있는 기능들에 대해서 정리되어 있습니다. 다른 것보다, ‘index-free adjacency’라는 개념을 잘 알지 못했는데, 그걸 알게 되었고, cypher를 사용해서 그래프를 다룬다는 것, neo4j 브라우저가 있어서 이 브라우저를 사용해서도 접근할 수 있고 동시에 그냥 웹브라우저로도 접근할 수 있다는 말이네요.

댓글남기기