문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/

데이터 모델링 소개

이 페이지의 내용

  • 유연한 스키마
  • 문서 구조
  • 쓰기 작업의 원자성
  • 데이터 사용 및 성능
  • 자세히 알아보기

데이터 모델링의 주요 과제는 애플리케이션의 요구 사항, 데이터베이스 엔진의 성능 특성, 데이터 검색 패턴의 균형을 맞추는 것입니다. Realm 데이터 모델을 설계할 때는 항상 데이터의 애플리케이션 사용량을 고려합니다(예: 데이터 자체의 고유 구조뿐만 아니라 데이터의 쿼리, 업데이트 및 처리까지 포함합니다.

데이터를 삽입하기 전에 테이블의 스키마를 결정하고 선언해야 하는 SQL 데이터베이스와 달리, MongoDB의 컬렉션 은 기본적으로 문서 가 동일한 스키마를 가질 필요가 없습니다. 즉:

  • 단일 collection의 문서가 동일한 필드 집합을 가질 필요는 없으며 필드의 데이터 유형은 collection 내의 문서마다 다를 수 있습니다.

  • 컬렉션에서 문서의 구조를 변경(예: 새 필드 추가, 기존 필드 제거, 필드 값을 새 유형으로 변경)하려면 문서를 새 구조로 업데이트하세요.

이러한 유연성으로 인해 문서를 엔터티나 객체에 쉽게 매핑할 수 있습니다. 문서가 collection의 다른 문서와 상당한 차이가 있더라도 각 문서는 표시된 엔터티의 데이터 필드와 일치할 수 있습니다.

그러나 실제로 collection의 문서는 비슷한 구조를 공유하므로 업데이트 및 삽입 작업 중에 collection에 대한 문서 유효성 검사 규칙 을 시행할 수 있습니다. 자세한 내용은 스키마 유효성 검사 를 참조하세요.

MongoDB 애플리케이션용 데이터 모델을 설계할 때 주요 결정 사항은 문서 구조와 애플리케이션이 데이터 간의 관계를 나타내는 방법을 중심으로 이루어집니다. MongoDB를 사용하면 관련 데이터를 단일 문서에 포함할 수 있습니다.

내장된 문서는 관련 데이터를 단일 문서 구조에 저장하여 데이터 간의 관계를 캡처합니다. MongoDB 문서를 사용하면 내장된 문서를 문서 내의 필드 또는 배열에 포함할 수 있습니다. 이러한 비정규화 된 Realm 데이터 모델을 통해 애플리케이션은 한 번의 데이터베이스 작업으로 관련 데이터를 검색하고 조작할 수 있습니다.

모든 관련 정보가 포함된 필드가 내장된 데이터 모델입니다.

MongoDB의 많은 사용 사례에서 비정규화된 데이터 모델이 최적입니다.

Realm 데이터 모델 임베딩의 장단점은 임베디드 문서 을 참조하세요.

참조는 한 문서에서 다른 문서로 연결되는 링크나 참조 를 포함하여 데이터 간의 관계를 저장합니다. 애플리케이션은 이러한 참고 를 확인하여 관련 데이터에 액세스할 수 있습니다. 대체로 정규화된 Realm 데이터 모델입니다.

링크 문서에 대한 참조를 사용하여 데이터 모델을 연결합니다. ``contact`` 문서와 ``access`` 문서 모두 ``user`` 문서에 대한 참조를 포함하고 있습니다.

참고 사용의 장단점은 Realm 데이터 모델 을 참고하세요.

MongoDB에서 쓰기 작업은 단일 문서 내에 내장된 문서를 수정하는 경우에도 단일 문서 수준에서 원자적으로 이루어집니다.

데이터가 포함된 비정규화된 데이터 모델은 여러 문서와 컬렉션을 정규화하는 대신 모든 관련 데이터를 단일 문서에 결합합니다. 이 데이터 모델은 원자 조작을 용이하게 합니다.

MongoDB의 트랜잭션에 관한 자세한 내용은 트랜잭션 페이지에서 확인하세요.

단일 쓰기 작업(예 db.collection.updateMany())이(가) 여러 문서를 수정하는 경우, 각 문서의 수정은 원자적이지만 전체 작업은 원자적이지 않습니다.

단일 쓰기 작업이든 다중 쓰기 작업이든 다중 문서 쓰기 작업을 수행할 때 다른 작업과 겹칠 수 있습니다.

여러 문서(단일 또는 여러 컬렉션)에 대한 읽기 및 쓰기의 원자성이 필요한 상황의 경우, 복제본 세트 및 샤드 클러스터에서의 트랜잭션을 포함한 분산 트랜잭션을 지원합니다.

자세한 내용은 거래를참조하세요.

중요

대부분의 경우 분산 트랜잭션은 단일 문서 쓰기에 비해 더 큰 성능 비용이 발생하므로 분산 트랜잭션의 가용성이 효과적인 스키마 설계를 대체할 수는 없습니다. 대부분의 시나리오에서 비정규화된 데이터 모델 (내장된 문서 및 배열) 은 계속해서 데이터 및 사용 사례에 최적일 것입니다. 즉, 대부분의 시나리오에서 데이터를 적절하게 모델링하면 분산 트랜잭션의 필요성이 최소화됩니다.

추가 트랜잭션 사용 고려 사항(예: 런타임 제한 및 oplog 크기 제한)은 프로덕션 고려사항을 참조하세요.

다음도 참조하세요.

Realm 데이터 모델을 설계할 때는 애플리케이션이 데이터베이스를 어떻게 사용할지 고려하세요. 인스턴스, 애플리케이션에서 최근에 삽입한 문서만 사용하는 경우, 고정 사이즈 컬렉션 을 사용하는 것이 좋습니다. 또는 애플리케이션이 주로 collection에 대한 읽기 작업인 경우 일반적인 쿼리를 지원하는 인덱스 를 추가하면 성능을 향상시킬 수 있습니다.

Realm 데이터 모델 설계에 영향을 미치는 이러한 운영 고려 사항 및 기타 운영 고려 사항에 대한 자세한 내용은 운영 요인 및 Realm 데이터 모델 을 참조하세요.

문서를 구조화하고 스키마를 정의하는 방법을 알아보려면 MongoDB University의 데이터 모델링 과정을 참조하세요.

MongoDB를 사용한 데이터 모델링에 대한 자세한 내용은 MongoDB 애플리케이션 현대화 가이드 를 다운로드하세요.

다음과 같은 리소스가 다운로드에 포함됩니다.

  • MongoDB를 사용한 데이터 모델링 방법론에 대한 프레젠테이션

  • RDBMS 데이터 모델에서 MongoDB로 마이그레이션하기 위한 모범 사례와 고려 사항을 다룬 백서

  • RDBMS에 해당하는 MongoDB 스키마 참조

  • 애플리케이션 현대화 스코어카드

돌아가기

데이터 모델링

다음

스키마 유효성 검사