Converter o número de vCores ou vCPUs no banco de dados não relacional em RU/s do Azure Cosmos DB

APLICA-SE A: NoSQL

APLICA-SE AO: MongoDB

Este artigo explica como estimar as RU/s (unidades de solicitação) do Azure Cosmos DB quando você está considerando a migração de dados, mas tudo o que sabe é a contagem total de vCore ou vCPU nos conjuntos de réplicas de banco de dados existentes. Quando você migrar um ou mais conjuntos de réplicas para o Azure Cosmos DB, cada coleção mantida nesses conjuntos de réplicas será armazenada como uma coleção do Azure Cosmos DB, que consiste em um cluster fragmentado com um fator de replicação 4x. Você pode ler mais sobre nossa arquitetura neste guia de particionamento e colocação em escala. As unidades de solicitação representam o modo como a capacidade da taxa de transferência é provisionada em uma coleção. Você pode ler o guia de unidades de solicitação e o guia de provisionamento das RU/s para saber mais. Quando você migra uma coleção, o Azure Cosmos DB provisiona fragmentos suficientes para atender às unidades de solicitação provisionadas e armazenar os dados. Portanto, a estimativa das RU/s para coleções é uma etapa importante na escala do conjunto de dados planejado do Azure Cosmos DB antes da migração. Com base em nossa experiência com milhares de clientes, descobrimos que esta fórmula nos ajuda a chegar a uma estimativa aproximada de RU/s por meio de vCores ou vCPUs:

Provisioned RU/s = C*T/R

  • T: total de vCores e/ou vCPUs nos conjuntos de réplicas com suporte de dados do banco de dados existente.
  • R: fator de replicação dos conjuntos de réplicas com suporte de dados existentes.
  • C RU/s provisionadas recomendadas por vCore ou vCPU. Esse valor é derivado da arquitetura do Azure Cosmos DB:
    • C = 600 RU/s/vCore* para o Azure Cosmos DB for NoSQL
    • C = 1000 RU/s/vCore* para o Azure Cosmos DB for MongoDB v4.0
    • As estimativas de C para a API para Cassandra, Gremlin ou para outras APIs não estão disponíveis no momento

Os valores para C são fornecidos acima. O T deve ser determinado examinando o número de vCores ou vCPUs em cada conjunto de réplicas com suporte de dados do banco de dados existente e somando para obter o total; se você não puder estimar o T, siga nosso guia para estimar as RU/s usando o planejador de capacidade do Azure Cosmos DB em vez deste guia. O T não deverá incluir vCores ou vCPUs associados ao servidor de roteamento de banco de dados existente ou ao cluster de configuração, se ele tiver esses componentes.

Para o R, recomendamos conectar o fator de replicação médio dos conjuntos de réplicas de banco de dados; se essas informações não estiverem disponíveis, R=3 é uma boa regra prática.

As APIs de interoperabilidade do Azure Cosmos DB são executadas sobre a API para NoSQL e implementam as próprias arquiteturas exclusivas. Portanto, o Azure Cosmos DB for MongoDB v4.0 tem um valor de C diferente da API do Azure Cosmos DB para NoSQL.

Exemplo aprovado: estimativa de RU/s para migração do conjunto de réplicas único

Migrate a replica set with 3 replicas of a four-core SKU to Azure Cosmos DB

Considere um conjunto de réplicas único com um fator de replicação de R=3 com base em um SKU de servidor com quatro núcleos. Então

  • T = 12 vCores
  • R = 3

Então, as unidades de solicitação recomendadas para a API do Azure Cosmos DB para NoSQL são

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (12 vCores) / (3) = 2,400 RU/s

E as unidades de solicitação recomendadas para o Azure Cosmos DB for MongoDB são

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (12 vCores) / (3) = 4,000 RU/s

Exemplo aprovado: estimar RU/s ao migrar um cluster de conjuntos de réplicas homogêneos

Migrate a homogeneous sharded replica set with 3 shards, each with three replicas of a four-core SKU, to Azure Cosmos DB

