Panoramica di Firestore in modalità Native

Firestore in modalità nativa è costituito da due insiemi di operazioni: operazioni di base di Firestore e operazioni di pipeline di Firestore.

Le operazioni di base di Firestore forniscono la funzionalità standard di creazione, lettura, aggiornamento, ed eliminazione (CRUD) dei documenti, oltre al supporto integrato per le query di ascolto in tempo reale e la persistenza offline. Una differenza operativa distinta in questa versione è che gli indici sono facoltativi e non vengono creati automaticamente per i singoli campi. Sebbene ciò consenta l'esecuzione delle query senza una configurazione iniziale dell'indice, le query non indicizzate verranno impostate per impostazione predefinita per eseguire 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 di pipeline di Firestore sono una funzionalità centrale della versione Enterprise di Firestore, basata su un motore di query avanzato per espandere in modo significativo la gamma di query possibili. Le operazioni di pipeline 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 si utilizzano 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 di base mantengono la sintassi di concatenamento dei metodi (ad esempio .where(), .orderBy()) utilizzata nella versione Standard. Queste operazioni supportano le query di ascolto in tempo reale e la persistenza offline per i client web e mobile. Ti consigliamo di 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, le operazioni di base nella versione Enterprise non creano 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 esegue la scansione di una raccolta di grandi dimensioni consumerà unità di lettura in base al totale dei byte scansionati 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 a campo singolo, ora puoi scegliere campi specifici da indicizzare per ottimizzare i costi e le prestazioni di scrittura.

Funzionalità delle operazioni di pipeline di Firestore

La versione Enterprise di Firestore con operazioni di pipeline utilizza un motore di query avanzato che rimuove molti limiti esistenti della versione Standard di Firestore. Le operazioni di pipeline forniscono centinaia di funzionalità di query aggiuntive. Le operazioni di pipeline hanno le seguenti funzionalità:

Sintassi componibile basata su fasi

Le query di pipeline vengono create definendo una serie di fasi sequenziali che vengonoeseguite in ordine. Ciò consente operazioni complesse, come il filtraggio sul risultato di un'aggregazione, che in precedenza non era possibile.

Il seguente esempio mostra una query di 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à espanse

La query di pipeline introduce un numero elevato di nuove funzionalità, tra cui:

  • Aggregazioni: supporto per nuove funzioni di aggregazione (come sum(...), min(...) e count_distinct(...)) combinate con campi di raggruppamento arbitrari.
  • Filtraggio complesso: supporto per 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 parziali / proiezioni: 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 di pipeline.

Supporto in tempo reale e offline

Per utilizzare le funzionalità in tempo reale e offline, gli sviluppatori possono utilizzare le operazioni di base di Firestore nella versione Enterprise di Firestore.

Integrazione di client e strumenti

La versione Enterprise include funzionalità specializzate per interagire con le query di 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: la versione Enterprise supporta Query Insights, che ti aiuta a determinare dove è possibile creare indici per migliorare le prestazioni e i costi fornendo visibilità sulle query principali eseguite sul database e sulle relative caratteristiche di prestazioni.
  • Nuovi tipi di indici: puoi creare indici specializzati per la versione Enterprise, inclusi tipi di indici come indici sparsi, non sparsi e univoci. Supporta anche la creazione e la modifica degli indici di ricerca vettoriale per i database Enterprise.

Differenze tra Firestore Standard e Firestore Enterprise

La principale differenza operativa tra le operazioni di base e di pipeline risiede nella gestione dell'indicizzazione, che influisce direttamente su prestazioni e costi.

Versione Standard - Operazioni di base Versione Enterprise - Operazioni di base e di 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 esigenze. La versione Enterprise supporta anche una gamma più ampia di tipi di indici, 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 scalano in base 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 i costi delle query.

Implicazioni sui costi di archiviazione Si verifica un overhead di archiviazione dovuto agli indici automatici e agli indici composti. Risparmi sui costi di archiviazione perché gli indici non vengono creati automaticamente per ogni campo.
Base di costo Viene addebitato un costo per ogni operazione di lettura, scrittura ed eliminazione dei documenti. Viene addebitato un costo 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 di pipeline nella guida al modello di dati.