Quotas de serviço do Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Este artigo fornece uma descrição geral das quotas predefinidas oferecidas a diferentes recursos no Azure Cosmos DB.

Operações de armazenamento e banco de dados

Depois de criar uma conta do Azure Cosmos DB em sua assinatura, você pode gerenciar dados em sua conta criando bancos de dados, contêineres e itens.

Débito aprovisionado

Você pode alocar a taxa de transferência em um nível de contêiner ou de banco de dados em termos de unidades de solicitação (RU/s ou RUs). A tabela a seguir lista os limites de armazenamento e taxa de transferência por contêiner/banco de dados. Armazenamento refere-se à quantidade combinada de dados e armazenamento de índice.

Recurso Limite
Máximo de RUs por contêiner (modo provisionado de taxa de transferência dedicada) 1.000.000 ¹
Máximo de RUs por banco de dados (modo provisionado de taxa de transferência compartilhada) 1.000.000 ¹
Máximo de RUs por partição (lógica ou física) 10.000
Armazenamento máximo entre todos os itens por partição (lógica) 20 GB ²
Número máximo de chaves de partição distintas (lógicas) Ilimitado
Armazenamento máximo por recipiente Ilimitado
Tamanho máximo do anexo por conta (o recurso de anexo está sendo preterido) 2 GB
Mínimo de RU/s necessário por 1 GB 1 RU/s

¹ Você pode aumentar o máximo de RUs por contêiner ou banco de dados preenchendo um tíquete de suporte do Azure.

² Para saber mais sobre as práticas recomendadas para gerenciar cargas de trabalho com chaves de partição que exigem limites mais altos de armazenamento ou taxa de transferência, consulte Criar uma chave de partição sintética. Se sua carga de trabalho já atingiu o limite de partição lógica de 20 GB em produção, é recomendável rearquitetar seu aplicativo com uma chave de partição diferente como uma solução de longo prazo. Para ajudar a dar tempo para arquitetar novamente a aplicação, pode pedir um aumento temporário do limite da chave de partição lógica para a aplicação existente. Arquive um tíquete de suporte do Azure e selecione o tipo de cota Aumento temporário no tamanho da chave de partição lógica do contêiner. Solicitar um aumento temporário pretende ser uma mitigação temporária e não é recomendado como uma solução de longo prazo, pois as garantias de SLA não são honradas quando o limite é aumentado. Para remover a configuração, envie um pedido de suporte e selecione o tipo de quota Restaurar o tamanho da chave de partição lógica do contentor para o tamanho predefinido (20 GB) . O preenchimento desse tíquete de suporte pode ser feito depois que você excluiu os dados para se ajustar ao limite de partição lógica de 20 GB ou rearquitetou seu aplicativo com uma chave de partição diferente.

Limites mínimos de rendimento

Um contêiner do Azure Cosmos DB (ou banco de dados de taxa de transferência compartilhado) usando taxa de transferência manual deve ter uma taxa de transferência mínima de 400 RU/s. À medida que o contêiner cresce, o Azure Cosmos DB requer uma taxa de transferência mínima para garantir que o recurso (banco de dados ou contêiner) tenha recursos suficientes para suas operações.

A taxa de transferência atual e mínima de um contêiner ou banco de dados pode ser recuperada do portal do Azure ou dos SDKs. Para obter mais informações, consulte Alocar taxa de transferência em contêineres e bancos de dados.

O mínimo real de RU/s pode variar dependendo da configuração da sua conta. Você pode usar as métricas do Azure Monitor para exibir o histórico de taxa de transferência provisionada (RU/s) e armazenamento em um recurso.

Débito mínimo no contentor

Use esta seção para estimar a taxa de transferência mínima em um contêiner.

Rendimento manual

Para estimar o mínimo de RU/s exigido de um contêiner com rendimento manual, encontre o máximo de:

  • 400 RU/s
  • Armazenamento atual em GB * 1 RU/s
  • Maior número de RU/s alguma vez aprovisionadas no contentor/100

Por exemplo, você tem um contêiner provisionado com 400 RU/s e armazenamento de 0 GB. Aumente o débito para 50 000 RU/s e importe 20 GB de dados. O RU/s mínimo é agora MAX(400, 20 * 1 RU/s per GB, 50,000 RU/s / 100) = 500 RU/s. Com o tempo, o armazenamento cresce para 2000 GB. O RU/s mínimo é agora MAX(400, 2000 * 1 RU/s per GB, 50,000 / 100) = 2000 RU/s.

