[영상] Neo4j 그래프 데이터베이스 튜토리얼
Neo4j & Cypher
[영상] Neo4j 그래프 데이터베이스 튜토리얼
온톨로지 & Knowledge Graph > Neo4j & Cypher
Neo4j가 RDBMS 와 다른 점 (조인 폭발 없음, 인접성 자유 탐색) 을 설명할 수 있다 Docker / Aura Cloud 두 가지 설치 경로의 장단점을 비교한다 Cypher 의 MATCH-WHERE-RETURN 패턴으로 가장 단순한 질의를 작성한다 Neo4j Browser 의 시각화 UI 가 디버깅에서 왜 강력한지 체감한다
영상 핵심 정리 — Neo4j 첫 만남
이 영상은 "Neo4j 가 왜 그래프DB 사실상 표준이 됐는가" 를 설치 → 첫 쿼리 → 시각화 흐름으로 보여준다.
1. Neo4j 가 RDBMS 보다 빠른 이유
[RDBMS: 5-hop 친구의 친구 찾기]
SELECT ... FROM users u1
JOIN friends f1 ON u1.id = f1.user_id
JOIN friends f2 ON f1.friend_id = f2.user_id
JOIN friends f3 ON f2.friend_id = f3.user_id
JOIN friends f4 ON f3.friend_id = f4.user_id
...
→ JOIN 폭발, 100만 사용자에서 분 단위 응답
[Neo4j: 같은 질의]
MATCH (me)-[:KNOWS*5]->(target)
→ '인접성' 그대로 탐색, 밀리초 단위
핵심 차이: 그래프DB 는 한 노드에서 인접 노드로 가는 비용이 O(1) 이다. RDBMS 는 매 JOIN 마다 인덱스 풀스캔이 든다.
Index-free Adjacency 비유: RDB 는 매번 책 뒤 색인을 뒤지지만, Neo4j 는 페이지에 다음 페이지 링크가 박혀 있다. 그래서 데이터가 수억 건으로 늘어도 한 홉 비용은 동일하다 — 다중 hop 이 많은 GraphRAG/사기탐지/추천에서 압도적인 이유.
2. 설치 — 어떤 걸 쓸까
| 방식 | 설치 | 지속성 | 비용 | 추천 |
|---|---|---|---|---|
| Sandbox | 0 (브라우저) | 임시 (며칠 후 만료) | 무료 | 첫날 맛보기 — 설치 실패율 0 |
| Docker (로컬) | docker run -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/test neo4j:5 | 영구 | 무료 | 학습/실습 본격 |
| Aura Cloud Free | 가입만 | 영구 | 무료 (500MB) | 협업/포트폴리오 |
| Aura Professional | 가입만 | 영구 | 월 $65~ | 프로덕션 |
선택 가이드 한 줄: 일단 만져보고 싶다 → Sandbox. 본격 학습 → Docker. 보안/오프라인 필수 (방산/공공) → Desktop 로컬. 협업/포트폴리오 → Aura Free 로 이관. 첫날부터 로컬 설치로 시작하면 환경 문제로 절반이 막힌다 — 1교시는 Sandbox 권장.
3. Cypher 첫 다섯 줄
// 노드 생성
CREATE (:Equipment {id: 'CNC-001', model: 'DMU 50', installed: 2022})
// 노드 + 관계
MATCH (e:Equipment {id: 'CNC-001'})
CREATE (e)-[:HAS_PART]->(:Part {name: '스핀들'})
// 조회
MATCH (e:Equipment)-[:HAS_PART]->(p:Part)
WHERE e.id = 'CNC-001'
RETURN e.model, p.name
// 1-hop 이웃 모두 가져오기 (디버깅 필수)
MATCH (e:Equipment {id: 'CNC-001'})--(neighbor)
RETURN neighbor
// 노드 개수 빠른 점검
MATCH (e:Equipment) RETURN count(e)
이 다섯 줄이면 작은 KG 한 개를 만들고 검증할 수 있다. 다음 reading 에서 더 깊이 들어간다.
4. Neo4j Browser — 왜 다른 도구로 못 가는가
대부분의 그래프DB 가 Browser 같은 시각 UI 가 약하다. Neo4j Browser 는:
- 쿼리 결과를 즉시 그래프 시각화 (관계 누락 한눈에 보임)
- 노드 더블클릭으로 확장 탐색 ("이 부품은 어디서 쓰이지?" 인터랙티브하게)
- 빌트인
:play movie-graph등 학습 데이터셋
→ 학습 곡선의 절반을 Browser 가 흡수한다.
5. 가장 흔한 함정 (지금 알아두기)
- 라벨 대소문자 혼용:
:equipmentvs:Equipment둘 다 다른 라벨로 취급됨. PascalCase 통일 - 관계 타입 형식:
:HAS_PART(대문자 + 언더스코어) 가 컨벤션 - MERGE 남용:
MERGE는 비싸다. 신규 데이터 적재 시CREATE, 멱등성 필요할 때만MERGE
다음 task 와의 연결
다음 reading 에서 Docker + Aura 설치를 직접 진행한다. 이 영상을 보고 "왜 Neo4j 인가" 가 머리에 들어왔다면, 다음 페이지에서 손가락이 가야 한다.
AI 에이전트에게 제조 설비-부품-공정 관계를 Neo4j Label Property Graph 모델로 설계하고 Cypher 쿼리를 작성하게 하세요.
Neo4j를 사용해 스마트팩토리 설비 온톨로지를 설계해줘. Equipment, Part, Process, Fault 노드와 HAS_PART, RUNS_ON, CAUSES 관계를 Cypher로 생성하는 CREATE 문과, 'CNC-001 설비와 연결된 모든 부품 및 최근 고장 이력'을 조회하는 MATCH 쿼리를 작성해줘. Docker로 Neo4j를 로컬 실행하는 명령어도 포함해줘.
- • Neo4j 는 노드-관계-속성(Label Property Graph) 모델 — RDF 보다 실무 친화적
- • 로컬 학습은 Docker 1줄(`docker run neo4j`), 협업/배포는 Aura Free 500MB 추천
- • Cypher 는 '그래프를 그리듯' 쓰는 선언형 — `(:Equipment {id:'CNC-001'})-[:HAS_PART]->(:Part)`
- • 초보의 가장 큰 함정: 노드 라벨/관계 타입 명명 일관성 — 한 번 어긋나면 쿼리 전체가 무력화
