← soulhn.github.io

Log

만들고 배운 것을 기록합니다.

· 학습 로그

그래프 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(표)보다 특히 강한 질문은?

2. 지식그래프와 그래프 DB의 관계로 옳은 것은?

3. 노드 수십 개짜리 이 블로그 지도에 그래프 DB를 쓰지 않은 이유는?