Graph DB 종류 및 특징
그래프 데이터베이스는 데이터 모델과 쿼리 언어에 따라 다양한 제품이 존재합니다.
1. 주요 Graph DB 비교
1.1 기본 정보
| 구분 |
Neo4j |
Amazon Neptune |
JanusGraph |
ArangoDB |
| 유형 |
Property Graph |
Property Graph & RDF |
Property Graph |
Multi-Model |
| 라이선스 |
Enterprise (상용) / Community (오픈소스) |
AWS 클라우드 서비스 |
Apache 2 (오픈소스) |
Enterprise (상용) / Apache 2 (오픈소스) |
| 쿼리 언어 |
Cypher |
Gremlin, SPARQL |
Gremlin |
AQL, Gremlin |
1.2 특징 및 강점
| 제품 |
핵심 강점 |
| Neo4j |
시장 선두, Cypher의 직관적 문법, ACID 트랜잭션 지원, 성숙한 에코시스템 |
| Amazon Neptune |
AWS 완전 관리형, Property Graph + RDF 멀티 모델, 높은 확장성/가용성 |
| JanusGraph |
분산 아키텍처, 수십억 노드 처리 가능, Cassandra/HBase/Bigtable 백엔드 연동 |
| ArangoDB |
그래프 + 문서 + 키-값 멀티 모델, 단일 시스템으로 다양한 데이터 처리 |
1.3 주요 사용 분야
| 제품 |
적합한 사용 사례 |
| Neo4j |
소셜 네트워크, 추천 시스템, 지식 그래프, IT 인프라 관리 |
| Amazon Neptune |
클라우드 네이티브 앱, RDF 기반 시맨틱 웹 프로젝트 |
| JanusGraph |
대규모 분산 그래프 처리, 빅데이터 분석 |
| ArangoDB |
관계형 + 비관계형 데이터 혼합 애플리케이션 |
2. 그래프 데이터 모델
2.1 Property Graph Model
대부분의 Graph DB가 채택하는 가장 실용적인 모델
┌──────────────────────────────────────────────────┐
│ Property Graph Model 구조 │
│ │
│ [Node] [Edge] [Node] │
│ ├─ id: 1 ├─ type: "친구" ├─ id: 2│
│ ├─ name: "철수" ├─ since: 2020 ├─ name: "영희"
│ └─ age: 25 └─ weight: 0.9 └─ age: 24
│ │
└──────────────────────────────────────────────────┘
| 구성 요소 |
설명 |
| 노드 (Node) |
엔터티를 표현, 프로퍼티 보유 |
| 엣지 (Edge) |
관계 정의, 방향성/유형/프로퍼티 보유 |
| 프로퍼티 (Property) |
노드/엣지의 속성 (키-값 쌍) |
채택 제품: Neo4j, JanusGraph, ArangoDB
2.2 RDF (Resource Description Framework) Model
시맨틱 웹 구현을 위한 표준 모델
┌──────────────────────────────────────────────────┐
│ RDF Triple 구조 │
│ │
│ Subject ──── Predicate ────→ Object │
│ (주어) (술어) (목적어) │
│ │
│ 예시: "철수" ──── "친구이다" ────→ "영희" │
└──────────────────────────────────────────────────┘
| 특징 |
설명 |
| 데이터 표현 |
주어-술어-목적어 트리플 형태 |
| 초점 |
데이터 간 의미론적 관계 |
| 주요 용도 |
지식 그래프, 학술 연구, 온톨로지 |
채택 제품: Amazon Neptune (SPARQL 지원)
3. 쿼리 언어 비교
| 언어 |
개발사 |
특징 |
스타일 |
| Cypher |
Neo4j |
SQL 유사, 그래프 패턴을 시각적으로 표현 |
Declarative |
| Gremlin |
Apache TinkerPop |
다양한 백엔드 지원, 단계적 탐색 방식 |
Procedural |
| SPARQL |
W3C |
RDF 데이터 전용, 시맨틱 웹 표준 |
Declarative |
| AQL |
ArangoDB |
그래프 + 문서 쿼리 통합 지원 |
Declarative |
3.1 쿼리 예시 비교
“철수의 친구 찾기”
// Cypher (Neo4j)
MATCH (p:Person {name: "철수"})-[:친구]->(friend)
RETURN friend.name
// Gremlin (JanusGraph, Neptune)
g.V().has('name', '철수').out('친구').values('name')
# SPARQL (Neptune RDF)
SELECT ?friend WHERE {
:철수 :친구 ?friend .
}
4. 선택 가이드
어떤 Graph DB를 선택해야 할까?
├── 빠른 시작 + 직관적 쿼리 → Neo4j
├── AWS 클라우드 네이티브 → Amazon Neptune
├── 초대규모 분산 처리 → JanusGraph
└── 멀티 모델 (그래프 + 문서) → ArangoDB
| 고려 사항 |
추천 제품 |
| 학습 곡선이 낮아야 함 |
Neo4j (Cypher) |
| AWS 인프라 활용 |
Amazon Neptune |
| 수십억 노드 처리 |
JanusGraph |
| 다양한 데이터 모델 통합 |
ArangoDB |
| RDF/시맨틱 웹 필요 |
Amazon Neptune |