Neo4j
그래프 데이터베이스입니다. 데이터를 테이블이 아닌 **노드(Node)**와 관계(Relationship) 형태로 저장합니다.
어디에 쓰이나요?
- 지식 그래프(Knowledge Graph): 개념 간의 관계를 저장하고 탐색 (예: “서울 → 수도 → 대한민국”)
- GraphRAG: 문서에서 추출한 엔티티와 관계를 그래프로 구성하여 LLM의 답변 품질 향상
- 소셜 네트워크: 사용자 간 팔로우, 친구 관계 분석
- 추천 시스템: “이 상품을 산 사람이 함께 산 상품” 같은 관계 기반 추천
- 사기 탐지: 계좌 간 자금 흐름을 그래프로 분석
관계형 데이터베이스에서 여러 테이블을 JOIN하여 조회해야 하는 복잡한 관계 데이터를, Neo4j에서는 직관적인 그래프 쿼리 언어인 Cypher로 간결하게 표현할 수 있습니다.
Docker Compose
services:
neo4j:
image: neo4j:5-community
container_name: neo4j
restart: unless-stopped
ports:
- "7474:7474"
- "7687:7687"
environment:
- NEO4J_AUTH=neo4j/changeme
- NEO4J_PLUGINS=["apoc"]
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
volumes:
neo4j_data:
neo4j_logs:
접속 확인
브라우저에서 http://localhost:7474로 Neo4j Browser에 접속합니다.
- Username: neo4j
- Password: changeme
또는 CLI로 확인합니다.
docker exec -it neo4j cypher-shell -u neo4j -p changeme "RETURN 1 AS result"
기본 정보
| 항목 | 값 |
|---|
| HTTP 포트 (브라우저) | 7474 |
| Bolt 포트 (드라이버) | 7687 |
| 기본 사용자 | neo4j |
| 기본 비밀번호 | changeme |
환경 변수
| 변수 | 설명 |
|---|
NEO4J_AUTH | 인증 정보 (사용자/비밀번호, none으로 인증 비활성화) |
NEO4J_PLUGINS | 설치할 플러그인 목록 (JSON 배열) |
NEO4J_dbms_memory_heap_initial__size | 초기 힙 메모리 |
NEO4J_dbms_memory_heap_max__size | 최대 힙 메모리 |
NEO4J_dbms_memory_pagecache_size | 페이지 캐시 크기 |
Neo4j 환경 변수에서 설정 키의 .은 _로, _는 __로 변환됩니다. 예: dbms.memory.heap.initial_size → NEO4J_dbms_memory_heap_initial__size
APOC 플러그인
APOC(Awesome Procedures on Cypher)은 Neo4j에서 자주 사용되는 확장 프로시저 모음입니다.
environment:
- NEO4J_PLUGINS=["apoc"]
라이선스
| 구분 | 내용 |
|---|
| 라이선스 | GPL v3 (Community), 상용 라이선스 (Enterprise) |
| 개인 사용 | Community 에디션 자유롭게 사용 가능 |
| 상업적 사용 | Community는 GPL v3 조건 준수 필요 (소스 공개 의무). 사내 서버에서 직접 사용하는 것은 가능하나, Neo4j를 포함한 소프트웨어를 배포하는 경우 GPL 조건이 적용됨. Enterprise 기능이 필요하면 유료 라이선스 구매 필요 |