스크랩

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

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

한 줄 요약

같은 진료(의료) 데이터를 MongoDB의 문서(document) 와 PostgreSQL의 관계형 테이블로 각각 모델링해 비교해보면, "어느 쪽이 더 빠르다"는 단순한 결론보다 애플리케이션이 데이터를 어떻게 읽고 저장하느냐가 선택의 기준이 되어야 한다는 사실이 드러납니다.

왜 진료 데이터로 비교했을까?

진료 기록은 두 데이터베이스의 성격 차이를 보여주기에 좋은 소재입니다.

  • 중첩 구조가 자연스럽다: 환자 한 명 아래 여러 번의 방문, 방문마다 여러 처방과 검사 결과가 달립니다.
  • 스키마가 유연해야 할 때가 있다: 진료과목이나 검사 종류에 따라 기록되는 필드가 제각각입니다.
  • 동시에 정합성도 중요하다: 환자, 의사, 약품 코드 같은 마스터 데이터는 어긋나면 안 됩니다.

즉, 문서형이 유리한 조건과 관계형이 유리한 조건이 한 도메인 안에 공존합니다.

두 방식의 모델링 차이

MongoDB: 하나의 문서에 묶기

환자 문서 안에 방문 이력과 처방 내역을 중첩 배열로 담아두는 방식입니다.

  • 화면에 필요한 데이터를 한 번의 조회로 가져올 수 있습니다.
  • 필드가 문서마다 달라도 문제가 없어, 스키마 변경 부담이 적습니다.
  • 대신 같은 값이 여러 문서에 중복될 수 있어, 수정 시 일관성 관리는 애플리케이션 몫이 됩니다.

PostgreSQL: 테이블로 나누기

환자, 방문, 처방을 별도 테이블로 분리하고 외래 키로 연결하는 방식입니다.

  • 중복이 없어 데이터 정합성이 구조적으로 보장됩니다.
  • 집계, 다양한 조건의 조인, 리포팅 쿼리에 강합니다.
  • 대신 화면 하나를 그리기 위해 여러 테이블을 조인해야 할 수 있습니다.

참고로 PostgreSQL도 JSONB 타입으로 문서형 데이터를 다룰 수 있어, 두 진영의 경계는 예전만큼 뚜렷하지 않습니다.

그래서 무엇을 기준으로 골라야 할까?

원문이 강조하는 핵심은 "무조건 더 좋은 쪽은 없다" 는 것입니다. 대신 아래 질문에 답해보면 방향이 잡힙니다.

  1. 읽기 패턴이 고정적인가? 항상 "환자 단위로 통째로" 읽는다면 문서형이 유리합니다.
  2. 질의가 다양하고 예측하기 어려운가? 여러 축으로 집계하고 분석해야 한다면 관계형이 유리합니다.
  3. 데이터 중복을 감당할 수 있는가? 중복 갱신 비용이 크다면 정규화된 관계형 쪽이 안전합니다.
  4. 스키마가 얼마나 자주 바뀌는가? 변경이 잦고 형태가 제각각이라면 문서형이 편합니다.

마무리하며

데이터베이스 선택은 성능 벤치마크 숫자 싸움이 아니라 데이터 접근 패턴에 대한 설계 결정입니다. 같은 도메인을 두 방식으로 모델링해보는 이 비교는, 그 판단 기준을 눈으로 확인하게 해준다는 점에서 의미가 있습니다.

새 프로젝트를 시작하며 DB를 고민 중이라면, 먼저 "우리 애플리케이션은 이 데이터를 어떻게 읽고 쓸 것인가"를 종이에 적어보는 것을 권합니다. 답은 대개 거기에 있습니다.


원문 출처: GeekNews - 개발/기술/스타트업 뉴스 서비스. 원문 비교 예제는 작성자가 소속된 VisuaLeaf 팀의 도구를 사용해 작성되었습니다.


원문: https://news.hada.io/topic?id=34219