나는 왜 Graph DB를 시작하였나.
사실 이걸 시작한 이유는 단 하나 입니다. 핫하다. 지난 5.5달간의 컴퓨터 교육후 백앤드라는 것이 궁금해 지기도 했고, 옛날부터 정보의 관계망을 만들어보면 좋겠다고 생각했습니다. 예를 들면, 한글의 동의어 사진이라던지 영어의 동의어 사전 같은 것이 있을 수 있고, 주식을 한다면 어떤 뉴스가 생겼을 떄 해당하는 주식의 가격이 어떻게 변하는 지 등등 이러 저러 짱구를 굴려보고 있었습니다. 교육때문에 바쁘다는 핑계로 시작하지 못했지만 이제 시작해보려 합니다.
시작하기 앞서..
Algorithms: Practical Examples in Apache Spark and Neo4j:
By Mark Needham & Amy Hodler
Published by O'Reilly Media
위 책으로 제 여행을 시작할 것입니다. neo4j.com/graph-algorithms-book/ 에서 다운 받을 수 있으며, 2020년 오늘 현재, 3rd edition으로 진행하려 합니다. 그러므로, 진행하시는 시점에 따라 내용이 다를 수 있습니다. 또한 이론적인 내용들은 최대한 건너 띄고(왜냐 나도 모르니까..) 기술적인 부분을 해보겠습니다.
무작정 시작하기: 그래프가 뭔데?
그래프는 노드 또는 vertices(꼭지점)으로 이루어져 있으며 그들 사이의 연결을 관계라고 칭한다. 라고 합니다. 한마디로 노드들의 관계망을 만든 것을 그래프라고 보시면 됩니다. 그래서 우리가 알고있든 엑셀 그래프는 여기서 그래프라 칭하지 않습니다. 왜냐면 각 노드의 연결관계를 보여주는게 아니기 때문이죠. 말이 개떡같다고요? 그럼 위의 그래프를 항상 참고 하도록 합시다.
위의 사람과 자동차의 관계를 문장으로 표현하면 다음과 같습니다.
- A는 B와 결혼했다(MarriedTo).
- A는 자동차를 운전한다.
- B는 자동차를 소유한다.
즉 구조를 보면, "A가 B를 verb한다"라는 정보를 그래프로 표현한 것을 볼 수 있습니다. 그래서 ~가 에 해당하는 곳에서 화살표가 시작하고 ~를 에 해당하는 곳에서 화살표가 끝납니다. 이러한 관계가 쌓이고 쌓인다면 많은 것들을 밝혀낼 수 있겠죠. 예를 들면 이 코시국엔 확진자와 접촉자간의 밀접도를 숫자화 해서 분석하는 것도 가능할 것입니다. 이런 관계를 모델링 또는 기입 한 후엔 분석을 해야겠죠. 분석을 하는 부분을 graph algorithms라고 칭합니다.
그래프 알고리즘과 분석이란?
그래프 알고리즘은 그래프 분석을 위한 도구들의 부분집합이다.
그래프 분석이란 우리가 하는 무언가를 칭하며, 연결된 데이터를 분석하기 위해 그래프 기반 방법을 쓰는 것을 칭합니다. 다양한 사용법이 있는데
- 그래프 데이터 추출
- 기본 통계
- 그래프 시각적 탐색
- 머신러닝에 포함
이 책에선 좀더 반복적으로 사용할 수 있고 범용성 있는 분석을 위한 컴퓨테이션러 분석 과 데이터과학적 사용을 그래프 알고리즘이라 칭합니다.
그래프 알고리즘 사용 예
그래프 분석 우왕 굳 이런 느낌의 이야기들이네요.
어쩃든 그렇답니다. 일일이 다 읽고 쓰기엔 어려울거 같네요. 본론으로 러쉬 합시다.
플랫폼 선택
Apache spark vs neo4j
원래 목표는 두가지 다 사용하는 것이었습니다. 하지만 아파치를 쓰려면 하둡이 설치되어 있어야 하는 것 같습니다. 지난 교육동안 하둡 설치 방법을 배웠는데, 왠지 윈도우에 깔 물건은 아닌거 같아 추후에 Ubuntu + Windows 세트로 만든뒤, Ubuntu위에서 Apache를 돌리도록 하겠습니다.
Neo4j 설치하기
자 이제 본격적으로 시작해보겠습니다. 사실 저도 허접 찌끄레기라 여러가지 문제가 생길 수 있습니다. 다 같이 해결하면서 그렇게 크는거죠 뭐.
준비물
- Neo4j Desktop(현재 1.3.11) - neo4j.com/download/
- openJDK11.0.2- jdk.java.net/archive/
- 왜 JDK 11이 필요한가?
- 사실 저도 몰랐죠. 하지만 오류가 나던걸요. neo4j 자체 설치는 별거 없으니 JDK 11을 깔아보도록 합시다.
- 참고 사이트 :
stackoverflow.com/questions/52511778/how-to-install-openjdk-11-on-windows
Open JDK 설치하기
순서는 다음과 같습니다.
다운받기 -> 압축해제하기 -> 환경변수 설정하기 -> 잘 되었는지 확인하기.
1. 다운로드 받기
우린 윈도우니까 위의 주소에서 다음을 다운 받습니다.
제대로 받으셨다면 다음과 같은 모습을 볼 수 있습니다.
2. 압축 해제하기
압축해제는 사실 어디다 해도 상관없습니다. 다만, 관리하기 편하도록 C아래 Program에 압축 해제 합시다.
3. 환경변수 설정하기
저같은 초보에게 가장 머리깨지는 부분입니다. 해봅시다.
시스템 -> 고급시스템 설정 -> 고급탭 -> 환경변수까지 들어가 봅시다
자 이제 시작입니다.
프로그램 설치를 많이 해보셨겠지만, 압축만 해제한다고 제대로 돌아가는 프로그램이란 그리 많지 않습니다. 쉽게 비유하자면 설치되었다는 것을 등록해주어야 합니다. 여기선 여러가지 방법이 있겠지만 JAVA_HOME 위치를 변수로 선언한 후 등록하는 방법으로 해보겠습니다.
대충 읽어보니, 이런 방식으로 했을때, 만약 JAVA 버전을 변경해야 할때, JAVA_HOME 위치만 변경함으로서 좀더 관리가 쉬울 수 있다네요.
시스템 변수에 JAVA_HOME 추가하기
시스템 변수 아래에 보시면 새로만들기가 있을겁니다. 거기에 다음과 같이 입력해 줍니다. 단, java를 다른곳에 압축해제 했다면 그곳으로 바꿔주셔야 합니다.
Path에 등록하기
제가 원래 읽었던 글에서 가장 헷갈렸던 부분이기도 한데, 원래는 PATH라고 대문자로 쓰여야 하나 봅니다. 헌데 그냥 Path라고 쓰여있더라고요. 역할은 cmd창 같은곳에서 Java, python등을 사용할때 이 문자가 누구를 가르키고 있는지 관리해주는 부분이라고 보면 될거 같습니다. 애매하다고요? 좀더 공부해야 겠네요.
%JAVA_HOME%\bin 입니다. 즉 JAVA_HOME(저희의 경우 C:\Program Files\Java\jdk-11.0.2) 아래(\) bin을 Java의 위치로 설정하겠다 로 보시면 됩니다.
%JAVA_HOME%\bin = C:\Program Files\Java\jdk-11.0.2\bin
이 비슷한 방법은 리눅스에서도 많이 쓰이기도 합니다. 여튼 이렇게 java를 환경 변수로 설정했습니다.
4. 확인해보기
java -version
커멘드 창이 어색하신 분들도 있을 것입니다. 저는 속성파니까, 아주 빠르게 해보겠습니다.
ctrl + r -> 실행 나옴 -> cmd 입력 -> java -version 입력
ctrl + r -> cmd
java -version
제대로 환경변수가 설정되었다면 다음과 같은 모습을 볼 수 있습니다.
그래서 neo4j는?
사실 그 친구는 설치가 어렵지 않아서... 실행하면 마주할 화면을 켜보겠습니다.
실행하시면 되는데, 만약 Java가 제대로 설치되어 있지 않으면 5번째칸에서 오류가 날 것입니다.
성공적으로 실행하면 다음과 같은 화면을 만날 것입니다. 오른쪽엔 제가 깔짝거리던 것이고, Movie Database가 기본 예제입니다. 아 그러고보니 라이센스키 뭐시기 있었는데, 그거 그냥 잘 따라하면 되요.
'기타 > 프로그래밍' 카테고리의 다른 글
[그래프 데이터베이스][무작정해보기] [6/30] A*(A-star) Algorithm 그림으로 이해하기. (0) | 2021.01.10 |
---|---|
[그래프 데이터베이스][무작정해보기] [5/30] Shortest Path Algorithm 사용해보기 (0) | 2021.01.03 |
[그래프 데이터베이스][무작정해보기] [4/30]Dijkstra's Algorithm(다익스트라, 데이크스트라 알고리즘) (0) | 2021.01.02 |
[그래프 데이터베이스][무작정해보기] [3/30] 웹상의 CSV로 부터 Graph 생성하기 (1) | 2021.01.01 |
[그래프 데이터베이스][무작정해보기] [2/30] 저장위치 설정 / 플러그인 설치 / 앞으로 다룰 알고리즘 (0) | 2020.12.30 |