Melhores práticas do SDK do Python no Azure Cosmos DB for NoSQL
APLICA-SE A: NoSQL
Este guia inclui as melhores práticas para soluções criadas com a última versão do SDK do Python para Azure Cosmos DB for NoSQL. As melhores práticas incluídas aqui ajudam a aprimorar a latência e a disponibilidade, além de aumentar o desempenho geral das suas soluções.
Configuração da conta
- Execute sempre que for possível seu aplicativo na mesma região do Azure da sua conta do Azure Cosmos DB para reduzir a latência. Habilite a replicação em mais de duas regiões em suas contas para ter a melhor disponibilidade. Para cargas de trabalho de produção, habilite o failover gerenciado pelo serviço. Na ausência dessa configuração, a conta passará por perda de disponibilidade de gravação durante toda a interrupção da região de gravação, pois o failover manual não funcionará devido à falta de conectividade da região. Para obter mais informações sobre como adicionar várias regiões usando o SDK do Python, confira o tutorial de distribuição global.
Uso do SDK
- Sempre use a última versão disponível do SDK do Azure Cosmos DB para obter o desempenho ideal.
- Use uma instância única de
CosmosClient
pelo tempo de vida do seu aplicativo para ter um melhor desempenho. - Defina a configuração de
preferred_locations
no cliente do Cosmos. Durante os failovers, as operações de gravação são enviadas à região de gravação atual e todas as leituras são enviadas à primeira região da sua lista de localizações preferenciais. Para obter mais informações sobre a mecânica de failover regional, confira o Guia de solução de problemas de disponibilidade. - Um erro transitório é um erro que tem uma causa subjacente que será resolvida por si só em breve. Aplicativos que se conectam ao banco de dados devem ser criados para esperar esses erros transitórios. Para lidar com eles, implemente a lógica de repetição no código, em vez de mostrá-los aos usuários como erros de aplicativo. O SDK tem lógica interna para lidar com essas falhas transitórias em solicitações de novas tentativas, como operações de leitura ou consulta. O SDK não repetirá as gravações em caso de falhas transitórias, pois as gravações não são idempotentes. O SDK permite que os usuários configurem a lógica de repetir para limitações. Para obter detalhes sobre os erros em que é recomendado repetir a operação, acesse aqui.
- Use o log do SDK para capturar informações de diagnóstico e solucionar problemas de latência.
Design de dados
- A carga da solicitação para uma operação especificada está diretamente correlacionada ao tamanho do documento. Recomendamos reduzir o tamanho dos seus documentos, pois as operações em documentos grandes custam mais do que em documentos menores.
- Alguns caracteres são restritos e não podem ser usados em alguns identificadores: '/', '\', '?', '#'. A recomendação geral é não usar caracteres especiais em identificadores como nome do banco de dados, nome da coleção, ID do item ou chave de partição para evitar qualquer comportamento inesperado.
- A política de indexação do Azure Cosmos DB também permite especificar quais caminhos de documento serão incluídos ou excluídos da indexação usando os caminhos de indexação. Não deixe de excluir caminhos não utilizados da indexação para gravações mais rápidas. Para obter mais informações, confira Como criar índices usando a amostra do SDK.
Características do host
- Você poderá ter problemas de conectividade/disponibilidade devido à falta de recursos no computador cliente. Monitore o uso da CPU em nós que executam o cliente do Azure Cosmos DB e escale verticalmente/horizontalmente se o uso estiver elevado.
- Se usar uma máquina virtual, para executar seu aplicativo, habilite a Rede Acelerada na sua VM para ajudar com gargalos devido ao alto tráfego e reduzir a latência ou a tremulação da CPU. Talvez você também queira considerar o uso de uma máquina virtual topo de linha em que o uso máximo da CPU está abaixo de 70%.
- Por padrão, os resultados da consulta são retornados em blocos de 100 itens ou 4 MB, o limite que for atingido primeiro. Se uma consulta retornar mais de 100 itens, aumente o tamanho da página para reduzir o número de viagens de ida e volta necessárias. O consumo de memória aumentará à medida que o tamanho da página aumentar.
Próximas etapas
Para conhecer mais dicas de desempenho para o SDK do Python, confira Dicas de desempenho para o SDK do Python para Azure Cosmos DB.
Para saber mais sobre como projetar seu aplicativo para escala e alto desempenho, consulte Particionamento e escala no Azure Cosmos DB.
Tentando fazer um planejamento de capacidade para uma migração para o Microsoft Azure Cosmos DB? Você pode usar informações sobre o cluster de banco de dados existente para fazer isso.
- Se você sabe apenas o número de vCores e servidores do cluster de banco de dados existente, leia sobre como estimar unidades de solicitação com vCores ou vCPUs
- Se souber as taxas de solicitação típicas da carga de trabalho do banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB