옷장 정리하는 세 가지 방식
Relational 은 라벨 붙은 서랍장 — 양말 여기, 셔츠 저기, 모든 서랍이 cross-reference 돼서 "어떤 셔츠가 어떤 바지랑 어울리지" 같은 질문 가능. Document 는 박스 줄 — 박스마다 완성된 한 벌 (셔츠+바지+양말 한 박스에). 잡기 빠르고, "전체 사람 중 빨간 셔츠 누구 갖고 있어?" 는 느려. Key-Value 는 옷걸이 줄 — 라벨 한 개, 아이템 한 개, 그 이상 구조 0.
각 모델이 이기는 때
Relational 은 관계가 중요하고 DB 가 그걸 강제해주길 바랄 때. Document 는 레코드 모양이 진짜로 다양하고 관계가 아닌 document 단위로 쿼리할 때. Key-Value 는 "정확한 키로 X 줘" 의 raw speed 가 필요하고 그것만 필요할 때.
PostgreSQL 의 반전
PostgreSQL 이 메이저 DB 중 유일하게 셋 다 합리적으로 해. Relational 이 기본. JSONB 컬럼이 document 스토리지에 인덱스까지 줘. hstore 가 key-value 줘. "MongoDB 필요한가?" 의 실용적 답은 거의 항상 "아니, JSONB 컬럼 추가해."