Graph Database (그래프 데이터베이스)
정의
노드(Node)와 관계(Relationship)를 기본 데이터 단위로 사용하는 데이터베이스. SQL 기반의 관계형 데이터베이스(RDBMS)와는 달리, 엔티티 간의 관계를 명시적으로 구조화한다.
핵심 구성 요소
노드 (Node)
- 개체(Entity)를 나타냄
- 프로퍼티(Attribute)를 가짐
- 예: Movie, Person, User, Product
관계 (Relationship)
- 노드 간의 연결을 나타냄
- 방향성을 가짐 (directed)
- 프로퍼티를 포함할 수 있음
- 예: RATED (평가), ACTED_IN (출연), BELONGS_TO (속함)
프로퍼티 (Property)
- 노드나 관계의 속성값
- 키-값 쌍으로 저장
- 예: title=“Toy Story”, rating=4.5, timestamp=2024-01-15
관계형 DB와의 차이점
| 특성 | RDBMS | Graph DB |
|---|---|---|
| 기본 단위 | 테이블 (Table) | 노드 + 관계 |
| 관계 표현 | 외래키 (FK) | 직접 연결 (Edge) |
| 쿼리 복잡도 | JOIN 수 증가 시 성능 저하 | 관계 깊이와 무관한 일정 성능 |
| 유연성 | 스키마 변경 어려움 | 유연한 스키마 |
Graph DB의 장점
✅ 빠른 관계 조회: JOIN 없이 직접 연결된 데이터 즉시 접근
✅ 의미론적 명확성: 관계의 의미를 명시적으로 표현
✅ 복잡한 네트워크 분석: 다중 레벨의 관계 쿼리 효율적
✅ 유연한 스키마: 새로운 관계 타입 추가 용이
실제 사용 사례
- 소셜 네트워크: User-FOLLOWS-User, User-LIKES-Post
- 추천 시스템: Movie-RATED-User, User-LIKES-User (협업 필터링)
- 지식그래프: Entity-RELATED_TO-Entity (DBpedia, Wikidata)
- 네트워크 분석: 영향력 분석, 커뮤니티 탐지
- 온톨로지: Concept-SUBCLASS_OF-Concept
Neo4j
가장 널리 사용되는 오픈소스 그래프 데이터베이스.
특징:
- Cypher 쿼리 언어 제공
- ACID 준수
- 스케일링 가능 (클러스터 지원)
- Neo4j Sandbox (무료 클라우드 환경)
온톨로지와의 연관성
온톨로지 설계에서:
- 클래스(Class) → 노드의 레이블
- 프로퍼티(Property) → 노드의 프로퍼티
- 관계(Relationship) → 그래프의 관계
- 상속 계층 → 노드 간 IS-A 관계