Panoramica della modalità Native di Firestore

La modalità Native di Firestore è costituita da due insiemi di operazioni: Firestore Core e operazioni della pipeline Firestore.

Le operazioni di base di Firestore forniscono le funzionalità standard di creazione, lettura, aggiornamento ed eliminazione (CRUD) dei documenti, insieme al supporto integrato per query di ascolto in tempo reale e persistenza offline. Una differenza operativa distinta in questa edizione è che gli indici sono facoltativi e non vengono creati automaticamente per i singoli campi. Sebbene ciò consenta l'esecuzione delle query senza la configurazione iniziale dell'indice, le query non indicizzate eseguiranno la scansione dell'intera raccolta. Ciò può comportare un aumento della latenza e dei costi man mano che il set di dati cresce.

Le operazioni della pipeline Firestore sono una funzionalità centrale di Firestore Enterprise, basata su un motore di query avanzato per espandere in modo significativo 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 di base di Firestore

Le operazioni di base consentono operazioni CRUD standard e query di ascolto in tempo reale. Tuttavia, quando utilizzi queste operazioni nella versione Enterprise, il comportamento sottostante relativo all'indicizzazione e alla fatturazione cambia in modo significativo rispetto alla versione Standard.

Funzionalità e continuità

Le operazioni principali mantengono la sintassi di concatenazione dei metodi (ad esempio, .where(), .orderBy()) utilizzata nella versione Standard. Queste operazioni supportano query di ascolto in tempo reale e persistenza offline per client web e mobile. È consigliabile utilizzare queste operazioni per carichi di lavoro transazionali standard, ricerche semplici e migrazione del codice dell'applicazione esistente.

Indicizzazione personalizzata

A differenza della versione Standard, l'operazione Core nella versione Enterprise non crea automaticamente indici a campo singolo. Gli indici sono facoltativi e non sono necessari per eseguire una query. Se manca un indice specifico, la query esegue una scansione completa della raccolta. Sebbene le query non indicizzate consentano una prototipazione rapida, potrebbero essere più lente e costare di più man mano che il set di dati cresce. Gli sviluppatori devono creare manualmente gli indici per ottimizzare le prestazioni delle query e ridurre il consumo di unità di lettura.

Modello di fatturazione (basato su unità)

Le unità di lettura vengono addebitate in tranche da 4 KB anziché in base al conteggio dei documenti. Una query non indicizzata che analizza una raccolta di grandi dimensioni consumerà unità di lettura in base al totale dei byte analizzati in tutti i documenti. Le unità di scrittura vengono addebitate in tranche da 1 KB. La scrittura di un documento consuma unità per i dati più unità aggiuntive per ogni voce di indice aggiornata. A differenza della versione Standard, che applica l'indicizzazione automatica di un singolo campo, ora puoi scegliere campi specifici da indicizzare per ottimizzare i costi e le prestazioni di scrittura.

Funzionalità delle operazioni della pipeline Firestore

Firestore Enterprise con operazioni pipeline utilizza un motore di query avanzato che rimuove molte limitazioni esistenti di Firestore Standard. Le operazioni della pipeline Firestore forniscono centinaia di funzionalità di query aggiuntive. 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 filtro sul 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 di nuove funzioni di aggregazione (come sum(...), min(...) e count_distinct(...)) combinate con campi di raggruppamento arbitrari.
  • Filtro complesso: supporto di centinaia di funzioni aggiuntive per esprimere istruzioni where(...) arbitrariamente complesse, tra cui regex_match(...), add(...) e str_contains(...), il tutto senza requisiti di indice rigidi.
  • Letture / proiezioni parziali: recupera sottoinsiemi dinamici di documenti utilizzando select(...), remove_fields(...) e molte altre fasi di manipolazione dei documenti.

Per scoprire di più su queste funzionalità, consulta Eseguire query sui dati con le operazioni della pipeline.

Supporto in tempo reale e offline

Per utilizzare Realtime 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 le prestazioni e ridurre i costi fornendo visibilità sulle query principali eseguite sul tuo database e sulle loro caratteristiche di rendimento
  • Nuovi tipi di indice : puoi creare indici specializzati per la versione Enterprise, inclusi tipi di indice come indici sparsi, non sparsi e univoci. 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.

Prestazioni 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.