| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- high level client
- License
- zip 암호화
- token filter test
- Elasticsearch
- 900gle
- flask
- Kafka
- aggs
- Test
- MySQL
- query
- TensorFlow
- Python
- zip 파일 암호화
- API
- sort
- 파이썬
- Java
- ELASTIC
- licence delete curl
- analyzer test
- docker
- matplotlib
- license delete
- 차트
- Mac
- aggregation
- plugin
- springboot
- Today
- Total
개발잡부
그래프 DB(Graph Database) 본문
그래프 DB란?
**노드(Node)**와 **관계(Relationship / Edge)**로 데이터를 저장하는 데이터베이스
RDBMS처럼 테이블·JOIN 중심이 아니라, "연결" 자체가 1급 데이터로 취급됨.
장점 한 줄 설명
| 속도 | 경로 탐색이 JOIN보다 수십~수백 배 빠름 |
| 스키마 유연성 | 데이터 구조 자주 바뀌는 서비스에 최적 |
| 관계 저장 | 엣지에 count/score/timestamp 저장 가능 |
| 패턴 분석 | 시퀀스 기반 추천·연관검색·행동 분석에 최적화 |
내 입장에서의 진짜 강점
- 검색어 → 검색어 전환율 저장 가능
- 인기 검색 경로 자동 탐색 가능
- 상품 → UDA → 속성 트리 그래프화
- 장바구니 연관 상품 추천
- 개인화 추천에 GraphSAGE/PageRank 적용 가능
RDB나 ES에서는 힘든 작업을 그래프에서는 자연스럽게 할 수 있음.
1) JOIN 지옥이 없다 → 연결 탐색이 압도적으로 빠름
RDB는 관계 탐색하려면 JOIN이 계속 늘어남.
이걸 SQL로 하면 JOIN 5번.
→ 인덱스 있다고 해도 결국 디스크 I/O 늘어나서 느림.
반면 그래프 DB는
노드가 포인터로 연결되어 있어서
“A에서 연결된 노드 전부 가져와”
“거기서 또 연결된 노드 가져와”
→ 메모리 탐색 수준
즉, 관계 깊이가 깊어질수록 성능 차이가 극단적으로 벌어짐.
2) 스키마 유연함 → 구조 변경이 쉬움
검색/상품/사용자 데이터처럼 계속 바뀌는 구조에서 핵심 장점.
- RDB → 컬럼 추가, 테이블 설계 변경, 조인 테이블 필요
- 그래프DB → 그냥 새로운 노드·관계 붙이면 끝
예:
RDB이면 테이블 계속 늘어남.
그래프 DB는 노드 하나 추가하고 관계만 붙이면 끝.
3) 관계(Edge)에 정보를 저장할 수 있음
이게 RDB보다 훨씬 큰 차이.
예:
관계에 이런 속성을 넣을 수 있음:
- count
- score
- timestamp
- weight
- 사용자 행동 수치
즉, 연관도 계산을 직접 저장할 수 있음.
4) 복잡한 패턴 조회가 직관적·짧은 쿼리로 가능
예시:
"치킨 검색한 뒤 → 10초 안에 → 양념 검색하고 → 그 뒤 치킨무 검색한 사람"
SQL로 하면 미칩니다.
그러나 Cypher는 한 줄:
패턴 매칭은 그래프 DB가 압도적으로 쉽고 빠름.
5) 경로 기반 분석에 최적화 (검색/추천에서 매우 중요)
- 연관검색
- 장바구니 기반 연관 상품
- 고객 행동 시퀀스
- Category 트리 탐색
- 카테고리 간 이동 분석
- 그래프 기반 추천(예: Personalized PageRank)
Elasticsearch·RDB로는 어려운 "경로 기반" 분석이 자연스럽게 가능.
6) 확장성(Semi-Horizontal)
완전한 분산 시스템은 아니지만,
그래프 쿼리의 특성상 필요한 부분만 탐색하기 때문에
- 전체 스캔 없음
- 노드 주변(Neighborhood) 탐색만 수행
- 데이터 증가 대비 성능 저하가 상대적으로 적음
즉, 추천/검색어 그래프처럼 로컬 탐색 위주에서는 매우 효율적.
7) 데이터 구조가 직관적
ES나 RDB는 데이터를 보기 위해 JSON/정규화 구조를 이해해야 함.
그래프는 눈으로 보면 바로 이해됨.
연결이 곧 의미라서
데이터 모델 자체가 바로 비즈니스 모델.
8) 추천/검색 시스템에서 강력한 이유
🔥 패턴 기반 추천 (Sequential Recommendation)
시퀀스 기반 추천은 그래프가 가장 자연스럽게 맞음.
🔥 유사도 기반 추천
Neo4j는 PageRank / node2vec / GraphSAGE 등 그래프 알고리즘 제공.
→ 연관 상품 추천, 연관 검색어 추천에 최적화.
🔥 관계 중심 구조에서 필연적으로 RDB보다 빠름
검색어처럼 아래 형태라면 그래프가 압도적으로 유리:
RDB에서는 JOIN × JOIN × JOIN
→ 그래프에서는 그냥 연결 따라가기.