다음을 통해 공유


Azure Cosmos DB for NoSQL의 Python SDK에 대한 모범 사례

적용 대상: NoSQL

이 가이드에는 Azure Cosmos DB for NoSQL용 Python SDK의 최신 버전을 사용하여 빌드된 솔루션에 대한 모범 사례가 포함되어 있습니다. 여기에 포함된 모범 사례는 대기 시간을 개선하고 가용성을 개선하며 솔루션의 전반적인 성능을 높이는 데 도움이 됩니다.

계정 구성

  • 대기 시간을 줄이기 위해 가능한 경우, Azure Cosmos DB 계정과 동일한 Azure 지역에서 애플리케이션을 실행해야 합니다. 최상의 가용성을 위해서는 계정의 지역 2개 이상에서 복제를 사용하도록 설정하세요. 프로덕션 작업의 경우 서비스 관리형 장애 조치(failover)를 사용하도록 설정합니다. 이 구성이 없으면 지역 연결 부족으로 인해 수동 장애 조치(failover)가 성공할 수 없으므로 쓰기 지역 중단 기간 동안 계정에서 쓰기 가용성이 손실됩니다. Python SDK를 사용하여 여러 지역을 추가하는 방법에 관한 자세한 내용은 전역 배포 자습서을 참조하세요.

SDK 사용

  • 최적의 성능을 위해서는 항상 최신 버전의 Azure Cosmos DB SDK를 사용하세요.
  • 성능 향상을 위해 애플리케이션의 수명 동안 단일 CosmosClient 인스턴스를 사용하세요.
  • cosmos 클라이언트preferred_locations에서 구성을 설정하세요. 장애 조치(failover) 중에는 쓰기 작업이 현재 쓰기 지역으로 전송되고 모든 읽기가 기본 위치 목록 내의 첫 번째 지역으로 전송됩니다. 지역 장애 조치(failover) 메커니즘에 대한 자세한 내용은 가용성 문제 해결을 참조하세요.
  • 일시적인 오류는 근본 원인을 바탕으로 자체적으로 해결되는 오류입니다. 데이터베이스에 연결하는 애플리케이션은 이러한 일시적인 오류를 예상하도록 빌드되어야 합니다. 이를 처리하기 위해 사용자에게 애플리케이션 오류로 표시되는 대신 해당 코드에서 다시 시도 논리를 구현합니다. SDK에는 읽기 또는 쿼리 작업과 같이 다시 시도할 수 있는 요청에서 이러한 일시적인 오류를 처리하는 기본 제공 논리가 있습니다. 쓰기가 idempotent가 아니므로 SDK는 일시적인 오류에 대해 쓰기를 다시 시도할 수 없습니다. SDK를 사용하면 사용자가 제한에 대해 다시 시도 논리를 구성할 수 있습니다. 다시 시도할 오류에 대한 자세한 내용은 여기를 방문하세요.
  • SDK 로깅을 사용하여 진단 정보를 캡처하고 대기 시간 문제를 해결할 수 있습니다.

데이터 디자인

  • 지정된 작업의 요청 요금은 문서의 크기와 직접 관련됩니다. 큰 문서에 대한 작업은 더 작은 문서에 대한 작업보다 비용이 많이 들기 때문에 문서 크기를 더 줄이는 것이 좋습니다.
  • 일부 문자는 제한되어 있으며 일부 식별자('/', '\', '?', '#')에는 사용할 수 없습니다. 일반적인 권장 사항은 예기치 않은 동작을 방지하기 위해 데이터베이스 이름, 컬렉션 이름, 항목 ID 또는 파티션 키와 같은 식별자에 특수 문자를 사용하지 않는 것입니다.
  • Azure Cosmos DB 인덱싱 정책을 통해 인덱싱 경로를 사용하여 인덱싱에 포함하거나 제외할 문서 경로를 지정할 수도 있습니다. 쓰기 속도를 높이기 위해 인덱싱에서 사용하지 않는 경로를 제외합니다. 자세한 내용은 SDK 샘플을 사용하여 인덱스 만들기을 참조하세요.

호스트 특성

  • 클라이언트 컴퓨터에 리소스가 부족하여 연결/가용성 문제가 발생할 수 있습니다. Azure Cosmos DB 클라이언트를 실행하는 노드에서 CPU 사용률을 모니터링하고 사용량이 높은 경우 스케일 업/아웃합니다.
  • 가상 머신을 사용하여 애플리케이션을 실행하는 경우 VM에서 가속화된 네트워킹을 사용하도록 설정하여 높은 트래픽으로 인한 병목 상태를 지원하고 대기 시간 또는 CPU 지터를 줄입니다. 최대 CPU 사용량이 70% 미만이 되도록 보다 고사양 가상 머신을 사용하는 것을 고려할 수도 있습니다.
  • 기본적으로 쿼리 결과는 100개 항목 또는 4MB의 청크로 반환됩니다. 이 중 먼저 도달하는 제한이 적용됩니다. 쿼리가 100개 이상의 항목을 반환하는 경우 페이지 크기를 늘려 필요한 왕복 횟수를 줄입니다. 페이지 크기가 증가하면 메모리 사용량도 증가합니다.

다음 단계

Python SDK의 성능 팁에 대한 자세한 내용은 Azure Cosmos DB Python SDK에 대한 성능 팁을 참조하세요.

확장성 및 고성능을 위한 애플리케이션 설계 방법에 대한 자세한 내용은 Azure Cosmos DB의 분할 및 크기 조정을 참조하세요.

Azure Cosmos DB로 마이그레이션하기 위한 용량 계획을 수행하려고 하시나요? 용량 계획을 위해 기존 데이터베이스 클러스터에 대한 정보를 사용할 수 있습니다.