Questa pagina include esempi di come vengono calcolate le unità di fatturazione in alcuni degli scenari più comuni. Tieni presente che ogni query potrebbe differire in base ai dati elaborati a seconda di fattori quali il piano di query, la forma dei dati e gli indici disponibili.
Ti consigliamo di utilizzare la funzionalità Spiegazione query per comprendere meglio il costo e il rendimento delle tue query specifiche.
Operazioni di lettura
La maggior parte delle operazioni di lettura comporta l'esecuzione di una lettura di punti di un documento specifico o la scansione di un intervallo di dati in base a un identificatore. Le operazioni di lettura consumano unità di lettura. Consulta gli esempi seguenti.
Ricerca a testo intero
Gli addebiti per le query di ricerca a testo intero si distinguono tra il costo per eseguire una ricerca su un indice di testo e il costo per recuperare i documenti. Il costo per eseguire una ricerca su un indice di testo è determinato dalla complessità della query e dalla quantità di dati scansionati nell'indice per trovare i risultati. I fattori che influenzano questo costo includono il numero e la natura dei termini di ricerca (ad es. termini, frasi), se viene applicata la valutazione della pertinenza e il numero di voci di indice che devono essere esaminate. Il costo per il recupero dei documenti pertinenti si basa sul numero e sulla dimensione dei documenti recuperati al termine della fase di ricerca.
La tabella seguente delinea gli addebiti associati all'esecuzione di query di ricerca a testo intero per un catalogo di prodotti di e-commerce per un vivaio. Questo esempio presuppone una raccolta di 200.000 schede di prodotto in una raccolta, con ogni documento di scheda di prodotto di 2 KiB e una dimensione dell'indice di ricerca di testo corrispondente di circa 100 MiB.
| Query | Esempio di codice | Unità di lettura stimate consumate per query | Costi stimati (regione: us-central1 in USD) |
|---|---|---|---|
| Cerca un prodotto raro "dry water" stack flat tray, con conseguente recupero di 3 documenti. | |
10 unità di lettura totali In base a 7 unità per la ricerca a testo intero e 3 unità aggiuntive per i documenti restituiti. |
0,50 $ per milione di query |
| Cerca tutti gli alberi di agrumi da interni, con conseguente recupero di 36 documenti. | |
42 unità di lettura totali In base a 6 unità per la ricerca a testo intero e 36 unità aggiuntive per i documenti restituiti. |
2,10 $ per milione di query |
| Cerca fioriere da balcone in cui sono presenti molte corrispondenze di prodotti. Ordina i risultati per pertinenza e limita ai primi 50 risultati di ricerca. | |
75 unità di lettura totali In base a 25 unità per la ricerca a testo intero e 50 unità aggiuntive per i documenti restituiti. |
3,75 $ per milione di query |
Questi esempi illustrano come i diversi pattern di query influiscono sui costi:
- La query"dry water" include una frase (
"dry water") e termini aggiuntivi. Le ricerche di frasi sono più complesse perché il motore di query deve controllare la prossimità e l'ordine dei token, contribuendo alle 7 unità di lettura per la fase di ricerca. Poiché pochissimi documenti corrispondono, il costo di recupero dei documenti è basso. - La query"indoor" "citrus" "tree" cerca tre termini separati. Sebbene sia leggermente meno complessa per termine rispetto a una ricerca di frasi, richiede comunque la ricerca di più token. Ha un costo di scansione dell'indice di ricerca leggermente inferiore di 6 unità di lettura rispetto all'esempio "dry water", ma vengono restituiti 36 documenti, aumentando il costo totale.
- La query della fioriera da balcone ha il costo di ricerca a testo intero più elevato, pari a 25 unità, con un margine significativo. Questo è dovuto principalmente al fatto che richiede che i risultati
vengano ordinati per pertinenza (
.sort({score: {$meta: "textScore"}})) in base a termini che corrispondono a molti documenti. Per determinare i 50 risultati più pertinenti, il motore di query deve trovare tutte le potenziali corrispondenze per "balcone" o "fioriera", calcolare un punteggio di pertinenza per ciascuna e poi ordinarle. Questo processo di valutazione e ordinamento di un numero elevato di candidati all'interno dell'indice è intensivo dal punto di vista computazionale, anche se alla fine vengono recuperati solo 50 documenti. L'ampiezza dei termini combinata con l'overhead della valutazione della pertinenza rende più costosa la fase di ricerca.
Query geospaziali
Gli addebiti per le query geospaziali sono determinati dalla complessità della query e dalle condizioni e dall'ordinamento specifici utilizzati, nonché dalle risorse necessarie per scansionare tutti i dati nell'indice geospaziale pertinente.
La tabella seguente delinea gli addebiti associati all'esecuzione di query geospaziali per un'applicazione di mappe. Questo esempio presuppone una raccolta di 1.000.000 di documenti che rappresentano punti d'interesse, con ogni documento di punto d'interesse di 1 KiB e una dimensione dell'indice geospaziale corrispondente di circa 60 MiB.
| Query | Esempio di codice | Unità di lettura stimate consumate per query | Costi stimati (regione: us-central1 in USD) |
|---|---|---|---|
| Trova tutti i punti di interesse entro un massimo di 10 km, restituendo 10 corrispondenze. | |
16 unità di lettura totali. In base a 6 unità di lettura per la query geospaziale e 10 unità aggiuntive per i documenti restituiti. |
0,80 $ per milione di query |
| Trova tutti i punti di interesse con una distanza massima di 100 km e restituisci i 10 punti di interesse più vicini su 1000 corrispondenze | |
19 unità di lettura totali. In base a 9 unità di lettura per la query geospaziale e 10 unità aggiuntive per i documenti restituiti. |
0,95 $ per milione di query |
Questi esempi illustrano come i diversi pattern di query influiscono sui costi:
- Query con raggio di 10 km: questa query esegue la scansione di un'area geografica più piccola. Poiché trova solo 10 corrispondenze in questo raggio di 10 km, il motore di query deve eseguire meno operazioni per identificare e ordinare questi punti in base alla distanza (come fa implicitamente
$near). Il risultato è un costo di scansione dell'indice inferiore di 6 unità di lettura. - Query con raggio di 100 km: questa query copre un'area molto più ampia. La query trova 1000 potenziali corrispondenze nel raggio di 100 km. Per soddisfare la richiesta dei 10 punti più vicini, il motore di query deve calcolare le distanze e ordinare un insieme di candidati molto più ampio (fino a 1000 punti) all'interno dell'indice. Questo lavoro computazionale aggiuntivo di analisi e classificazione di molti più punti è il motivo per cui il costo della query geospaziale è più elevato, pari a 9 unità di lettura, rispetto alla query di 10 km, nonostante restituisca anche solo 10 documenti.
Letture di punti
Esempio di fatturazione per le letture di punti:
- Lettura di punti di un singolo documento di 1 KiB. Consuma: 1 unità di lettura
- Lettura di punti di un singolo documento di 4 KiB. Consuma: 1 unità di lettura
- Lettura di punti di un singolo documento di 1 MiB. Consuma: 256 unità di lettura
- Lettura di punti di 100 documenti, ciascuno di 1 KiB. Consuma: 100 unità di lettura
Analisi in corso
Gli esempi seguenti includono scenari che eseguono la scansione di documenti o voci di indice.
Scansione di documenti
- Query che esegue la scansione di 100 documenti, ciascuno di 1 KiB. Consuma: 25 unità di lettura
Scansione degli indici
Il costo di scansione, in termini di byte, è lo stesso indipendentemente dal fatto che si tratti di un documento o di un indice. Tuttavia, le voci di indice sono spesso di dimensioni inferiori. Di conseguenza, possono spesso fornire un modo più economico per scansionare i dati.
- Query che esegue la scansione di 100 voci di indice, ciascuna di 1 KiB. Consuma: 25 unità di lettura.
- Query che esegue la scansione di 100 voci di indice, ciascuna di 128 byte. Consuma: 4 unità di lettura.
Dimensione minima del documento o della voce di indice
In alcune situazioni potrebbe non essere necessario leggere i contenuti di un documento o di una voce di indice per soddisfare una query. Sono incluse le query di conteggio semplici, come il conteggio del numero totale di documenti in una raccolta. In queste situazioni, si applica un costo minimo di 32 byte per elemento scansionato.
- Conta il numero di documenti in una raccolta. La query esegue la scansione di 1000 elementi nella raccolta. Consuma: 8 unità di lettura.
Combinazione di scansione e letture di punti
Molte query eseguono una combinazione di scansione e letture di punti per soddisfare un'operazione.
- Query che esegue la scansione di 128 voci di indice, ciascuna di 256 byte, ed esegue una lettura di punti di 128 documenti, ciascuno di 4 KiB. Consuma: 136 unità di lettura, composte da:
- 128 unità di lettura per le letture di punti
- 8 unità di lettura per le scansioni degli indici
Spiegazione query
La spiegazione della query ti aiuta a capire come il database esegue le query. I dettagli forniti possono aiutarti a ottimizzare le query.
I seguenti costi si applicano quando si utilizza la spiegazione della query:
- Spiegazione della query che esegue la query: si applica il costo della query.
- Spiegazione della query utilizzando l'opzione Solo piano. Consuma: 1 unità di lettura (costo minimo di una query)
Operazioni di scrittura
Le operazioni di scrittura (creazione, aggiornamento ed eliminazione) vengono addebitate in base alla dimensione dei documenti e degli indici creati, modificati o eliminati durante l'operazione. Le operazioni di scrittura consumano unità di scrittura. Le unità di scrittura vengono calcolate in tranche da 1 KiB.
Le operazioni di scrittura semplici, come l'aggiornamento per ID documento, comportano solo il costo delle scritture. Le operazioni di scrittura che richiedono l'esecuzione di query per soddisfare l'operazione comportano anche i costi di lettura associati alla query.
Consulta gli esempi seguenti.
Creazioni
- Crea un nuovo documento di 10 KiB senza indici. Consuma: 10 unità di scrittura
- Crea un documento di 1 KiB con 1 voce di indice di 256 byte nella raccolta. Consuma: 2 unità di scrittura
Aggiornamenti
- Trova un documento di 10 KiB per ID documento e aggiornalo senza indici nella raccolta. Consuma: 10 unità di scrittura
- Trova un documento di 1 KiB per ID documento e aggiorna 1 campo con 1 voce di indice di 256 byte. Consuma: 3 unità di scrittura. Nota: l'aggiornamento di una voce di indice in questa situazione consuma 2 unità di scrittura: una per eliminare e una per ricreare la voce di indice.
- Trova un documento di 1 KiB per ID documento e non aggiornare nulla (nessuna modifica). Consuma: 1 unità di scrittura (i costi di scrittura minimi)
- Esegui una query su tutti i documenti di 1 KiB in una raccolta, che esegue la scansione di 1000 documenti, e inserisci un nuovo campo di 256 byte senza indici nella raccolta: 1000 unità di lettura e 1000 unità di scrittura.
Eliminazioni
- Elimina un documento di 1 KiB con 1 indice nella raccolta. Consuma: 2 unità di scrittura
- Elimina un documento di 1 KiB senza indici nella raccolta. Consuma: 1 unità di scrittura
Creazione di indici
La creazione di indici comporta l'addebito delle voci di indice create o modificate durante l'operazione di creazione. Questi costi vengono sostenuti ogni volta che viene aggiunta o rimossa una definizione di indice. Le voci di indice vengono fatturate in modo identico alle scritture, con un costo di 1 unità di scrittura per 1 KiB.
- Crea un nuovo indice per una raccolta contenente 500 documenti, le voci di indice create sono di 1 KiB ciascuna. Consuma 500 unità di scrittura.
- Elimina un indice esistente per una raccolta contenente 500 documenti, le voci di indice eliminate sono di 1 KiB ciascuna. Consuma 500 unità di scrittura.