Exemples de tarification

Cette page présente des exemples de calcul des unités de facturation dans certains des scénarios les plus courants. Notez que chaque requête peut différer en termes de données traitées en fonction de facteurs tels que le plan de requête, la forme des données et les index disponibles.

Nous vous recommandons d'utiliser la fonctionnalité Explication de la requête pour mieux comprendre le coût et les performances de vos requêtes spécifiques.

Opérations de lecture

La plupart des opérations de lecture impliquent soit une lecture ponctuelle d'un document spécifique, soit une analyse d'une plage de données basée sur un identifiant. Les opérations de lecture consomment des unités de lecture. Consultez les exemples suivants.

Les frais liés aux requêtes de recherche en texte intégral sont répartis entre le coût d'exécution d'une recherche dans un index de texte et le coût de récupération des documents. Le coût d'exécution d'une recherche dans un index de texte est déterminé par la complexité de la requête et la quantité de données analysées dans l'index pour trouver les résultats. Les facteurs qui influencent ce coût incluent le nombre et la nature des termes de recherche (par exemple, termes, expressions), si la notation de pertinence est appliquée et le nombre d'entrées d'index à examiner. Le coût de récupération des documents pertinents est basé sur le nombre et la taille des documents récupérés une fois la phase de recherche terminée.

Le tableau suivant présente les frais associés à l'exécution de requêtes de recherche en texte intégral pour un catalogue de produits de commerce électronique pour une pépinière. Cet exemple suppose une collection de 200 000 fiches produit, chaque fiche produit étant de 2 Kio et la taille de l'index de recherche de texte correspondant étant d'environ 100 Mio.

Requête Exemple de code Unités de lecture estimées consommées par requête Coûts estimés (région : us-central1 en USD)
Recherchez un produit rare de type "dry water" (plateau plat) et récupérez trois documents.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

10 unités de lecture au total

Basé sur sept unités pour la recherche en texte intégral et trois unités supplémentaires pour les documents renvoyés.

0,50 $ par million de requêtes
Recherchez tous les agrumes d'intérieur et récupérez 36 documents.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

42 unités de lecture au total

Basé sur six unités pour la recherche en texte intégral et 36 unités supplémentaires pour les documents renvoyés.

2,10 $ par million de requêtes
Recherchez des jardinières de balcon où il existe de nombreuses correspondances de produits. Triez les résultats par pertinence et limitez-les aux 50 premiers résultats de recherche.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

75 unités de lecture au total

Basé sur 25 unités pour la recherche en texte intégral et 50 unités supplémentaires pour les documents renvoyés.

3,75 $ par million de requêtes

Ces exemples illustrent l'impact des différents modèles de requête sur les coûts :

  • La requête"dry water" implique une expression ("dry water") et des termes supplémentaires. Les recherches d'expressions sont plus complexes, car le moteur de requête doit vérifier la proximité et l'ordre des jetons, ce qui contribue aux sept unités de lecture pour la phase de recherche. Comme très peu de documents correspondent, le coût de récupération des documents est faible.
  • La requête"indoor" "citrus" "tree" recherche trois termes distincts. Bien que légèrement moins complexe par terme qu'une recherche d'expression, elle nécessite toujours de rechercher plusieurs jetons. Le coût d'analyse de l'index de recherche est légèrement inférieur (six unités de lecture) à celui de l'exemple "dry water", mais 36 documents sont renvoyés, ce qui augmente le coût total.
  • La requête de jardinière de balcon présente le coût de recherche en texte intégral le plus élevé (25 unités) avec une marge significative. Cela est principalement dû au fait qu'elle demande que les résultats soient triés par pertinence (.sort({score: {$meta: "textScore"}}) ) sur des termes qui correspondent à de nombreux documents. Pour déterminer les 50 premiers résultats les plus pertinents, le moteur de requête doit trouver toutes les correspondances potentielles pour "balcon" ou "jardinière", calculer un score de pertinence pour chacune, puis les trier. Ce processus de notation et de tri sur un grand nombre de candidats dans l'index est gourmand en calculs, même si seulement 50 documents sont finalement récupérés. L'étendue des termes combinée à la surcharge de la notation de pertinence rend la phase de recherche plus coûteuse.

