Unidades de Pedido no Azure Cosmos DBRequest Units in Azure Cosmos DB

APLICA A: SQL API Cassandra API API Table API Azure Cosmos DB API para MongoDB

Azure Cosmos DB suporta muitas APIs, tais como SQL, MongoDB, Cassandra, Gremlin e Table.Azure Cosmos DB supports many APIs, such as SQL, MongoDB, Cassandra, Gremlin, and Table. Cada API tem o seu próprio conjunto de operações de base de dados.Each API has its own set of database operations. Estas operações vão desde leituras simples de pontos e escritas a consultas complexas.These operations range from simple point reads and writes to complex queries. Cada operação de base de dados consome recursos do sistema com base na complexidade da operação.Each database operation consumes system resources based on the complexity of the operation.

O custo de todas as operações de bases de dados é regulado pelo Azure Cosmos DB e é expresso por Unidades de Pedido (ou RUs, abreviatura em inglês).The cost of all database operations is normalized by Azure Cosmos DB and is expressed by Request Units (or RUs, for short). A unidade de pedido é uma moeda de desempenho que abstrai os recursos do sistema tais como CPU, IOPS e memória que são necessárias para executar as operações de base de dados suportadas por Azure Cosmos DB.Request unit is a performance currency abstracting the system resources such as CPU, IOPS, and memory that are required to perform the database operations supported by Azure Cosmos DB.

O custo para fazer uma leitura de ponto (isto é, buscar um único item pelo seu valor de ID e chave de partição) para um item de 1 KB é 1 Unidade de Pedido (ou 1 RU).The cost to do a point read (i.e. fetching a single item by its ID and partition key value) for a 1 KB item is 1 Request Unit (or 1 RU). É atribuído um custo através das RUs, de forma semelhante, a todas as outras operações de bases de dados.All other database operations are similarly assigned a cost using RUs. Não interessa que API utiliza para interagir com o contentor do Azure Cosmos: os custos são sempre medidos por RUs.No matter which API you use to interact with your Azure Cosmos container, costs are always measured by RUs. Quer a operação da base de dados seja uma escrita, leitura de ponto ou consulta, os custos são sempre medidos em RUs.Whether the database operation is a write, point read, or query, costs are always measured in RUs.

A imagem seguinte mostra a ideia de alto nível das RUs:The following image shows the high-level idea of RUs:

Operações de base de dados consomem Unidades de Pedido

Para gerir e planear capacidade, o Azure Cosmos DB assegura que o número de RUs para uma determinada operação de base de dados sobre um determinado conjunto de dados é determinista.To manage and plan capacity, Azure Cosmos DB ensures that the number of RUs for a given database operation over a given dataset is deterministic. Pode examinar o cabeçalho da resposta para monitorizar o número de RUs que são consumidas por qualquer operação de base de dados.You can examine the response header to track the number of RUs that are consumed by any database operation. Quando compreender os fatores que afetam os encargos ru e os requisitos de produção da sua aplicação, pode executar o custo da sua aplicação de forma eficaz.When you understand the factors that affect RU charges and your application's throughput requirements, you can run your application cost effectively.

O tipo de conta Azure Cosmos que está a usar determina a forma como as RUs consumidas são cobradas.The type of Azure Cosmos account you're using determines the way consumed RUs get charged. Existem 3 modos nos quais pode criar uma conta:There are 3 modes in which you can create an account:

  1. Modo de produção previsto: Neste modo, fornece o número de RUs para a sua aplicação por segundo em incrementos de 100 RUs por segundo.Provisioned throughput mode: In this mode, you provision the number of RUs for your application on a per-second basis in increments of 100 RUs per second. Para escalar a produção prevista para a sua aplicação, pode aumentar ou diminuir o número de RUs a qualquer momento em incrementos ou decrépitos de 100 RUs.To scale the provisioned throughput for your application, you can increase or decrease the number of RUs at any time in increments or decrements of 100 RUs. Pode efetuar as suas alterações através de programação ou do portal do Azure.You can make your changes either programmatically or by using the Azure portal. É cobrado de hora em hora pelo montante de RUs por segundo que a provisionou.You are billed on an hourly basis for the amount of RUs per second you have provisioned. Para saber mais, consulte o artigo Produção.To learn more, see the Provisioned throughput article.

    Pode provisões com duas granularidades distintas:You can provision throughput at two distinct granularities:

  2. Modo serverless: Neste modo, não é necessário prever qualquer produção na criação de recursos na sua conta Azure Cosmos.Serverless mode: In this mode, you don't have to provision any throughput when creating resources in your Azure Cosmos account. No final do seu período de faturação, é cobrado a quantidade de Unidades de Pedido que foi consumida pelas suas operações de base de dados.At the end of your billing period, you get billed for the amount of Request Units that has been consumed by your database operations. Para saber mais, consulte o artigo de produção serverless.To learn more, see the Serverless throughput article.

  3. Modo de autoestamação: Neste modo, pode escalar automaticamente e instantaneamente a potência (RU/s) da sua base de dados ou contentor com base na sua utilização, sem afetar a disponibilidade, a latência, a produção ou o desempenho da carga de trabalho.Autoscale mode: In this mode, you can automatically and instantly scale the throughput (RU/s) of your database or container based on it's usage, without impacting the availability, latency, throughput, or performance of the workload. Este modo é adequado para cargas de trabalho críticas de missão que têm padrões de tráfego variáveis ou imprevisíveis, e requerem SLAs em alto desempenho e escala.This mode is well suited for mission-critical workloads that have variable or unpredictable traffic patterns, and require SLAs on high performance and scale. Para saber mais, consulte o artigo de produção de escala automática.To learn more, see the autoscale throughput article.

