Introdução à produção prevista na Azure Cosmos DB

APLICA-SE A: API de SQL API para Cassandra API do Gremlin API de Tabela API do Azure Cosmos DB para MongoDB

O Azure Cosmos DB permite-lhe definir a produção prevista nas suas bases de dados e contentores. Existem dois tipos de produção a provisionada, standard (manual) ou autoescala. Este artigo apresenta uma visão geral de como funciona o produção.

Uma base de dados do Azure Cosmos é uma unidade de gestão para um conjunto de contentores. Uma base de dados é constituída por um conjunto de contentores independentes de esquemas. Um contentor do Azure Cosmos é a unidade de escalabilidade para o débito e para o armazenamento. Um contentor é particionado horizontalmente num conjunto de computadores numa região do Azure e é distribuído por todas as regiões do Azure associadas à conta do Azure Cosmos.

Com a Azure Cosmos DB, pode provisões em duas granularidades:

  • Contentores do Azure Cosmos
  • Bases de dados do Azure Cosmos

Produção definida num recipiente

A produção ateada num contentor Azure Cosmos é exclusivamente reservada a esse contentor. O contentor recebe sempre a produção a provisionada. A produção a provisionada num contentor é apoiada financeiramente pelas AEA. Para aprender a configurar a produção padrão (manual) num recipiente, consulte a produção de provisão num recipiente Azure Cosmos. Para aprender a configurar a produção de autoescalação num recipiente, consulte a produção de autoescala .

A definição de produção prevista num recipiente é a opção mais utilizada. Pode dimensionar elasticamente a produção de um recipiente, fornecendo qualquer quantidade de produção através da utilização de Unidades de Pedido (RUs).

A produção prevista para um recipiente é distribuída uniformemente entre as suas divisórias físicas, e assumindo uma boa chave de partição que distribui uniformemente as divisórias lógicas entre as divisórias físicas, a produção também é distribuída uniformemente por todas as divisórias lógicas do recipiente. Não é possível especificar seletivamente a produção de divisórias lógicas. Uma ou mais divisórias lógicas de um recipiente são acolhidas por uma partição física, as divisórias físicas pertencem exclusivamente ao recipiente e suportam a produção prevista no recipiente.

Se a carga de trabalho em execução numa partição lógica consumir mais do que a produção que foi atribuída à partição física subjacente, é possível que as suas operações sejam limitadas. O que é conhecido como uma partição quente ocorre quando uma partição lógica tem desproporcionalmente mais pedidos do que outros valores-chave de partição.

Quando ocorre uma limitação da taxa, pode aumentar a produção prevista para todo o contentor ou voltar a tentar as operações. Também deve certificar-se de que escolhe uma chave de partição que distribui uniformemente o armazenamento e o volume de pedidos. Para obter mais informações sobre a partição, consulte a partição e a escala horizontal em Azure Cosmos DB.

Recomendamos que configuure a produção na granularidade do recipiente quando pretender um desempenho previsível para o recipiente.

A imagem a seguir mostra como uma partição física acolhe uma ou mais divisórias lógicas de um recipiente:

Partição física que acolhe uma ou mais divisórias lógicas de um recipiente

Definir o débito numa base de dados

Quando fornece a produção numa base de dados Azure Cosmos, a produção é partilhada em todos os contentores (chamados contentores de base de dados partilhados) na base de dados. A única exceção ocorre se tiver especificado um débito aprovisionado em contentores específicos na base de dados. A partilha da produção de nível de base de dados entre os seus contentores é análoga à hospedagem de uma base de dados num conjunto de máquinas. Como todos os contentores dentro de uma base de dados partilham os recursos disponíveis numa máquina, naturalmente não obtém um desempenho previsível em nenhum recipiente específico. Para aprender a configurar a produção prevista numa base de dados, consulte a produção de configure prevista numa base de dados do Azure Cosmos. Para aprender a configurar a produção de autoescalação numa base de dados, consulte a produção de escala automática de Provision.

Como todos os contentores dentro da base de dados partilham a produção a forjada, a Azure Cosmos DB não fornece quaisquer garantias de produção previsíveis para um determinado contentor nessa base de dados. A parte da produção que um recipiente específico pode receber depende de:

  • O número de contentores.
  • A escolha das chaves de partição para vários recipientes.
  • A distribuição da carga de trabalho através de várias divisórias lógicas dos contentores.

Recomendamos que configuure a produção numa base de dados quando pretender partilhar a produção em vários contentores, mas não quer dedicar a produção a nenhum recipiente em particular.

