옷장을 정리하는 세 방식
관계형 모델은 이름표가 붙은 서랍장과 닮았어. 양말과 셔츠를 제자리에 나누어 두고 서로의 관계를 기록하니 “이 셔츠와 어울리는 바지는 무엇인가?” 같은 질문에 답할 수 있지. 문서형 모델은 한 벌을 통째로 상자 하나에 담아 두는 방식이야. 한 사람의 옷은 빨리 꺼내지만 모든 상자를 가로질러 빨간 셔츠만 찾는 일은 불리해. 키-값 모델은 이름표 하나에 물건 하나를 곧장 연결해. 그 밖의 구조는 0에 가까워.
모델을 고르는 기준
데이터 사이의 관계가 중요하고 데이터베이스가 그 규칙을 지켜야 한다면 관계형 모델이 맞아. 기록마다 모양이 크게 다르고 대부분 한 문서 단위로 읽는다면 문서형이 편해. 정확한 키 하나로 값을 최대한 빠르게 찾는 일만 필요하다면 키-값 모델이 강하지. 익숙한 제품 이름보다 데이터가 실제로 어떻게 읽히고 바뀌는지를 먼저 봐야 해.
PostgreSQL은 셋을 함께 품는다
PostgreSQL은 관계형 모델을 중심에 두면서 나머지 두 방식도 실용적으로 제공해. JSONB 열에는 문서를 저장하고 색인까지 만들 수 있고, hstore는 단순한 키-값 구조를 제공해. 그래서 “MongoDB가 꼭 필요한가?”라는 질문에는 먼저 PostgreSQL 안에서 관계형 열과 JSONB를 함께 쓸 수 없는지 살펴보라는 답이 자주 맞아.