Débito de dimensionamento automático

Para estimar o máximo mínimo de RU/s de dimensionamento automático necessário de um contêiner com taxa de transferência de dimensionamento automático, encontre o máximo de:

  • 1000 RU/s
  • Armazenamento atual em GB * 10 RU/s
  • Maior RU/s já provisionado no contêiner / 10

Por exemplo, você tem um contêiner provisionado com 1000 RU/s e armazenamento de 0 GB. Aumente o débito para 50 000 RU/s e importe 20 GB de dados. O mínimo máximo de RU/s é agora MAX(1000, 20 * 10 RU/s per GB, 50,000 RU/s / 10) = 5000 RU/s. Com o tempo, o armazenamento cresce para 2000 GB. O mínimo máximo de RU/s agora MAX(1000, 2000 * 10 RU/s per GB, 50,000 / 10) é = 20.000 RU/s.

Débito mínimo na base de dados de débito partilhado

Use esta seção para estimar a taxa de transferência mínima em uma taxa de transferência de compartilhamento de banco de dados entre contêineres.

Rendimento manual

Para estimar o mínimo de RU/s exigido de um banco de dados de taxa de transferência compartilhado com taxa de transferência manual, encontre o máximo de:

  • 400 RU/s
  • Armazenamento atual em GB * 1 RU/s
  • Maior número de RU/s alguma vez aprovisionadas na base de dados/100
  • 400 + MÁX. (Contagem de contentores – 25, 0) * 100 RU/s

Por exemplo, você tem um banco de dados provisionado com 400 RU/s, 15 GB de armazenamento e 10 contêineres. O RU/s mínimo é MAX(400, 15 * 1 RU/s per GB, 400 / 100, 400 + 0 ) = 400 RU/s. Se houvesse 30 contêineres no banco de dados, o RU/s mínimo seria 400 + MAX(30 - 25, 0) * 100 RU/s = 900 RU/s.

Débito de dimensionamento automático

Para estimar o máximo de RU/s de escala automática mínimo necessário de um banco de dados de taxa de transferência compartilhado com taxa de transferência de dimensionamento automático, localize o máximo de:

  • 1000 RU/s
  • Armazenamento atual em GB * 10 RU/s
  • Maior RU/s já provisionado no banco de dados / 10
  • 1000 + MAX (contagem de recipientes - 25, 0) * 1000 RU / s

Por exemplo, você tem um banco de dados provisionado com 1000 RU/s, 15 GB de armazenamento e 10 contêineres. O máximo mínimo de RU/s para o banco de dados de dimensionamento automático é MAX(1000, 15 * 10 RU/s per GB, 1000 / 10, 1000 + 0 ) = 1000 RU/s. Se houvesse 30 contêineres no banco de dados, o máximo mínimo de RU/s seria 1000 + MAX(30 - 25, 0) * 1000 RU/s = 5000 RU/s.

Em resumo, aqui estão os limites mínimos de RU provisionados ao usar a taxa de transferência provisionada.