Os seguintes exemplos demonstram onde é preferido a prestação de produção ao nível da base de dados:

  • A partilha da produção de uma base de dados através de um conjunto de contentores é útil para uma aplicação multitenante. Cada utilizador pode ser representado por um recipiente Azure Cosmos distinto.

  • Partilhar a produção de uma base de dados através de um conjunto de contentores é útil quando migra uma base de dados NoSQL, como o MongoDB ou a Cassandra, hospedado num conjunto de VMs ou de servidores físicos no local para a Azure Cosmos DB. Pense na produção a provisionada configurada na sua base de dados Azure Cosmos como um equivalente lógico, mas mais rentável e elástico, à capacidade de computação do seu cluster MongoDB ou Cassandra.

Todos os recipientes criados dentro de uma base de dados com produção a forerada devem ser criados com uma chave de partição. A qualquer momento, a produção atribuída a um contentor dentro de uma base de dados é distribuída por todas as divisórias lógicas desse contentor. Quando se tem contentores que partilham a produção configurada numa base de dados, não se pode aplicar seletivamente a produção a um recipiente específico ou a uma divisória lógica.

Se a carga de trabalho numa partição lógica consumir mais do que a produção atribuída a uma partição lógica específica, as suas operações são limitadas à taxa. Quando ocorre uma limitação de tarifas, pode aumentar a produção de toda a base de dados ou voltar a tentar as operações. Para obter mais informações sobre partição, consulte divisórias lógicas.

Os contentores numa base de dados de débito partilhado partilham o débito (RU/s) alocado a essa base de dados. Com a produção normalizada (manual), pode ter até 25 contentores com um mínimo de 400 RU/s na base de dados. Com a produção de autoescala a provisionada, pode ter até 25 contentores numa base de dados com max 4000 RU/s (balanças entre 400 e 4000 RU/s).

Nota

Em fevereiro de 2020, introduzimos uma alteração que permite ter um máximo de 25 contentores numa base de dados de produção partilhada, o que permite melhor a partilha de produção através dos contentores. Após os primeiros 25 contentores, só pode adicionar mais contentores à base de dados se forem a provisionados com produção dedicada, que é separada da produção partilhada da base de dados.
Se a conta do Azure Cosmos DB já tiver uma base de dados de débito partilhado com >=25 contentores, a conta e todas as outras contas na mesma subscrição do Azure estarão isentas desta alteração. Por favor contacte o suporte do produto se tiver feedback ou dúvidas.

Se as suas cargas de trabalho envolverem a eliminação e recriação de todas as coleções numa base de dados, recomenda-se que deixe cair a base de dados vazia e recrie uma nova base de dados antes da criação da recolha. A imagem a seguir mostra como uma partição física pode acolher uma ou mais divisórias lógicas que pertencem a diferentes recipientes dentro de uma base de dados:

Partição física que acolhe uma ou mais divisórias lógicas que pertencem a diferentes recipientes

Produção definida numa base de dados e num contentor

Pode combinar os dois modelos. É permitida a provisão da base de dados e do contentor. O exemplo a seguir mostra como prever a produção normalizada (manual) prevista numa base de dados da Azure Cosmos e num contentor:

  • Pode criar uma base de dados Azure Cosmos chamada Z com produção padrão (manual) de RUs "K".

  • Em seguida, crie cinco recipientes chamados A, B, C, D e E dentro da base de dados. Ao criar o contentor B, certifique-se de que permite a produção dedicada a esta opção de contentor e configure explicitamente as RUs "P" de produção prevista neste recipiente. Só pode configurar a produção partilhada e dedicada ao criar a base de dados e o contentor.

    Definir a produção ao nível do contentor

  • A produção de RUs "K" é partilhada nos quatro contentores A, C, D e E. A quantidade exata de produção disponível para A, C, D ou E varia. Não há SLAs para a produção de cada contentor.

  • O contentor chamado B tem a garantia de obter sempre a produção de RUs "P". É apoiado por SLAs.

Nota

Um contentor com produção a forerada não pode ser convertido para recipiente de base de dados partilhado. Inversamente, um recipiente de base de dados partilhado não pode ser convertido para ter uma produção dedicada.

Atualizar a produção numa base de dados ou num contentor

Depois de criar um recipiente Azure Cosmos ou uma base de dados, pode atualizar a produção prevista. Não existe limite para a produção máxima prevista que possa configurar na base de dados ou no contentor.

Produção atual a provisionada

Pode recuperar o rendimento previsto de um contentor ou de uma base de dados no portal Azure ou utilizando os SDKs:

