그래프 DB — 관계를 따라 걷는 데이터베이스
노드와 엣지를 저장의 기본 단위로 삼아, 관계를 따라가는 질문에 답하는 데이터베이스.
한 줄 정의
그래프 DB(graph database)는 표가 아니라 노드와 엣지를 저장의 기본 단위로 삼는 데이터베이스다. 관계를 따라가는 질문에 최적화되어 있고, Neo4j가 대표적이다.
내 말로
엑셀 표 여러 장으로 “친구의 친구의 친구”를 찾으려면 표를 세 번 맞대야 한다(JOIN). 그래프 DB는 그냥 선을 세 번 따라 걷는다. 관계가 깊어질수록 표는 느려지고, 그래프는 그대로다. 지식그래프가 내용물이라면 그래프 DB는 그릇 — 인물관계도가 수만 명으로 커져 종이에 못 그릴 때, 담아 두고 질문을 던지는 창고다.
오개념 주의
지식그래프를 만든다고 그래프 DB부터 깔 필요는 없다. 내용물(데이터의 모양)과 그릇(저장 엔진)은 별개라서, 노드 수십 개면 JSON 파일로 충분하다.
어디서 만났나
Build 04 — 지도의 Q&A에서 “그래프 라이브러리를 왜 안 썼나”에 도구는 문제 크기에 맞게라고 답했는데, 그래프 DB는 그 질문의 끝판 버전이다. 이 블로그의 지도는 빌드 때 전체 글을 읽어 JSON으로 굽는다. 노드가 수만 개가 되고 “이 글에서 세 다리 안의 모든 글” 같은 질문을 실시간으로 받아야 할 때 — 그때가 그래프 DB를 꺼낼 날이다.
더 파볼 것
- Neo4j와 질의 언어 Cypher — SQL과 어떻게 다른가
- 관계형 DB와의 손익분기: 몇 홉(hop)부터 그래프가 이기나
- 옵시디언 볼트를 그래프 DB로 내보내면 무슨 질문이 가능해지나
퀴즈
읽은 내용, 세 문제로 확인해보세요.
1. 그래프 DB가 관계형 DB(표)보다 특히 강한 질문은?
표는 관계를 따라갈 때마다 JOIN이 쌓여 느려지지만, 그래프 DB는 선을 따라 걷기만 하면 된다.
2. 지식그래프와 그래프 DB의 관계로 옳은 것은?
지식그래프는 데이터의 모양이고, 그래프 DB는 그것을 담아 질의하는 저장 엔진이다.
3. 노드 수십 개짜리 이 블로그 지도에 그래프 DB를 쓰지 않은 이유는?
도구는 문제 크기에 맞게. 그래프 DB는 노드가 수만 개로 늘고 실시간 질의가 필요할 때 꺼낼 도구다.