Tipo de provisionamento Recurso Limite
Rendimento manual Mínimo de RUs por contêiner (modo provisionado de taxa de transferência dedicada com taxa de transferência manual) 400
Rendimento manual Mínimo de RUs por banco de dados (modo provisionado de taxa de transferência compartilhada com taxa de transferência manual 400 RU/s para os primeiros 25 contentores.
Débito de dimensionamento automático Máximo mínimo de RUs por contêiner (taxa de transferência dedicada, modo provisionado com taxa de transferência de dimensionamento automático) 1000
Débito de dimensionamento automático Máximo mínimo de RUs por banco de dados (taxa de transferência compartilhada, modo provisionado com taxa de transferência de dimensionamento automático) 1000 RU/s para os primeiros 25 contentores.

O Azure Cosmos DB dá suporte ao dimensionamento programático de taxa de transferência (RU/s) por contêiner ou banco de dados por meio dos SDKs ou portal.

Dependendo das configurações atuais de RU/s provisionadas e de recursos, cada recurso pode ser dimensionado de forma síncrona e imediata entre o RU/s mínimo até 100x o RU/s mínimo. Se o valor de taxa de transferência solicitado estiver fora do intervalo, o dimensionamento será executado de forma assíncrona. O dimensionamento assíncrono pode levar de minutos a horas para ser concluído, dependendo da taxa de transferência solicitada e do tamanho do armazenamento de dados no contêiner. Mais informações.

Sem servidor

O Serverless permite que você use seus recursos do Azure Cosmos DB de forma baseada no consumo. A tabela seguinte lista os limites de armazenamento e expansibilidade do débito por contentor/base de dados. Estes limites não podem ser aumentados. É recomendável alocar contas sem servidor extras para mais necessidades de armazenamento.

Recurso Limite
RU/s máximas por contentor 20,000*
Armazenamento máximo entre todos os itens por partição (lógica) 20 GB
Armazenamento máximo por recipiente 1 TB

*A disponibilidade máxima de RU/seg depende dos dados armazenados no contêiner. Consulte Desempenho sem servidor

Plano de controlo

O Azure Cosmos DB mantém um provedor de recursos que oferece uma camada de gerenciamento para criar, atualizar e excluir recursos em sua conta do Azure Cosmos DB. O provedor de recursos faz interface com a camada geral de Gerenciamento de Recursos do Azure, que é o serviço de implantação e gerenciamento do Azure. Você pode criar e gerenciar recursos do Azure Cosmos DB usando o portal do Azure, Azure PowerShell, CLI do Azure, Azure Resource Manager e modelos Bicep, API Rest, SDKs de Gerenciamento do Azure, bem como ferramentas de terceiros como Terraform e Pulumi.

Essa camada de gerenciamento também pode ser acessada a partir dos SDKs do plano de dados do Azure Cosmos DB usados em seus aplicativos para criar e gerenciar recursos em uma conta. Os SDKs de plano de dados também fazem solicitações de plano de controle durante a conexão inicial com o serviço para fazer coisas como enumerar bancos de dados e contêineres, bem como solicitar chaves de conta para autenticação.

Cada conta do Azure Cosmos DB tem um master partition que contém todos os metadados de uma conta. Ele também tem uma pequena quantidade de rendimento para apoiar as operações do avião de controle. As solicitações de plano de controle que criam, leem, atualizam ou excluem esses metadados consomem essa taxa de transferência. Quando a quantidade de taxa de transferência consumida pelas operações do plano de controle excede esse valor, as operações são limitadas à taxa, o mesmo que as operações do plano de dados no Azure Cosmos DB. No entanto, ao contrário da taxa de transferência para operações de dados, a taxa de transferência para a partição mestre não pode ser aumentada.

Algumas operações do plano de controle não consomem a taxa de transferência da partição mestre, como Obter ou Listar Chaves. No entanto, ao contrário das solicitações em dados em sua conta do Azure Cosmos DB, os provedores de recursos no Azure não são projetados para grandes volumes de solicitação. As operações do plano de controle que excedem os limites documentados em níveis sustentados durante períodos consecutivos de 5 minutos podem sofrer limitação de solicitação, bem como operações com falha ou incompletas nos recursos do Azure Cosmos DB.

As operações do plano de controle podem ser monitoradas navegando na guia Insights de uma conta do Azure Cosmos DB. Para saber mais, consulte Monitorar solicitações de plano de controle. Os usuários também podem personalizá-los, usar o Azure Monitor e criar uma pasta de trabalho para monitorar Solicitações de Metadados e definir alertas sobre elas.

Limites de recursos

A tabela a seguir lista os limites de recursos por assinatura ou conta.

Recurso Limite
Número máximo de contas por subscrição 250 por defeito ¹
Número máximo de bancos de dados & contêineres por conta 500 ²
Taxa de transferência máxima suportada por uma conta para operações de metadados 240 RU/s

¹ Os limites padrão diferem para os clientes internos da Microsoft. Você pode aumentar esses limites criando uma solicitação de Suporte do Azure até 1.000 no máximo. O Cosmos DB reserva-se o direito de excluir quaisquer contas de banco de dados vazias, ou seja, sem bancos de dados/coleções. ² Este limite não pode ser aumentado. Contagem total de ambos com uma conta. (1 base de dados e 499 contentores, 250 bases de dados e 250 contentores, etc.)

Limites de pedido

A tabela a seguir lista os limites de solicitação por intervalo de 5 minutos, por conta, a menos que especificado de outra forma.

Operação Limite
Lista máxima ou obter chaves 500 ¹
Máximo Criar banco de dados & contêiner 500
Máximo Obter ou Listar banco de dados & contêiner 500 ¹
Taxa de transferência máxima provisionada de atualização 25
Failover regional máximo 10 (por hora) ²
Número máximo de todas as operações (PUT, POST, PATCH, DELETE, GET) não definido acima 500

¹ Os usuários devem usar o cliente singleton para instâncias SDK e chaves de cache e referências de banco de dados e contêiner entre solicitações durante o tempo de vida dessa instância. ² Os failovers regionais só se aplicam a contas gravadas de uma única região. As contas de gravação de várias regiões não exigem nem permitem alterar a região de gravação.

O Azure Cosmos DB tira automaticamente cópias de segurança dos dados em intervalos regulares. Para obter detalhes sobre intervalos de retenção de backup e janelas, consulte Backup online e restauração de dados sob demanda no Azure Cosmos DB.

Limites por conta

Aqui está uma lista de limites por conta.

Débito aprovisionado

Recurso Limite
Número máximo de bancos de dados e contêineres por conta 500¹
Número máximo de contêineres por banco de dados com taxa de transferência compartilhada 25
Número máximo de regiões Sem limite (Todas as regiões do Azure)

Sem servidor

Recurso Limite
Número máximo de bancos de dados e contêineres por conta 500
Número máximo de regiões 1 (Qualquer região do Azure)

Limites por recipiente

Dependendo da API usada, um contêiner do Azure Cosmos DB pode representar uma coleção, uma tabela ou um gráfico. Os contêineres oferecem suporte a configurações para restrições de chave exclusivas, procedimentos armazenados, gatilhos e UDFs e política de indexação. A tabela a seguir lista os limites específicos para configurações dentro de um contêiner.

Recurso Limite
Comprimento máximo do nome do banco de dados ou do contêiner 255
Número máximo de procedimentos armazenados por contêiner 100 ¹
Número máximo de UDFs por contêiner 50 ¹
Número máximo de chaves exclusivas por contêiner 10 ¹
Número máximo de caminhos por restrição de chave exclusiva 16 ¹
Valor máximo de TTL 2147483647

¹ Você pode aumentar qualquer um desses limites por contêiner criando uma solicitação de Suporte do Azure.

Limites por item

Um item do Azure Cosmos DB pode representar um documento em uma coleção, uma linha em uma tabela ou um nó ou borda em um gráfico; dependendo da API que você usa. A tabela a seguir mostra os limites por item no Azure Cosmos DB.

Recurso Limite
Tamanho máximo de um item 2 MB (comprimento UTF-8 da representação JSON) ¹
Comprimento máximo do valor da chave de partição 2048 bytes (101 bytes se a chave de partição grande não estiver ativada)
Comprimento máximo do valor ID 1023 bytes
Caracteres permitidos para o valor de ID Todos os caracteres Unicode do lado do serviço, exceto '/' e '\' são permitidos.
AVISO: Mas para uma melhor interoperabilidade, RECOMENDAMOS FORTEMENTE usar apenas caracteres ASCII alfanuméricos apenas no valor ID.
Existem várias limitações conhecidas em algumas versões do SDK do Cosmos DB, bem como conectores (ADF, Spark, Kafka etc.) e http-drivers/bibliotecas, etc., que podem impedir o processamento bem-sucedido quando o valor de ID contém caracteres ASCII não alfanuméricos. Assim, para aumentar a interoperabilidade, codifice o valor ID - por exemplo, via Base64 + codificação personalizada de caracteres especiais permitidos em Base64. - se tiver de suportar caracteres ASCII não alfanuméricos no seu serviço/aplicação.
Número máximo de propriedades por item Sem limite prático
Comprimento máximo do nome da propriedade Sem limite prático
Comprimento máximo do valor da propriedade Sem limite prático
Comprimento máximo do valor da propriedade string Sem limite prático
Comprimento máximo do valor da propriedade numérica IEEE754 precisão dupla de 64 bits
Nível máximo de aninhamento para objetos/matrizes incorporados 128
Valor máximo de TTL 2147483647
Precisão/alcance máximo para números em JSON (para garantir uma interoperabilidade segura) IEEE 754 binário64

¹ Documentos grandes de até 16 MB são suportados apenas com o Azure Cosmos DB para MongoDB. Leia a documentação do recurso para saber mais.

Não há restrições sobre as cargas úteis do item (como número de propriedades e profundidade de aninhamento), exceto para as restrições de comprimento na chave de partição e valores de ID, e a restrição de tamanho geral de 2 MB. Talvez seja necessário configurar a política de indexação para contêineres com estruturas de itens grandes ou complexas para reduzir o consumo de RU. Consulte Itens de modelagem no Azure Cosmos DB para obter um exemplo do mundo real e padrões para gerenciar itens grandes.

Limites por solicitação

O Azure Cosmos DB dá suporte a operações CRUD e de consulta em recursos como contêineres, itens e bancos de dados. Ele também suporta solicitações em lote transacionais contra itens com a mesma chave de partição em um contêiner.

Recurso Limite
Tempo máximo de execução para uma única operação (como uma execução de procedimento armazenado ou uma única recuperação de página de consulta) 5 segundos
Tamanho máximo da solicitação (por exemplo, procedimento armazenado, CRUD) 2 MB
Tamanho máximo da resposta (por exemplo, consulta paginada) 4 MB
Número máximo de operações em um lote transacional 100

O Azure Cosmos DB dá suporte à execução de gatilhos durante gravações. O serviço suporta um máximo de um pré-gatilho e um pós-gatilho por operação de gravação.

Quando uma operação como a consulta atinge o tempo limite de execução ou o limite de tamanho da resposta, ela retorna uma página de resultados e um token de continuação para o cliente retomar a execução. Não há limite prático para a duração que uma única consulta pode ser executada em páginas/continuações.

O Azure Cosmos DB usa o HMAC para autorização. Você pode usar uma chave primária para controle de acesso refinado aos recursos. Esses recursos podem incluir contêineres, chaves de partição ou itens. A tabela a seguir lista os limites para tokens de autorização no Azure Cosmos DB.

Recurso Limite
Tempo máximo de expiração do token primário 15 min
Tempo mínimo de expiração do token de recurso 10 minutos
Tempo máximo de expiração do token de recurso 24 h por defeito ¹
Distorção máxima do relógio para autorização de token 15 min

¹ Você pode aumentá-lo preenchendo um tíquete de suporte do Azure

Limites do débito aprovisionado de dimensionamento automático

Consulte o artigo e as perguntas frequentes sobre o dimensionamento automático para obter explicações mais detalhadas sobre a taxa de transferência e os limites de armazenamento com o dimensionamento automático.

Recurso Limite
RU/s máximo para o qual o sistema pode ser dimensionado Tmax, o autoscale max RU/s definido pelo utilizador
RU/s mínimo para o qual o sistema pode ser dimensionado 0.1 * Tmax
RU/s atual o sistema é dimensionado para 0.1*Tmax <= T <= Tmax, com base na utilização
Mínimo de RU/s faturável por hora 0.1 * Tmax

O faturamento é feito por hora, onde você é cobrado pelo maior RU/s que o sistema escalou na hora, ou 0.1*Tmax, o que for maior.
Escala automática mínima máxima de RU/s para um contentor MAX(1000, highest max RU/s ever provisioned / 10, current storage in GB * 10) arredondado para 1000 RU/s mais próximo
Escala automática mínima máxima de RU/s para um banco de dados MAX(1000, highest max RU/s ever provisioned / 10, current storage in GB * 10, 1000 + (MAX(Container count - 25, 0) * 1000)), arredondado para 1000 RU/s mais próximo.

Observe que, se o banco de dados tiver mais de 25 contêineres, o sistema incrementará o máximo mínimo de escala automática de RU/s em 1000 RU/s por contêiner extra. Por exemplo, se você tiver 30 contêineres, o menor RU/s máximo de escala automática que você pode definir é 6000 RU/s (escalas entre 600 e 6000 RU/s).

Limites de consulta SQL

O Azure Cosmos DB dá suporte à consulta de itens usando SQL. A tabela a seguir descreve restrições em instruções de consulta, por exemplo, em termos de número de cláusulas ou comprimento da consulta.

Recurso Limite
Comprimento máximo da consulta SQL 512 KB
Máximo de JOINs por consulta 10 ¹
Máximo de UDFs por consulta 10 ¹
Máximo de pontos por polígono 4096
Máximo de caminhos explicitamente incluídos por contêiner 1500 ¹
Máximo de caminhos explicitamente excluídos por contêiner 1500 ¹
Propriedades máximas em um índice composto 8
Número máximo de caminhos em um índice composto 100

¹ Você pode aumentar qualquer um desses limites de consulta SQL criando uma solicitação de Suporte do Azure.

API para limites específicos do MongoDB

O Azure Cosmos DB dá suporte ao protocolo de fio MongoDB para aplicativos escritos no MongoDB. Você pode encontrar os comandos suportados e as versões de protocolo em Recursos e sintaxe suportados do MongoDB.

A tabela a seguir lista os limites específicos para o suporte ao recurso MongoDB. Outros limites de serviço mencionados para a API para NoSQL também se aplicam à API para MongoDB.

Recurso Limite
Tamanho máximo de um documento 16 MB (comprimento UTF-8 da representação JSON) ¹
Tamanho máximo da memória de consulta do MongoDB (esta limitação é apenas para a versão 3.2 do servidor) 40 MB
Tempo máximo de execução para operações do MongoDB (para a versão 3.2 do servidor) 15 segundos
Tempo máximo de execução para operações do MongoDB (para as versões 3.6 e 4.0 do servidor) 60 segundos
Nível máximo de aninhamento para objetos/matrizes incorporados em definições de índice 6
Tempo limite de conexão ociosa para fechamento de conexão do lado do servidor ² 30 minutos
Limite de tempo para o shell do MongoDB no portal do Azure 120 minutos num período de 24 horas

¹ Documentos grandes de até 16 MB exigem a ativação de recursos no portal do Azure. Leia a documentação do recurso para saber mais.

² Recomendamos que os aplicativos cliente definam o tempo limite de conexão ociosa nas configurações do driver para 2-3 minutos, pois o tempo limite padrão para o Azure LoadBalancer é de 4 minutos. Esse tempo limite garante que um balanceador de carga intermediário ocioso não feche as conexões entre a máquina cliente e o Azure Cosmos DB.

Experimente os limites gratuitos do Azure Cosmos DB

A tabela a seguir lista os limites para a avaliação do Azure Cosmos DB for Free .

Recurso Limite
Duração do ensaio 30 dias (um novo teste pode ser solicitado após o vencimento)
Após a expiração, as informações armazenadas são excluídas.
Máximo de contêineres por assinatura (NoSQL, Gremlin, API for Table) 1
Máximo de contêineres por assinatura (API para MongoDB) 3
Taxa de transferência máxima por contêiner 5000
Taxa de transferência máxima por banco de dados de taxa de transferência compartilhada 20 000
Armazenamento total máximo por conta 10 GB

Experimente o Azure Cosmos DB que suporta a distribuição global apenas nas regiões dos EUA Central, Norte da Europa e Sudeste Asiático. Os tíquetes de suporte do Azure não podem ser criados para experimentar contas do Azure Cosmos DB. No entanto, o suporte é fornecido para assinantes com planos de suporte existentes.

Limites da conta de camada gratuita do Azure Cosmos DB

A tabela a seguir lista os limites para contas de camada gratuita do Azure Cosmos DB.

Recurso Limite
Número de contas de nível gratuito por assinatura do Azure 1
Duração do desconto gratuito Duração da conta. Deve optar por participar durante a criação da conta.
Máximo de RU/s grátis 1000 RU/s
Armazenamento máximo gratuito 25 GB
Número máximo de bancos de dados de taxa de transferência compartilhados 5
Número máximo de contêineres em um banco de dados de taxa de transferência compartilhado 25
Em contas de camada gratuita, o RU/s mínimo para um banco de dados de taxa de transferência compartilhado com até 25 contêineres é de 400 RU/s.

Além da tabela anterior, os limites por conta também se aplicam a contas de nível gratuito. Para saber mais, veja como criar uma conta de nível gratuita.