일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- BAM
- 패턴인식
- NarwalFreo
- 신경망
- Google App Engine
- 증강현실
- 신경회로망
- Bidirectional Associative Memory
- 패턴 인식
- 멤버십
- 삼성전자 소프트웨어멤버십 SSM
- Friendship
- 동아리
- Neural Network
- 물걸레로봇청소기추천
- SSM
- 가상화
- 인공지능
- 나르왈프레오
- hopfield network
- 삼성소프트웨어멤버십
- 구글 앱 엔진
- 물걸레자동세척로봇청소기
- 고려대학교
- 파이썬
- 갤럭시탭S8울트라
- Python
- 삼성
- 빅데이터
- 하이퍼바이저
- Today
- Total
정보공간_1
[5기 신촌 정구원] Neo4j & Cypher Query Language #1 본문
[5기 신촌 정구원] Neo4j & Cypher Query Language #1
알 수 없는 사용자 2014. 6. 8. 18:431. 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://docs.neo4j.org/chunked/milestone/
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[5기 강북 강현호] RESTful Open API with JAX-RS #1 (0) | 2014.06.08 |
---|---|
[5기 신촌 정구원] Neo4j & Cypher Query Language #2 (0) | 2014.06.08 |
[5기 부산 정우진] Project Ara는 어떤 변화를 가져올 것인가? (0) | 2014.06.07 |
[5기 강남 김영현] PE File Format #2 (0) | 2014.06.07 |
[5기 수원 정영진] NAND 플래시 메모리 (0) | 2014.05.30 |