Cette page inclut des exemples de calcul des unités facturables 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é Expliquer 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 consistent à effectuer une lecture ponctuelle d'un document spécifique ou à analyser une plage de données en fonction d'un identifiant. Les opérations de lecture consomment des unités de lecture. Consultez les exemples suivants.
Recherche en texte intégral
Les frais liés aux requêtes de recherche en texte intégral sont répartis entre le coût de l'exécution d'une recherche sur un index de texte et le coût de la récupération des documents. Le coût 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), l'application ou non d'un score de pertinence 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 décrit les frais associés à l'exécution de requêtes de recherche en texte intégral pour un catalogue de produits d'e-commerce pour une pépinière. Cet exemple suppose une collection de 200 000 fiches produit, chaque document de 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) |
|---|---|---|---|
| Recherche d'un produit rare "dry water" stack flat tray, qui renvoie trois documents. | |
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, ce qui permet de récupérer 36 documents. | |
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 pour lesquelles il existe de nombreuses correspondances de produits. Trie les résultats par pertinence et limite-les aux 50 premiers résultats de recherche. | |
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 de différents modèles de requêtes sur les coûts :
- La requête"eau sèche" 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 "arbre" "agrume" "intérieur" recherche trois termes distincts. Bien que légèrement moins complexe par terme qu'une recherche par expression, elle nécessite toujours de rechercher plusieurs jetons. Son coût d'analyse de l'index de recherche est légèrement inférieur à celui de l'exemple "eau sèche" (6 unités de lecture), mais 36 documents sont renvoyés, ce qui augmente le coût total.
- La requête "jardinière de balcon" présente le coût de recherche en texte intégral le plus élevé (25 unités), et ce, de loin. Cela est principalement dû au fait qu'il demande que les résultats soient triés par pertinence (
.sort({score: {$meta: "textScore"}})) sur les termes qui correspondent à de nombreux documents. Pour déterminer les 50 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 d'elles, puis les trier. Ce processus de notation et de tri d'un grand nombre de candidats dans l'index est gourmand en ressources de calcul, même si seulement 50 documents sont finalement récupérés. La largeur des termes combinée aux frais généraux 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 concerné.
Le tableau suivant décrit les frais associés à l'exécution de requêtes géospatiales pour une application de cartographie. 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 une taille d'index géospatial correspondante 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) |
|---|---|---|---|
| Trouve tous les points d'intérêt dans un rayon de 10 km maximum et renvoie 10 résultats. | |
16 unités de lecture au total. Basé sur 6 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 |
| Trouve tous les points d'intérêt situés à une distance maximale de 100 km et renvoie les 10 points d'intérêt les plus proches parmi 1 000 résultats. | |
19 unités de lecture au total. Basé sur 9 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 de différents modèles de requêtes sur les coûts :
- Requête avec un rayon de 10 km : cette requête analyse une zone géographique plus petite. Comme il ne trouve que 10 correspondances dans ce rayon de 10 km, le moteur de requête a moins de travail à faire pour identifier et ordonner ces points par distance (comme le fait implicitement
$near). Le coût d'analyse de l'index est alors de six unités de lecture. - Requête avec un 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 requête des 10 points les plus proches, le moteur de requête doit calculer les distances et trier un ensemble beaucoup plus grand de candidats (jusqu'à 1 000 points) dans l'index. Ce travail de calcul supplémentaire, qui consiste à passer au crible et à classer un nombre beaucoup plus important de points, explique pourquoi le coût de la requête géospatiale est plus élevé (9 unités de lecture) que celui de la requête de 10 km, alors qu'elle ne renvoie également que 10 documents.
Lectures de points
Exemple de facturation pour les lectures ponctuelles :
- Lecture ponctuelle d'un document de 1 Kio. Consommation : 1 unité de lecture
- Lecture ponctuelle d'un seul document de 4 Kio. Consommation : 1 unité de lecture
- Lecture ponctuelle d'un document de 1 Mio. Consommation : 256 unités de lecture
- Lecture ponctuelle de 100 documents de 1 Kio chacun. Consommation : 100 unités de lecture
Analyse
Les exemples suivants incluent des scénarios qui analysent des documents ou des entrées d'index.
Numériser des documents
- Requête qui analyse 100 documents de 1 Kio chacun. Consommation : 25 unités de lecture
Analyser des index
Le coût de l'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. Consommation : 25 unités de lecture.
- Requête qui analyse 100 entrées d'index de 128 octets chacune. Consomme : 4 unités de lecture.
Taille minimale d'un document ou d'une entrée 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 décompte simples, comme le décompte du nombre total de documents dans une collection. Dans ce cas, 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 de la collection. Consomme : 8 unités de lecture.
Combinaison de la lecture par balayage et par point
De nombreuses requêtes effectuent une combinaison de lectures ponctuelles et de balayages pour satisfaire une opération.
- Requête qui analyse 128 entrées d'index de 256 octets chacune et effectue une lecture ponctuelle de 128 documents de 4 Kio chacun. Consommation : 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 des requêtes 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 "Expliquer la requête" :
- Explication de la requête qui l'exécute : le coût de la requête s'applique.
- Explication de la requête à l'aide de l'option "Plan uniquement". Consommation : 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 être satisfaites entraînent également les coûts de lecture associés à la requête.
Consultez les exemples suivants.
Créer
- Créez un document de 10 Kio sans index. Consommation : 10 unités d'écriture
- Créez un document de 1 Kio avec une entrée d'index de 256 octets dans la collection. Consommation : 2 unités d'écriture
Mises à jour
- Recherchez un document de 10 Kio par ID de document et mettez-le à jour sans index sur la collection. Consommation : 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. Consommation : 3 unités d'écriture. Remarque : Dans ce cas, la mise à jour d'une entrée d'index consomme deux unités d'écriture (une pour supprimer l'entrée d'index et une pour la recréer).
- Recherchez un document de 1 Kio par ID de document et ne mettez rien à jour (aucune modification). Consommation : 1 unité d'écriture (coût minimal d'écriture)
- Interrogez tous les documents de 1 Kio d'une collection, ce 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 sur la collection. Consommation : 2 unités d'écriture
- Supprimez un document de 1 Kio qui ne comporte aucun index dans la collection. Consommation : 1 unité d'écriture
Création d'index
Les créations d'index sont facturées en fonction des entrées d'index créées ou modifiées lors de l'opération de création. Ces coûts sont encourus 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 1 unité d'écriture par 1 Kio.
- Créez un index pour une collection contenant 500 documents. Les entrées d'index créées font 1 Kio chacune. Utilise 500 unités d'écriture.
- Suppression d'un index existant pour une collection contenant 500 documents, chaque entrée d'index supprimée représentant 1 Kio. Utilise 500 unités d'écriture.