본문 바로가기

개발하자

python SDK를 통해 코스모스 처리량 업데이트

반응형

python SDK를 통해 코스모스 처리량 업데이트

우리의 사용 사례는 많은 문서들이 있는 Cosmos DB를 가지고 있다는 것이다. 이것들은 기능 API를 통해 노출된다. API 사용량은 적지만 매일 밤 데이터 팩토리를 이용해 대량의 문서를 삽입해야 합니다. 이 프로세스가 실행되면 프로비저닝된 모든 Request 유닛(400-4000 RU/s)이 소모됩니다. 따라서 처리율을 프로그래밍 방식으로 업데이트하고 문서 업로드를 실행한 후 다시 전체 작업을 중단할 수 있는 솔루션을 찾고 있습니다.

함수 실행을 통해 python SDK를 이용하여 이를 수행하고자 합니다. 온라인에서 샘플 코드를 찾았는데, 이것은 처리량을 수동으로 프로비저닝할 때만 작동하는 것 같습니다. 전체적으로 오토스케일링으로 동일한 코드를 시도했을 때 오류는 없었지만 업데이트도 되지 않았습니다.

누가 자동 스케일로 설정되어 있을 때 처리량을 업데이트할 수 있는 샘플 코드를 알려줄 수 있나요?




누가 자동 스케일로 설정되어 있을 때 처리량을 업데이트할 수 있는 샘플 코드를 알려줄 수 있나요?

SDK 코드를 찾아보니 현재 버전의 SDK(버전 4.2.0)에서는 자동 스케일 처리량을 변경할 수 없는 것 같습니다.

Github에서도 같은 내용으로 공개된 이슈가 있습니다. SDK에서 언제 이 기능을 사용할 수 있는지 그 문제를 추적하는 것을 제안합니다.




이 차이는 현재 SDK 제한 사항 섹션에 나열되어 있으며 단기적으로 해결할 계획은 없습니다. 해결 방법은 CLI 및 PowerShell입니다.

자세한 내용은 여기에서 확인할 수 있습니다:

https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/cosmos/azure-cosmos#limitations

Tks




마지막으로 다음과 같은 방법이 있습니다:

from azure.cosmos import CosmosClient, PartitionKey, ThroughputProperties

client = CosmosClient(
    url='url',
    credential='key',
    connection_mode='Gateway'
)

dbClient = client.get_database_client('database_name')
container = dbClient.get_container_client('container_name')

throughput_properties = ThroughputProperties(auto_scale_max_throughput=1000)
container.replace_throughput(throughput_properties)

또한 자동 스케일 처리량으로 데이터베이스나 컨테이너를 만들 수 있습니다

dbClient.create_database_if_not_exists(
    id='database_name',
    offer_throughput=throughput_properties
)

dbClient.create_container_if_not_exists(
    id='container_name',
    partition_key=PartitionKey(path='/partition_key'),
    offer_throughput=throughput_properties
)

반응형