데이터를 포함 또는 참조해야 하는 경우

완료됨

이전 단원에서 고객 주소와 암호 데이터를 새 고객 문서에 포함했습니다. 이 작업을 수행하면 요청 수를 줄여 성능을 향상하고 비용을 절감할 수 있었습니다. 하지만 데이터를 항상 포함할 수는 없습니다. 다른 행에서 데이터를 참조하는 대신, 문서에 데이터를 포함해야 하는 경우에 대한 규칙이 있습니다.

어떤 경우에 데이터를 포함해야 하나요?

다음 조건이 데이터에 적용되는 경우 데이터를 문서에 포함합니다.

  • 함께 읽거나 업데이트: 함께 읽거나 업데이트되는 데이터는 거의 항상 단일 문서로 모델링됩니다. NoSQL 모델의 목적이 데이터베이스에 대한 요청 수를 줄이는 것이기 때문에 특히 그렇습니다. 이 시나리오에서는 모든 고객 엔터티를 함께 읽거나 씁니다.
  • 일대일 관계: 예를 들어 CustomerCustomerPassword는 일대일 관계를 갖습니다.
  • 일대소수 관계: NoSQL 데이터베이스에서는 일대다 관계를 제한 또는 제한 없음으로 구분해야 합니다. 전자상거래 애플리케이션의 고객들은 보통 소수의 배송지만 가지고 있기 때문에 CustomerCustomerAddress는 제한된 일대다 관계입니다. 관계가 제한되는 경우, 이것을 일대소수 관계라고 합니다.

어떤 경우에 데이터를 참조해야 하나요?

다음 조건이 데이터에 적용되는 경우 데이터를 별도의 문서로 참조합니다.

  • 독립적으로 읽거나 업데이트: 엔터티를 결합하여 큰 문서를 생성하는 경우에 해당합니다. Azure Cosmos DB에서 업데이트하려면 전체 항목을 교체해야 합니다. 문서 대부분이 고정적인 속성이고 몇 가지 속성만 자주 업데이트되는 경우, 두 개의 문서로 분할하는 것이 훨씬 효율적입니다. 한 문서에는 수는 적지만 자주 업데이트되는 속성 세트가 포함되어 있습니다. 다른 문서에는 변하지 않는 고정값이 포함되어 있습니다.

  • 일대다 관계: 관계가 무제한인 경우가 특히 여기에 해당합니다. Azure Cosmos DB의 최대 문서 크기는 2MB입니다. 따라서 일대다 관계가 제한되지 않거나 매우 커질 수 있는 상황에서는 데이터가 포함되는 것이 아니라 참조되어야 합니다.

  • 다대다 관계: 다음 단원에서 제품 태그를 사용하여 해당 관계의 예시를 살펴보겠습니다.

    이러한 속성을 분리하면 처리량 소비가 감소하여 효율성이 높아질 수 있습니다. 또한 성능 향상을 위해 대기 시간도 줄어듭니다.