98 lines
3.9 KiB
Markdown
98 lines
3.9 KiB
Markdown
[[Labeled Property Graph (LPG, 속성 그래프)]]
|
|
|
|
📌 Brief Summary
|
|
|
|
LPG(Labeled Property Graph)는 노드와 엣지에 라벨(Label)과 Key-Value 형태의 속성(Property)을 직접 저장할 수 있는 그래프 데이터 모델이다. RDF의 트리플 분해 방식과 달리, 엣지 자체에 속성 부여가 가능하여 덜 장황하고 실시간 경로 탐색에 최적화되어 있다.
|
|
|
|
---
|
|
|
|
📖 Core Content
|
|
|
|
## 1. RDF 트리플 vs LPG 구조 비교
|
|
|
|
| 구분 | RDF 트리플 | LPG (속성 그래프) |
|
|
|------|-----------|----------------|
|
|
| **데이터 모델** | 의미론 중심 (주어-서술어-목적어) | 인스턴스(데이터) 중심 |
|
|
| **식별 방식** | 글로벌 IRI (URI) | 로컬 ID + 라벨 |
|
|
| **엣지 속성 부여** | ❌ 중간 노드 추가 생성 필요 (장황) | ✅ 엣지에 Key-Value 직접 부여 |
|
|
| **상호운용성** | 높음 (표준화, Linked Data) | 낮음 (시스템 종속성 있음) |
|
|
| **쿼리 성능** | 대규모 추론에 강점 | 실시간 경로 탐색·패턴 매칭에 강점 |
|
|
|
|
---
|
|
|
|
## 2. Key-Value 속성 직접 부여 메커니즘
|
|
|
|
```
|
|
[RDF 방식] "홍길동--나이-->35" 표현 시:
|
|
<홍길동> <나이> "35"^^xsd:integer ← 트리플 3개 필요
|
|
|
|
[LPG 방식] 노드·엣지에 직접:
|
|
(홍길동 {나이: 35, 직업: "의사"})
|
|
--[:치료했다 {날짜: "2026-04-15", 성공여부: true}]-->
|
|
(김환자 {나이: 50})
|
|
```
|
|
|
|
→ **설계 의도**: 화이트보드에 그린 논리적 구조 = 물리적 저장 구조 (Isomorphic). 중간 노드 생성 없이 자연스러운 데이터 모델링 가능.
|
|
|
|
---
|
|
|
|
## 3. Neo4j 구현 방식 핵심
|
|
|
|
- **네이티브 속성 그래프**: 논리적 모델 = 물리적 스토리지 모델 (1:1 대응).
|
|
- **인덱스 없는 인접성 (Index-free Adjacency)**: 각 노드가 인접 노드의 직접 포인터를 보유 → 전체 DB 스캔 없이 연결 노드로 즉시 이동.
|
|
- **쿼리 비용**: 전체 데이터 크기가 아닌 **실제 탐색하는 하위 그래프 크기에만 비례** → 대규모 데이터에서도 실시간 응답.
|
|
|
|
---
|
|
|
|
## 4. Cypher 질의 언어 기초
|
|
|
|
```cypher
|
|
-- 보안 위협 탐색 예제
|
|
MATCH (t:Threat)-[:EXPLOITS]->(v:Vulnerability)
|
|
WHERE v.severity = "Critical"
|
|
RETURN t.label, v.cveID, v.severity
|
|
ORDER BY v.severity DESC
|
|
LIMIT 10
|
|
```
|
|
|
|
- **특징**: ASCII 아트 스타일 패턴 매칭 → 직관적이고 시각적.
|
|
- **중점**: 논리적 추론보다 그래프 패턴 탐색(Pattern Matching)에 특화.
|
|
- **SQL 비교**: SPARQL보다 경로 탐색 표현이 더 자연스러움.
|
|
|
|
---
|
|
|
|
## 5. 실제 성능 벤치마크 수치
|
|
|
|
| 환경 | 그래프 규모 | 홉(Hop) 수 | 응답 시간 |
|
|
|------|-----------|-----------|---------|
|
|
| Neo4j 네이티브 그래프 | **수십억 개** 엣지 | **6-hop** 복잡 순회 질의 | **3초 이내** |
|
|
|
|
---
|
|
|
|
## 6. 인과관계 연쇄
|
|
|
|
```
|
|
LPG 엣지 속성 직접 부여 설계
|
|
↓
|
|
중간 노드 생성 불필요 → 데이터 모델 간결화
|
|
↓
|
|
+ Index-free Adjacency 아키텍처
|
|
↓
|
|
Join 연산 성능 병목 원천 제거
|
|
↓
|
|
탐색 비용 = 전체 DB 크기 독립 → 하위 그래프 크기에만 비례
|
|
↓
|
|
수십억 엣지, 6-hop 쿼리도 3초 이내 실시간 응답
|
|
```
|
|
|
|
---
|
|
|
|
🔗 Knowledge Connections
|
|
|
|
- **Related Topics:** [[RDF와 OWL]], [[지식 그래프 (Knowledge Graph)]], [[GraphRAG (그래프 기반 검색 증강 생성)]], [[SPARQL (RDF 그래프 질의 언어)]], [[Cypher 질의 언어]], [[Neo4j]], [[Index-free Adjacency]], [[RDF-star (RDF*)]]
|
|
- **Projects/Contexts:** [[온톨로지 지식 베이스]], [[실시간 그래프 분석 시스템]]
|
|
- **Contradictions/Notes:**
|
|
- LPG(Neo4j)는 성능·유연성 우위, RDF는 표준·상호운용성 우위 → 도메인에 따라 선택.
|
|
- RDF-star가 등장하면서 RDF도 엣지 속성 부여 가능해짐 → LPG 고유 장점 경계가 좁아지는 추세.
|
|
- **신규 키워드**: `Cypher 질의 언어`, `Index-free Adjacency` → 탐색 큐에 추가.
|