같은 추천 질문

Graph DB는 관계를 저장하고, RDBMS는 관계를 조인으로 복원합니다.

예시 질문은 같습니다. "김철수의 친구가 산 상품 중 내가 아직 안 산 것 추천". 차이는 문법이 아니라, 이 관계를 데이터가 이미 들고 있는지 아니면 조회 시점에 다시 엮어야 하는지입니다.

Graph DB

질문의 경로가 저장 구조와 거의 같습니다.

노드와 엣지가 관계를 직접 표현하므로, 조회할 때는 그 연결을 그대로 따라가면 됩니다.

저장 시점
김철수
친구
영희
구매
노트북

관계가 엣지로 이미 연결되어 있어, 한 단계 더 깊은 탐색도 경로만 연장하면 됩니다.

조회 시점
MATCH (me)-[:친구]->(friend)
      -[:구매]->(product)
WHERE NOT (me)-[:구매]->(product)

친구, 구매, 제외 조건이 모두 "관계를 따라가는 연산"으로 읽힙니다.

RDBMS

같은 의미를 테이블 사이에서 다시 조립해야 합니다.

관계가 별도 행으로 흩어져 있으므로, 조회 시점에 여러 테이블을 조인해 원래의 연결을 복원합니다.

저장 시점
friendships
user_id, friend_id
purchases
user_id, product_id
관계 의미 JOIN 조회 때 복원
조회 시점
users
JOIN friendships
JOIN purchases
LEFT JOIN my_purchases ...

관계가 깊어질수록 self join, 필터, 제외 조건이 늘어나며 쿼리와 비용이 함께 복잡해집니다.

왜 중요할까

소셜 그래프, 추천, 사기 탐지처럼 관계 탐색이 핵심인 문제에서는 Graph DB가 특히 강합니다. 반대로 대량 집계나 범위 검색은 그래프보다 테이블 기반 처리나 분석용 구조가 더 자연스러운 경우가 많습니다.