Considerações da Unidade de PedidoRequest Unit considerations

Embora calcule o número de RUs consumidos pela sua carga de trabalho, considere os seguintes fatores:While you estimate the number of RUs consumed by your workload, consider the following factors:

  • Tamanho do item: à medida que o tamanho de um item aumenta, o número de RUs consumidos para ler ou escrever o item também aumenta.Item size: As the size of an item increases, the number of RUs consumed to read or write the item also increases.

  • Indexação do item: por predefinição, cada item é automaticamente indexado.Item indexing: By default, each item is automatically indexed. São consumidas menos RUs se optar por não indexar alguns dos seus itens num contentor.Fewer RUs are consumed if you choose not to index some of your items in a container.

  • Contagem de propriedades do item: assumindo que a indexação predefinida existe em todas as propriedades, o número de RUs consumidas para escrever um item aumenta à medida que a contagem de propriedades do item aumenta.Item property count: Assuming the default indexing is on all properties, the number of RUs consumed to write an item increases as the item property count increases.

  • Propriedades indexadas: uma política de indexação em cada contentor determina as propriedades indexadas por predefinição.Indexed properties: An index policy on each container determines which properties are indexed by default. Para reduzir o consumo de RUs para operações de escrita, limite o número de propriedades indexadas.To reduce the RU consumption for write operations, limit the number of indexed properties.

  • Consistência dos dados: Os níveis fortes e limitados de consistência da estagnação consomem aproximadamente duas vezes mais RUs enquanto realizam operações de leitura quando comparadas com as de outros níveis de consistência descontraídos.Data consistency: The strong and bounded staleness consistency levels consume approximately two times more RUs while performing read operations when compared to that of other relaxed consistency levels.

  • Tipo de leituras: As leituras de pontos custam significativamente menos RUs do que consultas.Type of reads: Point reads cost significantly fewer RUs than queries.

  • Padrões de consulta: a complexidade de uma consulta afeta a quantidade de RUs consumidas durante uma operação.Query patterns: The complexity of a query affects how many RUs are consumed for an operation. Os fatores que afetam o custo das operações de consulta incluem:Factors that affect the cost of query operations include:

    • O número de resultados da consultaThe number of query results
    • O número de predicadosThe number of predicates
    • A natureza dos predicadosThe nature of the predicates
    • O número de funções definidas pelo utilizadorThe number of user-defined functions
    • O tamanho dos dados de origemThe size of the source data
    • O tamanho do conjunto de resultadosThe size of the result set
    • ProjeçõesProjections

    A mesma consulta sobre os mesmos dados custará sempre o mesmo número de RUs em execuções repetidas.The same query on the same data will always costs the same number of RUs on repeated executions.

  • Utilização do script: Tal como acontece com consultas, os procedimentos armazenados e os gatilhos consomem RUs com base na complexidade das operações que são realizadas.Script usage: As with queries, stored procedures and triggers consume RUs based on the complexity of the operations that are performed. À medida que desenvolve a sua aplicação, inspecione o cabeçalho de encargos de pedidos para compreender melhor quanta capacidade de RUs é consumida pelas operações.As you develop your application, inspect the request charge header to better understand how much RU capacity each operation consumes.

Unidades de pedido e várias regiõesRequest units and multiple regions

Se você fornecer RUs 'R' num recipiente Cosmos (ou base de dados), a Cosmos DB garante que as RUs 'R' estão disponíveis em cada região associada à sua conta Cosmos.If you provision 'R' RUs on a Cosmos container (or database), Cosmos DB ensures that 'R' RUs are available in each region associated with your Cosmos account. Não se pode atribuir RUs seletivamente a uma região específica.You can't selectively assign RUs to a specific region. As RUs a provisionadas num contentor cosmos (ou base de dados) são a provisionadas em todas as regiões associadas à sua conta Cosmos.The RUs provisioned on a Cosmos container (or database) are provisioned in all the regions associated with your Cosmos account.

Assumindo que um recipiente Cosmos está configurado com RUs 'R' e existem regiões 'N' associadas à conta Cosmos, o total de RUs disponível globalmente no recipiente = R x N.Assuming that a Cosmos container is configured with 'R' RUs and there are 'N' regions associated with the Cosmos account, the total RUs available globally on the container = R x N.

A sua escolha de modelo de consistência também afeta a produção.Your choice of consistency model also affects the throughput. Pode obter aproximadamente 2x de produção de leitura para os níveis de consistência mais descontraídos (por exemplo, sessão, prefixo consistente e consistência eventual) em comparação com níveis de consistência mais fortes (por exemplo, estagnação limitada ou forte consistência).You can get approximately 2x read throughput for the more relaxed consistency levels (e.g., session, consistent prefix and eventual consistency) compared to stronger consistency levels (e.g., bounded staleness or strong consistency).

Passos seguintesNext steps