Data model spectrum

DB 모델 비교는 “어떻게 저장하나”보다, 어떤 질문을 한 번에 잘 대답하느냐로 보면 선명합니다.

같은 주문 데이터라도 정규화, 키 조회, 문서 단위, 넓은 열, 관계 탐색 중 어디에 초점을 두느냐에 따라 저장 모델이 갈립니다.

공통 예시

주문 5001: 김철수가 책 2권을 주문했다. 각 모델은 이 사실을 서로 다른 기본 단위로 묶습니다.

정규화 중심
RDB 고객, 주문, 주문항목을 나누고 외래 키로 다시 결합합니다.
orders + order_items
키 하나
Key-Value 키를 알면 값에 바로 도달하고, 내부 구조는 애플리케이션이 해석합니다.
order:5001 -> value
객체 한 덩어리
Document 주문 상세 화면에 필요한 정보를 JSON 문서 하나에 가깝게 둡니다.
{ order, customer, items }
행 키 + 넓은 열
Column Family 한 행 키 아래 시점·속성별 열을 넓게 펼쳐 대량 쓰기와 범위 조회에 맞춥니다.
customer#1001:2024-03-15
연결 자체
Graph 사람, 주문, 상품을 노드와 간선으로 두고 관계를 따라갑니다.
(김철수)-[주문]->(5001)
잘 맞는 질문 정합성, 조인, 보고서, 트랜잭션이 중요한 업무 데이터
잘 맞는 질문 세션·캐시처럼 키 하나로 매우 빠르게 읽는 단건 상태
잘 맞는 질문 주문 상세, 상품 문서, 사용자 프로필처럼 객체 단위로 읽는 화면
잘 맞는 질문 로그, 이벤트, 시계열처럼 같은 키 아래 많은 열이 쌓이는 데이터
잘 맞는 질문 추천, 친구의 친구, 경로 탐색처럼 관계를 여러 단계 따라가는 질의
선택 기준

데이터 모델은 유행이 아니라 읽기 경로의 선택입니다. 무엇을 한 번에 읽고, 어떤 관계를 자주 따라가는지부터 정하면 RDB와 NoSQL의 역할이 자연스럽게 나뉩니다.