30분
가변 길이 관계 탐색
Cypher 패턴 매칭 & 관계 탐색
가변 길이 관계 탐색
그래프 이론 & Neo4j 입문 > Cypher 패턴 매칭 & 관계 탐색
1촌, 2촌, 3촌... N촌까지
이 실습의 목표
가변 길이 관계는 그래프 DB만의 강점입니다. SQL에서는 JOIN 개수를 미리 알아야 하지만, Cypher에서는 범위만 지정하면 됩니다.
가변 길이 관계 문법 총정리:
| 문법 | 의미 | 예시 |
|---|---|---|
* | 모든 길이 (위험!) | 0~무한 |
*N | 정확히 N홉 | *3 = 3홉 |
*N..M | N~M홉 | *2..5 = 2~5홉 |
*..M | 0~M홉 | *..4 = 0~4홉 |
*N.. | N홉 이상 | *3.. = 3홉~ |
핵심 원칙: 항상 상한(M)을 설정하세요. 없으면 성능 폭발!
실습 과제
샘플 데이터 준비
에디터 로딩 중...
1. 고정 길이 관계
에디터 로딩 중...
2. 가변 길이 관계
에디터 로딩 중...
3. 경로 변수 사용
에디터 로딩 중...
4. 모든 최단 경로
에디터 로딩 중...
5. 방향 무시 탐색
에디터 로딩 중...
6. 여러 관계 타입에 대한 가변 길이
에디터 로딩 중...
성능 주의사항 (매우 중요!)
에디터 로딩 중...
에디터 로딩 중...
PROFILE로 성능 확인하기
에디터 로딩 중...
주의사항
| 실수 | 문제 | 해결 |
|---|---|---|
* 상한 없이 사용 | 성능 폭발 (지수적 증가) | *..10 상한 설정 |
| 순환 경로 무시 | 무한 루프 | Neo4j는 자동 중복 방지하지만, 명시적 종료 조건 권장 |
| DISTINCT 누락 | 중복 결과 다수 반환 | DISTINCT 추가 |
| 방향 무시(-) + 가변 길이 | 탐색 공간 2배 증가 | 방향 명시 권장 |
| shortestPath에 WHERE 조건 | 일부 조건은 shortestPath 내부에서 지원 안 함 | 외부 WHERE 사용 |
에디터 로딩 중...