🏆45분
Day 1 도전: 영화 추천 데이터 모델 설계
그래프 데이터 모델 기초
Day 1 도전: 영화 추천 데이터 모델 설계
그래프 이론 & Neo4j 입문 > 그래프 데이터 모델 기초
Netflix의 추천 시스템을 그래프로 설계해보자
도전 목표
실제 추천 시스템의 핵심은 "사용자-아이템-사용자" 관계입니다. 이를 그래프로 모델링하면 "이 영화를 본 사람들이 또 본 영화" 같은 쿼리가 자연스럽게 가능해집니다.
이 과제를 통해 Day 1에서 배운 모든 개념을 종합 실습합니다:
- Property Graph 모델 설계 (노드, 관계, 속성, 레이블)
- Ontology 문서화 (스키마 정의)
- Cypher CRUD 쿼리 작성
- 관계 탐색 기반 추천 로직 구현
요구사항
시나리오
당신은 스트리밍 서비스의 데이터 아키텍트입니다. 영화 추천 시스템을 위한 그래프 데이터 모델을 설계하세요.
요구사항
엔티티 (노드):
- User: 사용자 정보 (이름, 가입일, 구독 플랜)
- Movie: 영화 정보 (제목, 개봉년도, 장르)
- Actor: 배우 정보 (이름, 출생년도)
- Director: 감독 정보 (이름)
- Genre: 장르 정보 (이름)
관계:
- User -[WATCHED]-> Movie (시청일, 평점, 시청 완료 여부)
- User -[LIKES]-> Genre
- Movie -[BELONGS_TO]-> Genre
- Actor -[ACTED_IN]-> Movie (역할)
- Director -[DIRECTED]-> Movie
산출물
1. Ontology 문서 (텍스트)
아래 양식으로 정리하세요:
에디터 로딩 중...
2. 샘플 데이터 (Cypher)
최소 아래 규모로 생성하세요:
에디터 로딩 중...
3. 추천 쿼리 3개 (Cypher)
에디터 로딩 중...
보너스 과제
에디터 로딩 중...
평가 기준
| 항목 | 배점 |
|---|---|
| Ontology 문서 완성도 (노드/관계/규칙) | 30% |
| Cypher 문법 정확성 | 30% |
| 추천 쿼리 로직 적절성 | 30% |
| 코드 가독성 및 주석 | 10% |
힌트 보기
가변 길이 패턴: -[:WATCHED*2]-> 는 "본 영화를 본 사람이 본" COLLECT 함수로 영화 목록 그룹핑 WHERE NOT 으로 이미 본 영화 제외 ORDER BY + LIMIT으로 상위 N개 추천 COUNT(DISTINCT ...) 로 중복 제거 후 카운트 WITH 절로 중간 결과를 다음 쿼리에 전달