A resposta desses métodos contém também o rendimento mínimo previsto para o contentor ou base de dados:

A RU/s mínima real pode variar consoante a configuração da conta. Geralmente, é o máximo de:

  • 400 RU/s
  • Armazenamento atual em GB * 10 RU/s (esta restrição pode ser relaxada em alguns casos, consulte o nosso programa de alto armazenamento /baixo produção)
  • RU/s mais alto alguma vez a provisionado na base de dados ou no contentor / 100

Alteração da produção a provisionada

Pode escalar a produção de um contentor ou de uma base de dados através do portal Azure ou utilizando os SDKs:

Se estiver a reduzir a produção a provisionada, poderá fazê-lo até ao mínimo.

Se estiver a aumentar a produção prevista, a maior parte do tempo, a operação é instantânea. Existem, no entanto, casos em que a operação pode demorar mais tempo devido às tarefas do sistema para a disponibilização dos recursos necessários. Neste caso, uma tentativa de modificar a produção prevista enquanto esta operação está em curso produzirá uma resposta HTTP 423 com uma mensagem de erro explicando que outra operação de escala está em curso.

Saiba mais nas Melhores Práticas para dimensionamento do artigo de produção (RU/s).

Nota

Se está a planear uma carga de trabalho de ingestão muito grande que exigirá um grande aumento da produção a provisionada, tenha em mente que a operação de escala não tem SLA e, como referido no parágrafo anterior, pode demorar muito tempo quando o aumento for grande. É melhor planear com antecedência e iniciar a escala antes do início da carga de trabalho e utilizar os métodos abaixo para verificar o progresso.

Pode verificar programáticamente o progresso da escala, lendo a produção atual prevista e utilizando:

Pode utilizar as métricas do Azure Monitor para visualizar o histórico de produção provisida (RU/s) e armazenamento num recurso.

Programa de alta produção /baixo rendimento

Tal como descrito na secção de produção atual acima, a produção mínima que pode prever num contentor ou base de dados depende de uma série de fatores. Um deles é a quantidade de dados atualmente armazenados, uma vez que a Azure Cosmos DB impõe uma produção mínima de 10 RU/s por GB de armazenamento.

Isto pode ser uma preocupação em situações em que você precisa armazenar grandes quantidades de dados, mas tem baixos requisitos de produção em comparação. Para melhor acomodar estes cenários, a Azure Cosmos DB introduziu um programa de "alto armazenamento/baixo rendimento" que diminui a restrição RU/s por GB em contas elegíveis.

Para aderir a este programa e avaliar a sua plena elegibilidade, tudo o que tem de fazer é preencher esta pesquisa. A equipa DB da Azure Cosmos irá então acompanhar e proceder com o seu embarque.

Comparação de modelos

Este quadro mostra uma comparação entre a produção padrão de provisionamento (manual) numa base de dados vs. num contentor.

Parâmetro Produção padrão (manual) numa base de dados Produção padrão (manual) num recipiente Produção de escala automática numa base de dados Produção de escala automática num contentor
Ponto de entrada (ru/s mínimo) 400 RU/s. Pode ter até 25 recipientes sem ru/s mínimo por recipiente. 400 Autoescala entre 400 - 4000 RU/s. Pode ter até 25 recipientes sem ru/s mínimo por recipiente. Autoescala entre 400 - 4000 RU/s.
RU/s mínimo por contentor -- 400 -- Autoescala entre 400 - 4000 RU/s
RUs máximos Ilimitado, na base de dados. Ilimitado, no contentor. Ilimitado, na base de dados. Ilimitado, no contentor.
RUs atribuídos ou disponíveis para um recipiente específico Sem garantias. As RUs atribuídas a um dado contentor dependem das propriedades. As propriedades podem ser a escolha das chaves de partição dos contentores que partilham a produção, a distribuição da carga de trabalho e o número de contentores. Todas as RUs configuradas no recipiente são exclusivamente reservadas ao recipiente. Sem garantias. As RUs atribuídas a um dado contentor dependem das propriedades. As propriedades podem ser a escolha das chaves de partição dos contentores que partilham a produção, a distribuição da carga de trabalho e o número de contentores. Todas as RUs configuradas no recipiente são exclusivamente reservadas ao recipiente.
Armazenamento máximo para um recipiente Sem limites. Ilimitado Ilimitado Ilimitado
Produção máxima por partição lógica de um recipiente 10K RU/s 10K RU/s 10K RU/s 10K RU/s
Armazenamento máximo (dados + índice) por partição lógica de um recipiente 20 GB 20 GB 20 GB 20 GB

Passos seguintes