Considere um cluster fragmentado e replicado compreendendo três conjuntos de réplicas, cada um com um fator de replicação três, em que cada servidor é um SKU com quatro núcleos. Então

  • T = 36 vCores
  • R = 3

Então, as unidades de solicitação recomendadas para a API do Azure Cosmos DB para NoSQL são

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (36 vCores) / (3) = 7,200 RU/s

E as unidades de solicitação recomendadas para o Azure Cosmos DB for MongoDB são

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (36 vCores) / (3) = 12,000 RU/s

Exemplo aprovado: estimar RU/s ao migrar um cluster de conjuntos de réplicas heterogêneos

Migrate a heterogeneous sharded replica set with 3 shards, each with different numbers of replicas of a four-core SKU, to Azure Cosmos DB

Considere um cluster fragmentado e replicado compreendendo três conjuntos de réplicas, em que cada servidor é um SKU com quatro núcleos. Os conjuntos de réplicas são "heterogêneos" no sentido de que cada um tem um fator de replicação diferente: 3x, 1x e 5x, respectivamente. A abordagem recomendada é usar o fator de replicação médio ao calcular as unidades de solicitação. Então

  • T = 36 vCores
  • Ravg = (3+1+5)/3 = 3

Então, as unidades de solicitação recomendadas para a API do Azure Cosmos DB para NoSQL são

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (36 vCores) / (3) = 7,200 RU/s

E as unidades de solicitação recomendadas para o Azure Cosmos DB for MongoDB são

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (36 vCores) / (3) = 12,000 RU/s

Dicas para obter a estimativa de RU/s mais precisa

Como migrar de um banco de dados gerenciado na nuvem: se você usa atualmente um banco de dados gerenciado em nuvem, esses serviços geralmente parecem ser provisionados em unidades de vCores ou vCPUs (em outras palavras, T), mas a contagem de núcleos que você provisiona define o valor de vCores/réplica ou de vCPU/replica (T/R) para um conjunto de réplicas de nó R; o verdadeiro número de núcleos é R vezes mais do que o provisionado explicitamente. É recomendável determinar se esta descrição se aplica ao banco de dados gerenciado em nuvem atual e, se for o caso, você deve multiplicar o número nominal de vCores ou vCPUs provisionados por R para obter uma estimativa precisa de T.

vCores versus vCPUs: neste artigo, tratamos "vCore" e "vCPU" como sinônimos, portanto, C tem unidades de RU/s/vCore ou RU/s/vCPU, sem distinção. No entanto, na prática, essa simplificação pode não ser precisa em algumas situações. Esses termos podem ter significados distintos; por exemplo, se as CPUs físicas dão suporte a hyperthreading, é possível que 2 vCPU = 1 vCore w/HT ou outra opção. Em geral, a relação vCore/vCPU depende do hardware e é recomendável investigar qual é a relação no hardware do cluster existente e se a computação do cluster é provisionada em termos de vCores ou vCPUs. Se vCPU e vCore tiverem significados distintos no hardware, é recomendável tratar as estimativas acima de C como se elas tivessem unidades de RU/s/vCore e, se necessário, converter o T de vCPU para vCore usando o fator de conversão apropriado para o hardware.

Resumo

A estimativa de RU/s de vCores ou vCPUs requer a coleta de informações sobre o total de vCores/vCPUs e o fator de replicação dos conjuntos de réplicas do banco de dados existente. Em seguida, você pode usar relacionamentos conhecidos entre vcores/vCPUs e taxa de transferência para estimar RU/s (unidades de solicitação) do Azure Cosmos DB. Encontrar essa estimativa de unidade de solicitação será uma etapa importante na previsão da escala do conjunto de dados do Azure Cosmos DB após a migração.

A tabela abaixo resume a relação entre vCores e vCPUs para a API do Azure Cosmos DB para NoSQL e a API para MongoDB v4.0:

vCores RU/s (API para NoSQL)
(fator de replicação=3)
RU/s (API para MongoDB v4.0)
(fator de replicação=3)
3 600 1000
6 1200 2000
12 2400 4000
24 4800 8000
48 9600 16000
96 19200 32000
192 38400 64000
384 76800 128000

Próximas etapas