본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

그래프 데이터베이스(Graph Database, Graph DB)는 데이터를 노드(정점), 노드 사이의 관계(엣지), 그리고 둘에 붙는 속성으로 저장해, 데이터 자체뿐 아니라 데이터 사이의 연결을 일급 요소로 다루는 NoSQL 데이터베이스이다.

관계형 데이터베이스는 관계를 외래 키 값으로 적어 두고 질의할 때마다 조인으로 이어 붙인다. 그래프 데이터베이스는 관계를 저장 구조 안에 직접 둔다. Neo4j 문서는 그래프 데이터베이스가 표나 문서 대신 노드·관계·속성으로 데이터를 저장하며, 관계형 데이터베이스가 비용이 큰 조인을 쓰는 것과 달리 관계를 노드 옆에 그대로 저장해 연결을 따라가는(탐색) 질의를 빠르게 처리한다고 설명한다.[1] 그래서 '친구의 친구', '이 상품을 산 사람이 함께 산 상품'처럼 여러 단계 관계를 따라가는 질의에 강하다.

  • 노드(Node) - 사람, 상품, 장소 같은 개체. 레이블로 종류를 나눈다
  • 관계(Relationship, 엣지) - 두 노드를 잇는 이름 붙은 연결. 방향을 가진다(예: 사람 -친구- 사람)
  • 속성(Property) - 노드와 관계에 붙는 키-값 쌍

다른 NoSQL 과 다른 점

편집 원본 편집

키-값, 컬럼 패밀리, 문서 데이터베이스는 하나의 묶음(키 하나에 딸린 값, 행, 문서)을 단위로 데이터를 나눠 여러 서버에 퍼뜨리기 쉽다. 그래프는 노드들이 서로 촘촘히 이어져 있어 서버별로 잘라 나누면 탐색할 때마다 서버를 건너야 한다. 사달라지(Sadalage)와 파울러(Fowler)는 그래프 데이터베이스가 다른 NoSQL 과 달리 ACID 트랜잭션을 지원하고, 관계를 따라가야 하므로 데이터를 여러 서버에 샤딩하기 어려워 클러스터보다 단일 서버에서 돌리는 경우가 많다고 정리했다.[2]

  • Neo4j 는 그래프·인덱스·스키마에 접근하는 모든 연산을 트랜잭션 안에서 수행해 ACID 성질을 보장한다[3]
  • 최근 제품은 클러스터를 지원하지만, 쓰기를 맡는 주(primary) 사본과 읽기 확장용 보조(secondary) 사본을 두는 복제 중심 구조다. 같은 그래프를 여러 서버에 나눠 쓰기까지 확장하는 것은 여전히 어려운 과제로 남아 있다[4]

NoSQL 유형과 구별하기

편집 원본 편집
유형 저장 단위 관계 표현 트랜잭션·확장 잘 맞는 일
키-값 키 하나에 값 하나 없음 키 단위, 수평 확장 쉬움 세션·캐시
컬럼 패밀리 행 키 + 컬럼 패밀리 없음 행 단위, 대규모 클러스터 시계열·로그 대량 쓰기
문서 JSON·BSON 문서 문서 안에 중첩, 문서 사이는 약함 문서 단위, 샤딩 쉬움 콘텐츠·카탈로그
그래프 노드·관계·속성 관계가 일급 요소 ACID 지원, 클러스터 분산 어려움 추천, 소셜 네트워크 친구 찾기, 사기 탐지
  • 데이터 사이의 관계를 표현하고, ACID 트랜잭션을 지원하며, 클러스터 환경에 덜 맞고, 추천·친구 찾기 질의에 강한 것은 그래프 데이터베이스의 특징이다
  • SNS 친구·팔로우 관계 분석
  • 추천 엔진(함께 구매한 상품, 비슷한 취향의 사용자)
  • 사기 탐지(계좌·기기·주소가 엮인 고리 찾기)
  • 네트워크·IT 인프라 관리, 지식 그래프, 시맨틱 웹
  • Neo4j (질의 언어 Cypher)
  • Amazon Neptune
  • JanusGraph
  1. ↑ 「What is a graph database」, Neo4j Getting Started, https://neo4j.com/docs/getting-started/graph-database/, 확인일: 2026-11-05.
  2. ↑ Pramod J. Sadalage, Martin Fowler, 『NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence』, Addison-Wesley, 2012, 11장 Graph Databases.
  3. ↑ 「Transaction management」, Neo4j Java Reference, https://neo4j.com/docs/java-reference/current/transaction-management/, 확인일: 2026-11-05.
  4. ↑ 「Introduction: Neo4j clustering architecture」, Neo4j Operations Manual, https://neo4j.com/docs/operations-manual/current/clustering/introduction/, 확인일: 2026-11-05.