제작 2 · 도메인 그래프 설계서
작은 온라인 강의 플랫폼을 예제로, 질문 5개에서 출발해 모델·Cypher·제약·인덱스까지 이어지는 그래프 설계서를 만듭니다.
이번 회차, 내 속도로.
기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 50로 돌아옵니다.
난이도·관심 주제 고르기
1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.
이렇게 다녀와요 1단계 · 약 12분
- 출발 · DAY 50모델·쿼리·제약
- 1. 관심 주제ACID·격리 수준추가 19 · 새 추가 수업
- 복귀 · DAY 50원래 회차 이어가기
- ACID·격리 수준 · DAY 49에서 트랜잭션 순회(OLTP) 워크로드를 봤다면, 그 ‘트랜잭션’이 무엇을 보장하고 무엇을 보장하지 않는지 확인하러 옵니다.
선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.
핵심 개념
두 번째 제작 과제는 하나의 도메인에 대한 그래프 설계서입니다. 설계서는 질문 5개 → 레이블·관계 타입·속성 모델 → Cypher 질의 3개 → 제약·인덱스 순서로 씁니다. Part 2에서 배운 노드·관계·속성 선택(DAY 41), 중간 노드(DAY 42), MERGE와 집계(DAY 34), 제약(DAY 29)과 인덱스(DAY 46)를 한 문서에 모으는 것이 목표입니다.
고정 데이터는 작은 온라인 강의 플랫폼입니다. 학생 4명: 가온(gaon@ex.kr), 나래(narae@ex.kr), 다온(daon@ex.kr), 라희(rahee@ex.kr). 강의 4개: C1 ‘그래프 기초’, C2 ‘Cypher 입문’, C3 ‘RDF와 SPARQL’, C4 ‘GraphRAG 실습’. 강사 2명: 한별(C1·C2 담당), 미르(C3·C4 담당). 선수 관계: C2와 C3은 C1을, C4는 C2를 먼저 들어야 합니다. 수강 기록: 가온 C1(완료)·C2(60%), 나래 C1(완료)·C3(30%), 다온 C1(20%), 라희 C1(완료)·C2(완료)·C4(10%).
판단 기준은 세 가지입니다. 첫째, 모든 질문을 모델의 노드·관계·속성으로 답할 수 있어야 합니다. 둘째, 각 질문의 Cypher가 인덱스가 있는 앵커에서 출발해야 합니다. 셋째, 업무 키(학생 email, 강의 code)에 유일성 제약을 둡니다. 실제 DB 실행은 선택이며, 실행했다면 Neo4j 버전과 에디션을 적으세요(존재·타입 제약은 Enterprise 기능입니다). 진도처럼 시간이 지나며 바뀌는 값이 있으니 모델의 한계도 한 줄 남깁니다.
작은 예제로 따라가기
선수 체인: MATCH (c:Course {code:'C4'})-[:REQUIRES*1..3]->(pre:Course) RETURN pre.code는 C2, C1을 돌려줍니다.
강사별 수강생: 한별의 강의 C1(4명)과 C2(가온·라희)를 합치면 수강 관계는 6개이고, count(DISTINCT s)로 세면 학생은 4명입니다.
수강의 상태와 진도는 학생과 강의 사이의 사실이므로 ENROLLED 관계 속성에 둡니다. 과제·수료증까지 붙는다면 :Enrollment 중간 노드로 바꿉니다.
직접 실험해 보기
실험에서 값을 확인하고 아래 제작 과제에 자신의 계산과 판단을 남기세요.
도시를 속성으로 둘까, 노드로 둘까
MATCH (:Person {name: '하린'})-[:LIVES_IN]->
(c:City)<-[:LIVES_IN]-(b:Person)
RETURN b.name| b.name |
|---|
| 도윤 |
| 유나 |
질문에서 출발한다. 자주 따라가거나 여럿이 공유하는 값(도시)은 노드로, 그 대상만의 단순 조회 값(나이)은 속성으로. 유나의 city는 일부러 대전시로 적었다.
나의 제작 노트
계산과 판단을 남기고 기준에 따라 직접 점검하세요. 양식을 채운 40자 이상의 노트가 필요합니다.
- 그래프가 답해야 할 질문 5개를 적고, 질문마다 출발할 앵커 노드와 따라갈 관계를 표시합니다(예: 학생 email → ENROLLED → 강의).
- 레이블·관계 타입·속성 표를 만들고, 각 값을 속성·노드·관계 중 어디에 둘지 근거를 한 문장씩 적습니다.
- 고정 데이터를 그 모델로 옮겨 노드 수와 관계 수를 세어 적습니다. MERGE 문으로 써 보면 더 좋습니다.
- 질문 중 3개를 Cypher로 쓰고, 고정 데이터로 예상 결과를 손으로 계산합니다.
- 업무 키의 유일성 제약과 앵커 조회용 인덱스를 정하고, 각각 어느 질문을 위한 것인지 적습니다.
- 시간 변화·허브·빠진 값 중 이 모델의 한계 하나와 대응 방안을 씁니다.
내 결과물 점검
자동 채점이 아닙니다. 작성한 계산과 근거를 확인한 뒤 표시하세요.
풀이와 확인 표시는 이 브라우저에 저장됩니다.
오늘 이해한 것과 다시 볼 것
계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.
메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.오늘의 이해 확인
그래프 설계서에서 유일성 제약을 걸 속성을 고르는 기준으로 알맞은 것은?
완료 조건: 확인 퀴즈 정답 · / 제작 노트와 자기 점검 ·
더 깊이 읽기
예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.
What is graph data modeling?Neo4j Getting StartedCypher Manual: ConstraintsNeo4jCypher Manual: Search-performance indexesNeo4jCypher Manual: IntroductionNeo4j이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.