개발하자

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

Cuire 2023. 10. 2. 10:15
반응형

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
)

반응형