neo4j - data science - part 1
About this module.
- 본문은 neo4j - data science - part1의 내용을 공부하며 정리한 내용입니다.
- 해당 챕터에서는 Graph로 구축된 데이터베이스를 사용해서 데이터 분석 프로젝트를 수행하기 위해, 환경 설정을 하는 부분에 대해서 설명합니다.
- Neo4j Snadbox를 구축하고,
- Neo4j Browser에서 Citation DB와 연결하고,
- Google Colaboratory의 Jupyter Notebook를 통해 Citation Database를 연결하는 작업을 수행합니다.
Neo4j Sandbox
- Neo4j sandbox는 임시로 사용가능한 클라우드 GraphDB입니다. 선택에 따라서, 아예 비워져 있는 DB를 선택할 수도 있고, 이미 관련 그래프 데이터가 구축되어 있는 DB를 선택할 수도 있습니다. 본문에서는 Citation DB를 사용하며, Citation이 이미 import되어 있는 DB를 선택합니다.
How to set up a Neo4j Sandbox
- 그저, Create a Citations Sandbox에 들어가서, citation dataset이 이미 만들어진 DB를 만듭니다.
Open a Jupyter Notebook in Google Colaboratory and connect to the Citations database
- 이 코스에서는 Google Colaboratory 환경에서 지원해주는 Jupyter notebook을 사용합니다. 따라서, Google - Colaboratory에 접속합니다.
required libs.
- 본 프로젝트를 수행하기 위해서는 다음의 library들이 필요합니다.
pandas
,matplotlib
,sklearn
의 경우는 이미, 친숙한 라이브러리이지만,py2neo
의 경우가 조금 눈에 띄네요.
!pip install py2neo==4.1.3 pandas matplotlib sklearn
About py2neo.
- py2neo - documentation에 작성된 바에 따르면, 다음과 같습니다.
Py2neo is a client library and toolkit for working with Neo4j from within Python applications and from the command line. The core library has no external dependencies and has been carefully designed to be easy and intuitive to use.
- py2neo는 파이썬 내에서 혹은 커맨드 라인에서 Neo4j와 동작하기 위해서 제공되는 클라이언트용 라이브러리와 툴킷이다. 코어 라이브러리는 외부 의존성이 없으며, 쉽게, 직관적으로 사용하기 위해서 주의깊게 설계되었다, 라네요. documentation에 들어가보니, 좀 정리하고 싶은 내용들이 많습니다만, 이는 나중에 처리해보도록 하겠습니다.
access DB in python.
- 이제 python에서 DB에 접속합니다. 우리는 앞서,
py2neo
라는 라이브러리를 설치했죠. 이는 python에서 neo4j에 접속하기 위한 라이브러리죠. 아래와 같이, 필요한 모듈을 import하고, 우리는 bolt로 접속하므로, ip와 ID, password를 정리합니다(당연하지만, 본인이 만든 샌드박스의 ip, bolt port, id, password)를 사용해야 합니다.
from py2neo import Graph
# Change the line of code below to use the IP Address, Bolt Port, and Password of your Sandbox.
# graph = Graph("<Bolt URL>", auth=("neo4j", "<Password>"))
graph = Graph("bolt://52.3.242.176:33698", auth=("neo4j", "***"))
- 흠, 실행을 했는데 다음과 같은 에러가 뜹니다.
ServiceUnavailable: Failed to establish connection to ('54.165.85.15', 37081) (reason 111)
- 비슷한 문제를 겪고 있는 사람들이 이미 있고, 깃헙에 이슈가 만들어져있는데요, 뚜렷하게, 해결된 것은 찾지 못했습니다.
- 아이러니하게도, citation network가 포함된 DB 말고 blank DB의 경우는 이 문제가 발생하지 않았어요. 테스트삼아, 기존에 만들어둔 DB에 대해서 다시 실행해보니, 문제가 없습니다 흠.
- 뭐, 결과적으로는 만들었던 citation network를 지우고, 새롭게 만들어서, 그 포트로 연결해보니, 문제없이 실행됩니다. 지금이야 DB에 포함된 정보가 문제가 없으니, 상관없지만, 이러면 안되지 않을까요 흠.
wrap-up
- 아무튼, 이 챕터에서는 neo4j sandbox를 만들고, python에서 해당 DB에 py2neo를 통해서 접속하는 방법까지를 정리했습니다. 아마도, 이후에는 이 쥬피터 노트북에서 데이터를 가져와서, 워크플로우를 만들고 이것저것을 하게 되겠죠.
- 다만, 결국 데이터를 가져오기 위해서는 python에서 py2neo를 설치하고, 여기서 bolt라는 연결방식으로 neo4j에 접속하여 데이터를 가져오게 됩니다. 앞서 이슈에서 본 것처럼 py2neo는 상대적으로 좀 불안정하게 느껴지기도 해요. 만약 이런 식이라면, 저는 차라리, 데이터로부터 csv를 저장하는 임시 저장소를 만들고, csv로부터 데이터를 다시 긁어오는 식으로 처리하는 것이 더 깔끔하게 느껴지기도 합니다만, 뭐 생각해보니 그건 너무 보안상도 그렇고 문제가 많겠군요.
댓글남기기