Graph DB 와 Neo4j 설치
1. Graph DB 란?
1) 정의

(1) 서비스와 사용자 사이에 관계가 및 활동이 다양해지고 소셜 네트워크의 발전으로 인한 사용자와 사용자 사이의 관계가 긴밀해지면서 대두된 관계 중심의 DB Engine
(2) 노드, 엣지, 프로퍼티를 그래프 구조를 사용하여 데이터를 저장하고 표현하는 방식

(3) 노드(node) : 추적 대상이 되는 사람, 기업, 계정 등 실체를 대표하는 Entity
(4) 엣지(edge) : 그래프나 관계라고도 하며 노드와 노드를 연결하는 선이자 관계
(5) 프로퍼티(property) : 노드나 엣지의 상세한 정보를 기술하는 Attribute
2) Cypher
(1) 현재 서비스 중인 다양한 GraphDB DBMS 들이 있다.
A. Kakao의 S2 Graph
B. Neo4j의 Neo4j
C. Spark의 Graph X
D. bitnine의 Postgressql를 기반으로 한 Agensgraph
(2) 그 중에 GraphDB를 대중화 시킨 Neo4j가 사용적인 우위를 점하고 있다.

(3) Neo4j에서 GraphDB에 맞도록 정의한 언어가 Cypher Query Language 이고 이를 통해 GraphDB가 발전했으며 대부분의 GraphDB DBMS들이 해당 언어를 차용하고 있다.
(4) example
MATCH (p:Product)-[:CATEGORY]->(l:ProductCategory)
-[:PARENT*0..]-(:ProductCategory {name:"Dairy Products"})
RETURN p.nam
2. Neo4j

1) 설치
(1) Docker를 통한 간단한 설치 진행
Docker 설치 예제는 아래와 같이 https://yhjin.tistory.com/7
(2) Neo4j 공식 이미지
https://hub.docker.com/_/neo4j
(3) 아래는 os와 기본적으로 필요한 패키지만 설치하여 공유한 이미지 이다.
https://hub.docker.com/repository/docker/behind520/neo4j_korean
(4) 자세한 설명은 아래 내용을 참조
https://yhjin.tistory.com/43
(5) 설치 완료 후 UI Tool에 접근하면 다음과 같은 화면을 만날 수 있다.
http://localhost:7474/browser/

(6) ID와 Passward를 입력 후 접속하면 Default Database에 접근이 되는데 Community 버전에서는 deafault Database만 사용이 가능하다
2) 기본 문법
(1) 서버 연결 (위와 같은 UI 생성을 확인)
:server connect
(2) 서버 연결 종료
:server disconnect
(3) 데이터베이스 조회 전체 조회
:dbs
(4) 데이터베이스 생성 :
create database <DB Name>
I. Community 버전에서는 사용불가 하다.
II. 생성 시도 시 Error가 발생된다.

III. Community 버전에서 테이블 명칭 변경 방법

A. conf 파일을 연다. (위 Docker로 셋팅했다면 .,/db_extend/conf 에 위치)
B. dbms.default_database=<DB Name> 을 추가 한다.
가) DB명은 3자 이상 63자 이하여야 함
C. 저장 후 서버를 내렸다가 올린다. (아래는 위 설정 예제)
가) docker Container를 정지
docker stop neo4j
나) docker Container를 시작
docker start neo4j
다) 또는 재식작
docker restart neo4j
D. DB 연결 (변경 확인)
:use <DB Name>

3. 출처
2) https://tech.kakao.com/2016/01/29/opensource-1-s2graph/
3) https://db-engines.com/en/ranking/graph+dbms
4) https://neo4j.com/docs/operations-manual/current/docker/configuration/
5) https://neo4j.com/docs/cypher-manual/current/administration/