Unidades de Solicitação no Azure Cosmos DBRequest Units in Azure Cosmos DB

Com o Azure Cosmos DB, você paga pela taxa de transferência provisionada e pelo armazenamento que consome por hora.With Azure Cosmos DB, you pay for the throughput you provision and the storage you consume on an hourly basis. A taxa de transferência deve ser provisionada para garantir que recursos de sistema suficientes estejam disponíveis para o banco de dados Cosmos do Azure em todos os momentos.Throughput must be provisioned to ensure that sufficient system resources are available for your Azure Cosmos database at all times. Você precisa de recursos suficientes para atender ou exceder os SLAs de Azure Cosmos DB.You need enough resources to meet or exceed the Azure Cosmos DB SLAs.

O Azure Cosmos DB dá suporte a muitas APIs como SQL, MongoDB, Cassandra, Gremlin e Table.Azure Cosmos DB supports many APIs, such as SQL, MongoDB, Cassandra, Gremlin, and Table. Cada API tem seu próprio conjunto de operações de banco de dados.Each API has its own set of database operations. Essas operações variam de simples leituras e gravações de pontos a consultas complexas.These operations range from simple point reads and writes to complex queries. Cada operação de banco 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 banco de dados é normalizado por Azure Cosmos DB e é expresso por unidades de solicitação (ou RUs, para curto).The cost of all database operations is normalized by Azure Cosmos DB and is expressed by Request Units (or RUs, for short). É possível pensar em RUs por segundo como a moeda para a taxa de transferência.You can think of RUs per second as the currency for throughput. RUs por segundo é uma moeda baseada em taxa.RUs per second is a rate-based currency. Elas extraem os recursos do sistema como CPU, IOPS e memória que são necessários para executar as operações do banco de dados com suporte no Azure Cosmos DB.It abstracts 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 ler um item de 1 KB é 1 unidade de solicitação (ou 1 RU).The cost to read a 1 KB item is 1 Request Unit (or 1 RU). De forma semelhante, todas as outras operações de banco de dados recebem um custo usando RUs.All other database operations are similarly assigned a cost using RUs. Independentemente da API usada para interagir com o contêiner do Azure Cosmos DB, os custos sempre serão medidos por RUs.No matter which API you use to interact with your Azure Cosmos container, costs are always measured by RUs. Independentemente da operação do banco de dados ser uma gravação, leitura ou consulta, os custos sempre serão medidos em RUs.Whether the database operation is a write, read, or query, costs are always measured in RUs.

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

Operações do banco de dados consomem Unidades de Solicitação

Para gerenciar e planejar a capacidade, o Azure Cosmos DB garante que o número de RUs para uma determinada operação de banco de dados em um determinado conjunto de dados seja determinístico.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. Você pode examinar o cabeçalho de resposta para controlar o número de RUs consumidas por qualquer operação de banco de dados.You can examine the response header to track the number of RUs that are consumed by any database operation. Ao entender os fatores que afetam os encargos de ru e os requisitos de taxa de transferência do aplicativo, você pode executar o aplicativo de forma econômica.When you understand the factors that affect RU charges and your application's throughput requirements, you can run your application cost effectively.

Você provisiona o número de RUs para o aplicativo em uma base por segundo em incrementos de 100 RUs por segundo.You provision the number of RUs for your application on a per-second basis in increments of 100 RUs per second. Para dimensionar a taxa de transferência provisionada ao aplicativo, você poderá aumentar ou diminuir o número de RUs a qualquer momento.To scale the provisioned throughput for your application, you can increase or decrease the number of RUs at any time. Você pode dimensionar em incrementos ou decrementos de 100 RUs.You can scale in increments or decrements of 100 RUs. É possível fazer as alterações programaticamente ou usando o portal do Azure.You can make your changes either programmatically or by using the Azure portal. Você é cobrado por hora.You are billed on an hourly basis.

Você pode provisionar a taxa de transferência em duas granularidades distintas:You can provision throughput at two distinct granularities:

Considerações sobre Unidade de SolicitaçãoRequest Unit considerations

Enquanto você estima o número de RUs por segundo para provisionar, considere os seguintes fatores:While you estimate the number of RUs per second to provision, consider the following factors:

  • Tamanho do item: Na medida em que o tamanho de um item aumentar, o número de RUs consumidas para leitura ou gravação do item também aumentará.Item size: As the size of an item increases, the number of RUs consumed to read or write the item also increases.

  • Indexação de itens: Por padrão, cada item é indexado automaticamente.Item indexing: By default, each item is automatically indexed. Menos RUs serão consumidas se você optar por não indexar alguns dos itens em um contêiner.Fewer RUs are consumed if you choose not to index some of your items in a container.

  • Contagem de propriedades do item: Supondo que a indexação padrão esteja em todas as propriedades, o número de RUs consumidas para gravar um item aumenta conforme 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 índice em cada contêiner determina quais propriedades são indexadas por padrão.Indexed properties: An index policy on each container determines which properties are indexed by default. Para reduzir o consumo de RU para operações de gravação, limite o número de propriedades indexadas.To reduce the RU consumption for write operations, limit the number of indexed properties.

  • Consistência de dados: Os níveis de consistência de desatualização limitada e forte consomem aproximadamente duas vezes mais RUs durante a execução de operações de leitura, quando comparados com outros níveis de consistência flexíveis.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.

  • Padrões de consulta: A complexidade de uma consulta afetará quantas RUs serão consumidas por uma operação.Query patterns: The complexity of a query affects how many RUs are consumed for an operation. 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 usuárioThe 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

    O Azure Cosmos DB garante que a mesma consulta nos mesmos dados sempre custa o mesmo número de RUs em execuções repetidas.Azure Cosmos DB guarantees that the same query on the same data always costs the same number of RUs on repeated executions.

  • Uso de script: Assim como acontece com as consultas, os procedimentos armazenados e gatilhos consomem RUs com base na complexidade das operações que são executadas.Script usage: As with queries, stored procedures and triggers consume RUs based on the complexity of the operations that are performed. Ao desenvolver seu aplicativo, inspecione o cabeçalho de encargo de solicitação para entender melhor a quantidade de capacidade de ru consumida por cada operação.As you develop your application, inspect the request charge header to better understand how much RU capacity each operation consumes.

Próximas etapasNext steps