MongoDB vs PostgreSQL, 같은 진료 데이터로 직접 비교해봤다

한 줄 요약
같은 진료(의료) 데이터를 MongoDB의 문서(document) 와 PostgreSQL의 관계형 테이블로 각각 모델링해 비교해보면, "어느 쪽이 더 빠르다"는 단순한 결론보다 애플리케이션이 데이터를 어떻게 읽고 저장하느냐가 선택의 기준이 되어야 한다는 사실이 드러납니다.
왜 진료 데이터로 비교했을까?
진료 기록은 두 데이터베이스의 성격 차이를 보여주기에 좋은 소재입니다.
- 중첩 구조가 자연스럽다: 환자 한 명 아래 여러 번의 방문, 방문마다 여러 처방과 검사 결과가 달립니다.
- 스키마가 유연해야 할 때가 있다: 진료과목이나 검사 종류에 따라 기록되는 필드가 제각각입니다.
- 동시에 정합성도 중요하다: 환자, 의사, 약품 코드 같은 마스터 데이터는 어긋나면 안 됩니다.
즉, 문서형이 유리한 조건과 관계형이 유리한 조건이 한 도메인 안에 공존합니다.
두 방식의 모델링 차이
MongoDB: 하나의 문서에 묶기
환자 문서 안에 방문 이력과 처방 내역을 중첩 배열로 담아두는 방식입니다.
- 화면에 필요한 데이터를 한 번의 조회로 가져올 수 있습니다.
- 필드가 문서마다 달라도 문제가 없어, 스키마 변경 부담이 적습니다.
- 대신 같은 값이 여러 문서에 중복될 수 있어, 수정 시 일관성 관리는 애플리케이션 몫이 됩니다.
PostgreSQL: 테이블로 나누기
환자, 방문, 처방을 별도 테이블로 분리하고 외래 키로 연결하는 방식입니다.
- 중복이 없어 데이터 정합성이 구조적으로 보장됩니다.
- 집계, 다양한 조건의 조인, 리포팅 쿼리에 강합니다.
- 대신 화면 하나를 그리기 위해 여러 테이블을 조인해야 할 수 있습니다.
참고로 PostgreSQL도
JSONB타입으로 문서형 데이터를 다룰 수 있어, 두 진영의 경계는 예전만큼 뚜렷하지 않습니다.
그래서 무엇을 기준으로 골라야 할까?
원문이 강조하는 핵심은 "무조건 더 좋은 쪽은 없다" 는 것입니다. 대신 아래 질문에 답해보면 방향이 잡힙니다.
- 읽기 패턴이 고정적인가? 항상 "환자 단위로 통째로" 읽는다면 문서형이 유리합니다.
- 질의가 다양하고 예측하기 어려운가? 여러 축으로 집계하고 분석해야 한다면 관계형이 유리합니다.
- 데이터 중복을 감당할 수 있는가? 중복 갱신 비용이 크다면 정규화된 관계형 쪽이 안전합니다.
- 스키마가 얼마나 자주 바뀌는가? 변경이 잦고 형태가 제각각이라면 문서형이 편합니다.
마무리하며
데이터베이스 선택은 성능 벤치마크 숫자 싸움이 아니라 데이터 접근 패턴에 대한 설계 결정입니다. 같은 도메인을 두 방식으로 모델링해보는 이 비교는, 그 판단 기준을 눈으로 확인하게 해준다는 점에서 의미가 있습니다.
새 프로젝트를 시작하며 DB를 고민 중이라면, 먼저 "우리 애플리케이션은 이 데이터를 어떻게 읽고 쓸 것인가"를 종이에 적어보는 것을 권합니다. 답은 대개 거기에 있습니다.
원문 출처: GeekNews - 개발/기술/스타트업 뉴스 서비스. 원문 비교 예제는 작성자가 소속된 VisuaLeaf 팀의 도구를 사용해 작성되었습니다.