Unités de requête dans Azure Cosmos DBRequest Units in Azure Cosmos DB

Avec Azure Cosmos DB, vous payez pour le débit que vous provisionnez et le stockage que vous utilisez sur une base horaire.With Azure Cosmos DB, you pay for the throughput you provision and the storage you consume on an hourly basis. Le débit doit être approvisionné de sorte qu’il y ait assez de ressources système disponibles en permanence pour la base de données Azure Cosmos.Throughput must be provisioned to ensure that sufficient system resources are available for your Azure Cosmos database at all times. L’objectif est d’atteindre ou de dépasser les contrats de niveau de service Azure Cosmos DB.You need enough resources to meet or exceed the Azure Cosmos DB SLAs.

Azure Cosmos DB prend en charge de nombreuses API, notamment SQL, MongoDB, Cassandra, Gremlin et Table.Azure Cosmos DB supports many APIs, such as SQL, MongoDB, Cassandra, Gremlin, and Table. Chaque API possède son propre ensemble d’opérations de base de données,Each API has its own set of database operations. qui vont de simples opérations ponctuelles de lecture et d'écriture à des requêtes complexes.These operations range from simple point reads and writes to complex queries. Chaque opération de base de données consomme des ressources système en fonction de sa complexité.Each database operation consumes system resources based on the complexity of the operation.

Le coût de toutes les opérations de base de données, normalisé par Azure Cosmos DB, est exprimé en unités de requête (RU).The cost of all database operations is normalized by Azure Cosmos DB and is expressed by Request Units (or RUs, for short). Vous pouvez considérer les RU/s comme la devise du débit,You can think of RUs per second as the currency for throughput. qui dépend de la vitesse.RUs per second is a rate-based currency. Elles représentent une abstraction des ressources système (processeur, IOPS et mémoire, notamment) nécessaires pour effectuer les opérations de base de données prises en charge par 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.

Le coût de lecture d’un élément de 1 Ko est d’une unité de requête (1 RU).The cost to read a 1 KB item is 1 Request Unit (or 1 RU). Toutes les autres opérations de base de données se voient aussi attribuer un coût en unités de requête.All other database operations are similarly assigned a cost using RUs. Quelle que soit l’API utilisée pour interagir avec le conteneur Azure Cosmos, les coûts sont toujours mesurés en unités de requête,No matter which API you use to interact with your Azure Cosmos container, costs are always measured by RUs. que l’opération de base de données soit une opération d’écriture, de lecture ou de requête.Whether the database operation is a write, read, or query, costs are always measured in RUs.

L’image suivante illustre l’idée générale des unités de requête :The following image shows the high-level idea of RUs:

Les opérations de base de données consomment des unités de requête

Pour gérer et planifier la capacité, Azure Cosmos DB veille à ce que le nombre d’unités de requête d’une opération de base de données spécifique sur un jeu de données spécifique soit déterministe.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. Vous pouvez examiner l’en-tête de réponse pour suivre le nombre d’unités de requête consommées par une opération de base de données.You can examine the response header to track the number of RUs that are consumed by any database operation. Une fois que vous avez compris quels facteurs ont un impact sur les frais d’unités de requête et cerné les besoins de débit de l’application, vous pouvez exécuter l’application de la manière la plus rentable possible.When you understand the factors that affect RU charges and your application's throughput requirements, you can run your application cost effectively.

Le nombre d’unités de requête d’une application est approvisionné par seconde et par incréments de 100 RU/s.You provision the number of RUs for your application on a per-second basis in increments of 100 RUs per second. Si vous souhaitez faire évoluer le débit approvisionné pour votre application, vous pouvez à tout moment augmenter ou diminuer le nombre d’unités de requête,To scale the provisioned throughput for your application, you can increase or decrease the number of RUs at any time. Vous pouvez procéder par incréments ou décréments de 100 unités de requête,You can scale in increments or decrements of 100 RUs. soit programmatiquement soit sur le Portail Azure.You can make your changes either programmatically or by using the Azure portal. Les frais sont facturés à l’heure.You are billed on an hourly basis.

Vous pouvez configurer le débit selon deux niveaux de granularité distincts :You can provision throughput at two distinct granularities:

Considérations relatives aux unités de requêteRequest Unit considerations

Lorsque vous estimez le nombre d’unités de requête par seconde à approvisionner, tenez compte des facteurs suivants :While you estimate the number of RUs per second to provision, consider the following factors:

  • Taille de l’élément : plus la taille d’un élément augmente, plus le nombre d'unités de requête consommées pour le lire ou l’écrire augmente.Item size: As the size of an item increases, the number of RUs consumed to read or write the item also increases.

  • Indexation de l’élément : Par défaut, chaque élément est indexé automatiquement.Item indexing: By default, each item is automatically indexed. Moins d’unités de requête sont consommées si vous choisissez de ne pas indexer tous les éléments d’un conteneur.Fewer RUs are consumed if you choose not to index some of your items in a container.

  • Nombre de propriétés de l’élément : en supposant que l’indexation par défaut concerne toutes les propriétés, le nombre d’unités de requête consommées pour écrire un élément augmente avec le nombre de propriétés de l’élément.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.

  • Propriétés indexées : Une stratégie d’indexation sur chaque conteneur détermine quelles propriétés sont indexées par défaut.Indexed properties: An index policy on each container determines which properties are indexed by default. Pour réduire la consommation d’unités de requête des opérations d’écriture, limitez le nombre de propriétés indexées.To reduce the RU consumption for write operations, limit the number of indexed properties.

  • Cohérence des données : les niveaux de cohérence de type fort et obsolescence limitée consomment approximativement deux fois plus d'unités de requête lors des opérations de lecture que les niveaux de cohérence de type flexible.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.

  • Modèles de requête : la complexité d’une requête a une incidence sur le nombre d’unités de requête consommées pour une opération.Query patterns: The complexity of a query affects how many RUs are consumed for an operation. Les facteurs qui influent sur le coût des opérations de requête sont les suivants :Factors that affect the cost of query operations include:

    • le nombre de résultats de la requête ;The number of query results
    • le nombre de prédicats ;The number of predicates
    • la nature des prédicats ;The nature of the predicates
    • le nombre de fonctions définies par l’utilisateur ;The number of user-defined functions
    • la taille des données sources ;The size of the source data
    • la taille du jeu de résultats.The size of the result set
    • ProjectionsProjections

    Azure Cosmos DB garantit qu’une même requête portant sur les mêmes données coûte toujours le même nombre d’unités de requête en cas d’exécutions répétées.Azure Cosmos DB guarantees that the same query on the same data always costs the same number of RUs on repeated executions.

  • Utilisation de scripts : comme avec les requêtes, les procédures stockées et les déclencheurs consomment plus ou moins d'unités de requête en fonction de la complexité des opérations effectuées.Script usage: As with queries, stored procedures and triggers consume RUs based on the complexity of the operations that are performed. Lors du développement de l’application, inspectez l’en-tête des frais de requêtes pour mieux comprendre la capacité en unités de requête consommée par opération.As you develop your application, inspect the request charge header to better understand how much RU capacity each operation consumes.

Étapes suivantesNext steps