내장된 문서는 관련 데이터를 단일 문서 구조에 저장합니다. 문서에는 배열과 관련 데이터가 있는 하위 문서가 포함될 수 있습니다. 이러한 비정규화된 데이터 모델을 통해 애플리케이션은 한 번의 데이터베이스 작업으로 관련 데이터를 검색할 수 있습니다.
다음 예시 에서 contact 및 access 필드는 내장된 문서입니다.
임베디드 데이터 모델은 자주 액세스하는 데이터가 여러 컬렉션에 중복되어 있기 때문에 비정규화된 것으로 간주되는 경우가 많습니다.
내장된 데이터 모델을 사용하면 애플리케이션이 동일한 데이터베이스 기록 에서 관련 정보를 쿼리 할 수 있습니다. 결과적으로 임베딩은 다음과 같은 이점을 제공합니다.
읽기 작업의 성능 향상
단일 데이터베이스 작업으로 관련 데이터를 검색할 수 있는 기능
단일 원자 쓰기 작업으로 관련 데이터를 업데이트하는 기능
내장된 문서는 관련 데이터를 단일 문서 구조에 저장합니다. 문서에는 배열과 관련 데이터가 있는 하위 문서가 포함될 수 있습니다. 이러한 비정규화된 데이터 모델을 통해 애플리케이션은 한 번의 데이터베이스 작업으로 관련 데이터를 검색할 수 있습니다.
사용 사례
다음 시나리오에서는 임베디드 데이터 모델을 사용하세요.
엔터티 간에 '포함' 관계가 있습니다. 예를 들어,
address(이)가 포함된contacts문서입니다. 내장된 문서를 통한 일대일 관계 모델링을 참조하세요.엔티티 간에 일대다 관계가 있습니다. 이러한 관계에서 '다수' 또는 하위 문서는 '하나' 또는 상위 문서의 컨텍스트에서 표시됩니다. 내장된 문서를 통한 일대다 관계 모델링을 참조하세요.
작은 문서가 많은 컬렉션
작은 문서가 많은 컬렉션 있는 경우 성능 향상을 위해 임베딩을 고려하세요. 이러한 작은 문서를 논리적 관계 별로 그룹 할 수 있고 이 그룹화를 통해 문서를 자주 조회 경우, 작은 문서를 내장된 문서 배열 이 포함된 큰 문서로 '롤업'하는 것을 고려할 수 있습니다.
이러한 작은 문서를 논리적인 그룹으로 "롤업"하면 문서 그룹을 조회하는 쿼리에는 순차적인 읽기가 포함되고 무작위 디스크 액세스가 줄어듭니다. 또한 문서를 "롤업"하고 공통 필드를 더 큰 문서로 이동하면 이러한 필드의 인덱스에 도움이 됩니다. 공통 필드의 복사본 수가 줄어들고 해당 인덱스의 관련 키 항목 수가 줄어듭니다. 인덱스에 대한 자세한 내용은 인덱스를 참조하세요.
그러나 그룹 내에서 문서의 하위 집합만 조회해야 하는 경우가 많으면 문서를 '롤업'해도 더 나은 성능을 제공하지 못할 수 있습니다. 또한 별도의 작은 문서가 데이터의 자연스러운 모델인 경우에는 해당 모델을 유지해야 합니다.
내장된 데이터 쿼리
내장된 문서 내에서 데이터를 쿼리하려면 점 표기법을 사용합니다. 배열 및 내장된 문서의 데이터를 쿼리하는 예는 다음을 참조하세요.