Requêtes géospatiales

Les frais liés aux requêtes géospatiales sont déterminés par la complexité de la requête, les conditions et le tri spécifiques utilisés, ainsi que les ressources nécessaires pour analyser toutes les données de l'index géospatial pertinent.

Le tableau suivant présente les frais associés à l'exécution de requêtes géospatiales pour une application de cartes. Cet exemple suppose une collection de 1 000 000 de documents représentant des points d'intérêt, chaque document de point d'intérêt étant de 1 Kio et la taille de l'index géospatial correspondant étant d'environ 60 Mio.

Requête Exemple de code Unités de lecture estimées consommées par requête Coûts estimés (région : us-central1 en USD)
Recherchez tous les points d'intérêt dans un rayon maximal de 10 km et renvoyez 10 correspondances.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

16 unités de lecture au total.

Basé sur six unités de lecture pour la requête géospatiale et 10 unités supplémentaires pour les documents renvoyés.

0,80 $ par million de requêtes
Recherchez tous les points d'intérêt dans un rayon maximal de 100 km et renvoyez les 10 points d'intérêt les plus proches sur 1 000 correspondances.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

19 unités de lecture au total.

Basé sur neuf unités de lecture pour la requête géospatiale et 10 unités supplémentaires pour les documents renvoyés.

0,95 $ par million de requêtes

Ces exemples illustrent l'impact des différents modèles de requête sur les coûts :

  • Requête de rayon de 10 km : cette requête analyse une zone géographique plus petite. Comme elle ne trouve que 10 correspondances dans ce rayon de 10 km, le moteur de requête a moins de travail à effectuer pour identifier et ordonner ces points par distance (comme le fait implicitement $near). Cela entraîne un coût d'analyse d'index inférieur de six unités de lecture.
  • Requête de rayon de 100 km : cette requête couvre une zone beaucoup plus vaste. La requête trouve 1 000 correspondances potentielles dans le rayon de 100 km. Pour répondre à la demande des 10 points les plus proches, le moteur de requête doit calculer les distances et trier un ensemble de candidats beaucoup plus vaste (jusqu'à 1 000 points) dans l'index. Ce travail de calcul supplémentaire consistant à filtrer et à classer beaucoup plus de points explique pourquoi le coût de la requête géospatiale est plus élevé (neuf unités de lecture) que celui de la requête de 10 km, même si elle ne renvoie que 10 documents.

Lectures ponctuelles

Exemple de facturation pour les lectures ponctuelles :

  • Lecture ponctuelle d'un seul document de 1 Kio. Consomme : 1 unité de lecture
  • Lecture ponctuelle d'un seul document de 4 Kio. Consomme : 1 unité de lecture
  • Lecture ponctuelle d'un seul document de 1 Mio. Consomme : 256 unités de lecture
  • Lecture ponctuelle de 100 documents, chacun de 1 Kio. Consomme : 100 unités de lecture

Analyse

Les exemples suivants incluent des scénarios qui analysent des documents ou des entrées d'index.

Analyse de documents

  • Requête qui analyse 100 documents, chacun de 1 Kio. Consomme : 25 unités de lecture

Analyse d'index

Le coût d'analyse, en octets, est le même, qu'il s'agisse d'un document ou d'un index. Toutefois, les entrées d'index sont souvent plus petites. Par conséquent, elles peuvent souvent offrir un moyen plus économique d'analyser les données.

  • Requête qui analyse 100 entrées d'index, chacune de 1 Kio. Consomme : 25 unités de lecture.
  • Requête qui analyse 100 entrées d'index, chacune de 128 octets. Consomme : 4 unités de lecture.

Taille minimale des documents ou des entrées d'index

Dans certaines situations, il n'est pas nécessaire de lire le contenu d'un document ou d'une entrée d'index pour répondre à une requête. Cela inclut les requêtes de comptage simples, comme le comptage du nombre total de documents dans une collection. Dans ces situations, un coût minimal de 32 octets s'applique par élément analysé.

  • Comptez le nombre de documents dans une collection. La requête analyse 1 000 éléments dans la collection. Consomme : 8 unités de lecture.

Combinaison d'analyses et de lectures ponctuelles

De nombreuses requêtes combinent des analyses et des lectures ponctuelles pour satisfaire une opération.

  • Requête qui analyse 128 entrées d'index, chacune de 256 octets, et effectue une lecture ponctuelle de 128 documents, chacun de 4 Kio. Consomme : 136 unités de lecture, réparties comme suit :
    • 128 unités de lecture pour les lectures ponctuelles
    • 8 unités de lecture pour les analyses d'index

Explication de la requête

L'explication de la requête vous aide à comprendre comment la base de données exécute vos requêtes. Les informations fournies peuvent vous aider à optimiser vos requêtes.

Les coûts suivants s'appliquent lorsque vous utilisez l'explication de la requête :

  • Explication de la requête qui exécute la requête : le coût de la requête s'applique.
  • Explication de la requête utilisant l'option "Plan uniquement". Consomme : 1 unité de lecture (coût minimal d'une requête)

