정보공간_1

[5기 신촌 정구원] Neo4j & Cypher Query Language #1 본문

IT 놀이터/Elite Member Tech & Talk

[5기 신촌 정구원] Neo4j & Cypher Query Language #1

알 수 없는 사용자 2014. 6. 8. 18:43

1. Graph database?

세상에는 많은 종류의 데이터베이스들이 존재합니다. 일반적이고 많이 사용되는 MySQL, MSSQL, Oracle 같은 데이터베이스는 관계형 데이터베이스라고 합니다. 또한, 전통적인 관계형 데이터베이스와는 달리 보다 덜 제한적인 일관성 모델을 이용하여 데이터의 저장 및 검색을 위한 매커니즘을 제공하는 NoSQL 데이터베이스도 있습니다. NoSQL은 데이터 모델의 종류에 따라 분류하면, Column, Document, Key-Value 그리고 Graph 등으로 구분할 수 있습니다. 오늘 소개해드릴 Neo4j는 이 중에서 Graph database에 해당합니다.

Graph database, node, edge 그리고 property들을 포함한 graph 자료구조로 데이터를 저장하고 표현하는 데이터베이스를 말합니다. 다른 데이터베이스와는 다르게, index가 아니라 node edge를 통해 원하는 정보에 접근할 수 있습니다. 여러 node 사이에 복잡한 관계들이 존재하고, 이를 탐색하여 결과를 얻는 경우가 많다면, graph database가 하나의 방안이 될 수 있습니다.


예를 들어, 위와 같은 관계가 있다고 생각해봅시다. 각각의 node Alice Bob이라는 사람, 그리고 Chess라는 그룹을 나타냅니다. 또한, 각각의 node들은 그에 맞는 속성들(Properties)을 가지고 있습니다. 화살표들, edge node들 사이의 관계(Relationship)를 나타냅니다. 위의 그림에서 보면, Alice Bob은 서로 아는(knows) 관계임을 알 수 있습니다. 그리고 두 사람은 같은 Chess라는 그룹의 Member인 것도 알 수 있습니다. 위와 같은 경우 외에도, 일반적으로 Tree로 표현되는 계층구조 등도 Graph database로 표현할 수 있습니다.

 

2. Neo4j

Neo4j의 공식홈페이지(http://www.neo4j.org/)의 설명에 따르면, Neo4j는 높은 확장성을 갖고, fully ACID(Atomicity, Consistency, Isolation, Durability) graph database입니다. 지원하는 언어는 이름에서 알 수 있듯이, Java를 이용하여 사용할 수 있으며, 제공해주는 Tool을 이용하여 Server를 구성하고, Client에서 REST web API를 통해 원하는 내용을 요청할 수도 있습니다. 또한, phpMyAdmin과 유사하게, 웹 기반의 administration tool을 제공합니다. 데이터의 삽입, 갱신, 삭제 등에는 Cypher Query Language를 사용합니다.

 

3. Neo4j Community 설치 및 테스트

Neo4j는 많은 edition들이 존재하지만, 무료로 사용할 수 있는 Community edition을 설치하고 사용해보겠습니다.

먼저 Neo4j 공식 홈페이지에서 Community edition을 다운받습니다.


다른 복잡한 설정 없이, Next 버튼만 누르면 간단히 설치가 완료됩니다.


설치가 완료되면, Neo4j Community를 실행합니다.

DB가 위치할 경로를 선택 한 후, Start 버튼을 눌러 서버를 작동시킵니다.


DB가 준비되면, 기본 설정인 7474번 포트를 통해 DB에 접속하여 확인해 볼 수 있습니다.

(, 아직까지 IE는 모든 기능이 완벽하게 제공되지 않으므로, Chrome이나 Firefox 등의 Browser를 사용하시기를 권장합니다.)


아래 화면이 Neo4j에서 제공해주는 web 기반의 administration tool 입니다. 상단의 콘솔 창을 통해 Cypher Query Language를 입력할 수 있습니다. Cypher Query Language에 대한 자세한 내용은 다음 포스트에서 다루도록 하겠습니다.


먼저 간단한 테스트를 위해 좌측의 미리 지정된 Saved scripts 메뉴를 이용하여 “Create a node”를 실행해보겠습니다. 해당 메뉴를 누르면, 미리 지정된 Cypher Query가 입력되며, 우측의 Execute 버튼을 통해 실행시킬 수 있습니다. “World”라는 이름을 property로 가지는 node를 생성한 후, “hello”라는 문자열과 생성한 node의 이름을 반환하는 쿼리입니다.


쿼리의 실행 결과로, hello world가 출력됨을 확인할 수 있습니다.

 

이 외에도, REST web API를 이용하여 Cypher Query를 사용할 수도 있습니다.

http://docs.neo4j.org/chunked/milestone/rest-api-cypher.html


또한, Neo4j를 로컬 데이터베이스로 사용하는 경우에는 Neo4j Community 설치 없이, jar 파일을 Java 프로젝트에 추가하여 직접 Java API를 통해 데이터베이스를 생성하고 수정할 수 있습니다.

http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded-setup.html

 

이번 포스팅에서는 Graph database Neo4j에 대해 소개하고, Neo4j의 간단한 사용법에 대해 알아보았습니다. 다음 포스팅에서는 Neo4j의 구성요소와 Cypher Query Language에 대해 자세히 살펴보도록 하겠습니다.

감사합니다.


Reference

1. Wikipedia (NoSQL / Graph database)

http://en.wikipedia.org/wiki/NoSQL

http://en.wikipedia.org/wiki/Graph_database

2. Neo4j

http://www.neo4j.org/

http://docs.neo4j.org/chunked/milestone/