레이블과 속성을 가진 노드
Part 1의 점과 선에 ‘무엇인지’와 ‘어떤 값을 가졌는지’를 붙여, 실제 그래프 데이터베이스가 노드를 저장하는 방식을 봅니다.
이번 회차, 내 속도로.
기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 26로 돌아옵니다.
난이도·관심 주제 고르기
1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.
이렇게 다녀와요 1단계 · 약 12분
- 출발 · DAY 26레이블·속성
- 1. 관심 주제레이블·관계 타입·속성 이름 규칙추가 11 · 새 추가 수업
- 복귀 · DAY 26원래 회차 이어가기
- 레이블·관계 타입·속성 이름 규칙 · DAY 26·27에서 레이블·관계·속성을 배운 뒤, 이름을 잘못 지어 질의가 조용히 틀리는 경우를 미리 막기 위해 옵니다.
선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.
핵심 개념
Part 1의 그래프에는 점과 선만 있었습니다. 실제 시스템에서는 각 점이 사람인지 연구실인지, 이름이 무엇인지도 함께 저장해야 합니다. 속성 그래프(labeled property graph, LPG)는 노드에 레이블(label)과 속성(property)을 붙여 이 정보를 담습니다. Part 2의 예제는 사람 6명(민수·지아·서준·하린·도윤·유나), 연구실 2곳(대전의 그래프연구실, 서울의 언어연구실), 논문 4편으로 이루어진 ‘연구소 그래프’를 씁니다.
레이블은 노드의 종류를 나타내는 이름표입니다. :Person이 붙은 노드는 사람 묶음에 속하고, 한 노드에 레이블을 여러 개 붙일 수도 있습니다. 속성은 name: '민수', role: '연구원'처럼 키와 값의 쌍입니다. 값으로는 문자열·정수·실수·참거짓·날짜, 그리고 같은 타입 값의 목록 등을 씁니다.
Cypher에서는 노드를 괄호로 씁니다. (:Person {name:'민수', role:'연구원'})에서 괄호는 노드, 콜론 뒤는 레이블, 중괄호 안은 속성입니다. MATCH (p:Person) RETURN p.name은 레이블이 Person인 노드를 모두 찾아 이름을 돌려줍니다. 이처럼 레이블은 질의가 살펴볼 범위를 좁히는 역할도 합니다.
같은 레이블이라도 속성 집합이 같을 필요는 없습니다. 민수 노드에는 email이 있고 서준 노드에는 없어도 둘 다 :Person입니다. 이 유연함 덕분에 데이터를 빨리 넣을 수 있지만 빠진 값과 중복이 생기기 쉽습니다(DAY 29의 제약). 또 레이블은 온톨로지의 클래스와 달리 상속이나 추론을 하지 않습니다. :Student를 붙였다고 :Person이 저절로 붙지는 않습니다.
작은 예제로 따라가기
연구소 그래프의 노드 12개를 레이블별로 세면 :Person 6개, :Lab 2개, :Paper 4개입니다.
민수 노드 (:Person {name:'민수', role:'연구원'})는 레이블 1개와 속성 2개를 가집니다.
민수 노드에만 email이 있어도 MATCH (p:Person)은 민수와 서준을 모두 찾고, 서준의 p.email은 null로 돌아옵니다.
직접 실험해 보기
레이블 필터를 :Person → :Lab → :Paper로 바꾸며 강조되는 노드를 보고, 노드 하나를 눌러 레이블과 속성 표를 확인한 뒤 footer의 레이블별 노드 수를 적으세요.
노드의 레이블과 속성 읽기
노드를 누르면 그 노드의 레이블과 속성이 표에 나온다. 위 줄은 :Lab, 가운데 줄은 :Person, 아래 줄은 :Paper.
| 키 | 값 |
|---|---|
| 레이블 | :Person |
| name | '지아' |
| role | '교수' |
| 'jia@lab.kr' |
(:Person {
name: '지아',
role: '교수',
email: 'jia@lab.kr'
})MATCH (n)
RETURN labels(n), count(*):Person 속성 키 조합 — {name, role, email} ×2 · {name, role} ×4
:Lab 속성 키 조합 — {name, city} ×2
:Paper 속성 키 조합 — {title, year} ×4
이번에는 직접 풀어 보세요
정답을 보기 전에 계산과 이유를 적어 보세요. 해설과 비교하고 확인 표시를 남기면 완료할 수 있습니다.
힌트 보기
괄호 안에 :레이블과 {키: 값}을 씁니다. 연도를 숫자로 둘지 문자열로 둘지도 정하세요.
풀이와 비교하기
(:Paper {title:'지식 그래프 구축', year:2021})입니다. 레이블 1개(Paper), 속성 2개(title, year)입니다. year를 정수로 두어야 year >= 2020 같은 비교와 정렬이 숫자 기준으로 동작합니다.
풀이와 확인 표시는 이 브라우저에 저장됩니다.
오늘 이해한 것과 다시 볼 것
계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.
메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.오늘의 이해 확인
(:Person {name:'민수', role:'연구원'})에서 Person은 무엇인가요?
완료 조건: 확인 퀴즈 정답 · / 직접 풀기 0/1
더 깊이 읽기
예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.
What is a graph databaseNeo4j Getting StartedSurvey of graph database modelsAngles & Gutierrez (2008)이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.