다양한 라벨과 정점/간선 모델링 방법
이전 편에서는 그래프 데이터베이스의 가장 기초가 되는 정점(Vertex), 간선(Edge), 속성(Property), **라벨(Label)**에 대해 알아보았습니다. 이번에는 한 단계 더 나아가서, 여러 개의 정점 유형과 그 사이의 관계를 어떻게 표현하는지를 설명드립니다.
✅ 1. 여러 유형의 정점을 하나의 그래프에 담을 수 있다
관계형 DB에서는 여러 테이블을 만들어야 할 정보를, 그래프 DB에서는 한 그래프 안에서 라벨로 구분할 수 있습니다.
📊 예시: 직원과 부서 테이블
관계형 DB 구조는 다음과 같습니다:
Employee Table | ||
emp_id | name | dept_id |
1 | Marko | 101 |
Department Table | |
dept_id | name |
101 | HR |
🔁 이를 그래프 DB로 바꾸면:
- 직원과 부서 모두 정점(Vertex)으로 표현
- 정점 라벨(Vertex Label)로 employee, department을 구분
- 간선(Edge)로 두 정점을 연결 (belongs_to)
[Marko] --belongs_to--> [HR]
정점1: Marko (label: employee, name: Marko)
정점2: HR (label: department, name: HR)
간선: belongs_to
✅ 2. 정점 라벨(Vertex Label)은 정점의 역할을 명확히 한다
JanusGraph에서는 여러 정점 유형이 혼재할 수 있습니다. 이럴 때 라벨을 통해 정점의 성격을 분명히 구분할 수 있습니다.
- employee 라벨 → 사람 정보
- department 라벨 → 조직 정보
- project 라벨 → 업무 단위
각 정점은 이름, 코드 등 속성을 가질 수 있고, 이 속성은 라벨과 관계없이 정의됩니다.
✅ 3. 간선 라벨(Edge Label)로 관계를 명확히 구분
정점이 많아질수록 간선의 의미를 정확히 파악하는 것이 중요해집니다. 예를 들어:
- works_on → 직원이 프로젝트에 참여
- belongs_to → 직원이 부서에 소속
- reports_to → 직원이 상사에게 보고
[Marko] --works_on--> [AI 프로젝트]
[Marko] --belongs_to--> [HR 부서]
[Marko] --reports_to--> [팀장]
→ 간선마다 의미가 다르기 때문에, 라벨을 통해 구체화
✅ 4. 그래프 모델링은 자유롭고 유연하다
JanusGraph는 다음과 같은 구조도 가능합니다:
- 하나의 정점에 여러 개의 속성
- 하나의 정점에서 다양한 관계로 연결되는 다수의 간선
- 간선 자체에 속성 부여 (예: joined_date, level, comment 등)
예시:
[Marko] --belongs_to (since: 2022)--> [HR]
[Marko] --works_on (role: Developer)--> [AI 프로젝트]
🧩 요약
요소 | 설명 | 예시 |
정점 라벨(Vertex Label) | 정점의 종류 | employee, department |
간선 라벨(Edge Label) | 관계의 종류 | belongs_to, works_on |
정점-정점 관계 | 간선으로 연결 | 직원 → 부서 |
간선 속성 | 관계에 부가 정보 추가 | joined_date: 2022 |
✅ 왜 이게 중요한가?
- 관계형 DB보다 현실 세계의 관계를 더 직관적으로 표현
- 정점/간선 라벨로 다형성 구조 쉽게 구현 가능
- 시스템 구조가 복잡해져도 한 눈에 이해 가능한 구조
'JanusGraph > JanusGraph 이론' 카테고리의 다른 글
JanusGraph 기초 개념 ④ / Hadoop과 Spark (0) | 2025.04.15 |
---|---|
JanusGraph 기초 개념 ③ / Gremlin 쿼리 언어로 그래프 탐색(+Cyper와 비교) (0) | 2025.04.15 |
JanusGraph 기초 개념 ① / 정점(Vertex), 간선(Edge), 속성(Property), 라벨(Label) (0) | 2025.04.15 |
JanusGraph의 핵심 이점 ③ / 실무 적용 중심으로 (0) | 2025.04.15 |
JanusGraph의 핵심 이점 ① / 트랜잭션 처리 중심으로 (0) | 2025.04.15 |