Opérations d'écriture

Les opérations d'écriture (créations, mises à jour et suppressions) sont facturées en fonction de la taille des documents et des index créés, modifiés ou supprimés lors de l'opération. Les opérations d'écriture consomment des unités d'écriture. Les unités d'écriture sont calculées par tranches de 1 Kio.

Les opérations d'écriture simples, comme la mise à jour par ID de document, n'entraînent que le coût des écritures. Les opérations d'écriture qui nécessitent une requête pour satisfaire l'opération entraînent également les coûts de lecture associés à la requête.

Consultez les exemples suivants.

Créations

  • Créez un document de 10 Kio sans index. Consomme : 10 unités d'écriture
  • Créez un document de 1 Kio avec une entrée d'index de 256 octets dans la collection. Consomme : 2 unités d'écriture

Mises à jour

  • Recherchez un document de 10 Kio par ID de document et mettez-le à jour sans index dans la collection. Consomme : 10 unités d'écriture
  • Recherchez un document de 1 Kio par ID de document et mettez à jour un champ avec une entrée d'index de 256 octets. Consomme : 3 unités d'écriture. Remarque : La mise à jour d'une entrée d'index dans cette situation consomme deux unités d'écriture : une pour supprimer et une pour recréer l'entrée d'index.
  • Recherchez un document de 1 Kio par ID de document et ne mettez rien à jour (aucune modification). Consomme : 1 unité d'écriture (coût minimal d'écriture)
  • Interrogez tous les documents de 1 Kio dans une collection, qui analyse 1 000 documents, et insérez un nouveau champ de 256 octets sans index dans la collection : 1 000 unités de lecture et 1 000 unités d'écriture.

Suppressions

  • Supprimez un document de 1 Kio, qui comporte un index dans la collection. Consomme : 2 unités d'écriture
  • Supprimez un document de 1 Kio, qui ne comporte aucun index dans la collection. Consomme : 1 unité d'écriture

Création d'index

La création d'index est facturée pour les entrées d'index créées ou modifiées lors de l'opération de création. Ces coûts sont générés chaque fois qu'une définition d'index est ajoutée ou supprimée. Les entrées d'index sont facturées de la même manière que les écritures, soit une unité d'écriture par Kio.

  • Créez un index pour une collection contenant 500 documents. Les entrées d'index créées sont de 1 Kio chacune. Consomme 500 unités d'écriture.
  • Supprimez un index existant pour une collection contenant 500 documents. Les entrées d'index supprimées sont de 1 Kio chacune. Consomme 500 unités d'écriture.