[5장] MongoDB 데이터 모델링 가이드
KUKJIN LEE 🚀
3주 전
MongoDB와 전통적인 RDBMS의 차이점
MongoDB는 전통적인 RDBMS(Relational Database Management System)과는 다른 데이터 저장 및 처리 방식을 가진 NoSQL 데이터베이스다. MongoDB의 도큐먼트(Document)는 RDBMS의 행(row)과 유사하지만, 구조가 훨씬 유연하며 복잡한 데이터를 자유롭게 담을 수 있다.
-
RDBMS와의 차이: RDBMS는 정형화된 스키마에 맞춰 데이터를 저장하며, 테이블 간의 관계를 엄격히 유지한다. 반면 MongoDB는 스키마의 제약이 덜하며, 다양한 데이터 구조를 유연하게 저장할 수 있다.
-
NoSQL의 장점: RDBMS가 다루기 어려운 비정형 데이터를 MongoDB는 플렉서블하게 다룰 수 있으며, 금융권에서도 MongoDB가 널리 확장되고 있다.
MongoDB 데이터 모델링 접근 방법
-
MongoDB의 데이터 저장 방식: RDBMS는 데이터를 최적화된 구조로 나누어 저장하지만, MongoDB는 데이터를 한 곳에 모아서 저장하는 방식을 채택할 수 있다. 예를 들어, RDBMS는 바퀴 1, 바퀴 2를 각각 저장하지만, MongoDB는 배열을 사용해 바퀴 1부터 4까지를 한 번에 저장할 수 있다.
-
유연한 데이터 저장: MongoDB에서는 모든 데이터가 동일한 형식을 따를 필요가 없으며, 각 도큐먼트는 필요한 만큼만 데이터를 저장할 수 있다. 예를 들어, 데이터가 1부터 10까지 있다면, 3까지 저장하거나 7까지 저장해도 문제가 되지 않는다.
지속적인 모델링 개선
MongoDB의 모델링은 한 번으로 끝나지 않는다. 데이터가 변함에 따라 모델링도 끊임없이 개선되어야 한다. 특히 레플리카셋(Replica Set)을 고려해야 하며, 전통적인 DB에서는 레플리카셋 운영에 비용이 10배 정도 발생할 수 있지만, MongoDB는 그 비용을 절감할 수 있다.
데이터 모델링의 핵심: 필요한 데이터 모으기
-
도큐먼트 크기 관리: MongoDB에서는 데이터를 한 도큐먼트에 모두 넣는 것도 가능하지만, 예를 들어 댓글 시스템에서는 하나의 도큐먼트에 계속해서 댓글을 추가할 경우 도큐먼트의 크기가 계속 커질 수 있다. 이 문제를 해결하기 위해 댓글을 별도의 도큐먼트로 분리하여 관리하는 것이 효율적이다.
-
확장성 및 조인 없이 데이터 관리: MongoDB는 데이터를 확장하는 것이 쉽고, RDBMS에서 사용하는 조인(join) 없이도 데이터를 처리할 수 있어 속도와 비용 측면에서 유리하다.
스키마 디자인 패턴
MongoDB에서는 다양한 스키마 디자인 패턴을 적용할 수 있다. 대표적인 패턴은 다음과 같다:
-
컴퓨테이션 패턴(Computation Pattern): 필요한 데이터를 미리 계산해 저장하는 방식.
-
그룹핑 패턴(Grouping Pattern): 관련 데이터를 그룹화하여 효율적으로 저장.
-
라이프사이클 패턴(Lifecycle Pattern): 데이터의 수명 주기를 관리.
-
폴리모피즘 패턴(Polymorphism Pattern): 다양한 타입의 데이터를 하나의 도큐먼트에 담는 방식.
-
릴레이션십 패턴(Relationship Pattern): 관계형 데이터베이스의 관계를 MongoDB 방식으로 처리.
MongoDB에서 권장하는 패턴 중 하나는 스키마 버저닝 패턴(Schema Versioning Pattern)이다. 이는 스키마가 계속해서 변화할 수 있기 때문에, 데이터를 효과적으로 관리하기 위해 사용된다.
스키마 설계의 유연성
MongoDB는 스키마 설계가 매우 유연하다. 전통적인 데이터베이스에서는 스키마 변경이 시간이 많이 걸리고 복잡한 작업이지만, MongoDB에서는 빠르게 스키마를 변경할 수 있다. 이러한 유연성은 데이터 구조나 요구사항이 자주 변하는 환경에서 MongoDB를 유리하게 만든다.
결론
MongoDB의 데이터 모델링은 유연성, 확장성, 그리고 지속적인 개선을 기반으로 하며, 전통적인 RDBMS와는 달리 다양한 패턴을 통해 데이터를 관리할 수 있다. 특히 스키마의 유연한 변경, 확장성, 그리고 조인 없이 데이터 관리가 MongoDB의 강점이다. MongoDB는 금융권을 포함한 다양한 산업에서 사용되며, 점점 더 많은 기업이 MongoDB의 유연한 데이터 모델링 방식을 채택하고 있다.