Le operazioni della pipeline Firestore sono una funzionalità centrale di Firestore Enterprise, basata su un nuovo motore di query per espandere significativamente la gamma di query possibili. Le operazioni della pipeline Firestore utilizzano una sintassi di query flessibile e un metodo di indicizzazione distinto in cui gli indici sono facoltativi e non vengono creati automaticamente, consentendo operazioni di recupero dei dati avanzate per le applicazioni.
Funzionalità delle operazioni della pipeline Firestore
Firestore Enterprise e le nuove operazioni della pipeline utilizzano un nuovo motore di query avanzato che rimuove molte limitazioni esistenti di Firestore Standard. Le operazioni della pipeline Firestore forniscono oltre 120 nuove funzionalità di query. Le operazioni della pipeline Firestore hanno le seguenti funzionalità:
Sintassi componibile basata sulle fasi
Le query della pipeline vengono create definendo una serie di fasi sequenziali che vengono eseguite in ordine. Ciò consente operazioni complesse, come il filtraggio in base al risultato di un'aggregazione, che in precedenza non era possibile.
Il seguente esempio mostra una query della pipeline che trova il numero di ID prodotto unici visualizzati nell'ultimo mese:
guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
return
}
let snapshot = try await db.pipeline()
.collection("productViews")
.where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
.aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
.execute()
Funzionalità ampliate
La query Pipeline introduce un gran numero di nuove funzionalità, tra cui:
- Aggregazioni: supporto per nuove funzioni di aggregazione (come
sum(...),min(...)ecount_distinct(...)) combinate con campi di raggruppamento arbitrari. - Filtraggio complesso: supporto di oltre 120 nuove funzioni per esprimere istruzioni
where(...)arbitrariamente complesse, tra cuiregex_match(...),add(...)estr_contains(...), il tutto senza requisiti di indice rigidi. - Letture parziali / Proiezioni: recupera sottoinsiemi dinamici di documenti utilizzando
select(...),remove_fields(...)e molte altre fasi di manipolazione dei documenti.
Supporto in tempo reale e offline
Per utilizzare le funzionalità in tempo reale e offline, gli sviluppatori possono utilizzare le operazioni di Firestore Core su Firestore Enterprise Edition.
Integrazione di client e strumenti
La versione Enterprise include funzionalità specializzate per interagire con le query della pipeline e gestirle:
- Spiegazione e profilazione delle query:puoi utilizzare i risultati di Query Explain per capire quante unità di lettura o scrittura consuma una query e analizzarne l'esecuzione.
- Query Insights: Enterprise Edition supporta Query Insights, che ti aiuta a determinare dove è possibile creare indici per migliorare il rendimento e il costo fornendo visibilità sulle caratteristiche di rendimento delle query.
- Nuovi tipi di indice : puoi creare indici specializzati per Enterprise Edition, inclusi gli indici sparsi. Supporta anche la creazione e la modifica di indici di ricerca vettoriale per i database Enterprise.
Differenze tra Firestore Standard e Firestore Enterprise
La principale differenza operativa tra le operazioni Core e Pipeline risiede nella gestione dell'indicizzazione, che influisce direttamente su prestazioni e costi.
| Firestore Standard - Operazioni di base | Firestore Enterprise - Operazioni principali e della pipeline | |
| Requisito di indicizzazione | Gli indici sono obbligatori per le query.
Gli indici per i singoli campi vengono creati automaticamente, mentre le query più complesse si basano su indici composti o indici di gruppi di raccolte che devono essere configurati manualmente. |
Gli indici non sono obbligatori e quindi sono facoltativi per le query.
Definisci gli indici in base alle necessità. Enterprise edition supporta anche una gamma più ampia di tipi di indice, inclusi indici non sparsi/sparsi e univoci. |
| Rischio di rendimento | Query indicizzate:le prestazioni e i costi scalano in base alle dimensioni del set di risultati. |
Query non indicizzate: le prestazioni e i costi aumentano in proporzione alle dimensioni del set di dati. Query indicizzate:le prestazioni e i costi scalano in base alle dimensioni del set di risultati. Ti consigliamo di utilizzare gli strumenti Query Explain e Query Insights per creare indici e migliorare le prestazioni e il costo delle query. |
| Implicazioni sui costi di archiviazione | L'overhead di archiviazione è dovuto a indici automatici e indici composti. | Risparmi sui costi di archiviazione perché gli indici non vengono creati automaticamente per ogni campo. |
| Base del costo | Addebito per ogni operazione di lettura, scrittura ed eliminazione di documenti. | Addebito per unità di lettura (tranche da 4 KB) e unità di scrittura (tranche da 1 KB). La scrittura delle voci di indice consuma unità di scrittura.
Scopri di più sui nuovi prezzi con alcuni esempi. |
| Regole di sicurezza | Le regole di sicurezza proteggono le raccolte verificando le autorizzazioni di lettura/scrittura. | Le regole di sicurezza proteggono le raccolte verificando le autorizzazioni di lettura/scrittura. Scopri come modellare i dati per supportare le query della pipeline nella guida Modello di dati. |