Le mode natif Firestore se compose de deux ensembles d'opérations : les opérations Firestore Core et les opérations Firestore Pipeline.
Les opérations Firestore Core fournissent les fonctionnalités standard de création, de lecture, de mise à jour et de suppression (CRUD) de documents, ainsi qu'une compatibilité intégrée pour les requêtes d'écoute en temps réel et la persistance hors connexion. Une différence opérationnelle distincte dans cette édition est que les index sont facultatifs et ne sont pas créés automatiquement pour les champs uniques. Bien que cela permette aux requêtes de s'exécuter sans configuration d'index préalable, les requêtes non indexées analyseront par défaut l'intégralité de la collection. Cela peut entraîner une augmentation de la latence et des coûts à mesure que l'ensemble de données augmente.
Les opérations Firestore Pipeline sont une fonctionnalité essentielle de l'édition Firestore Enterprise. Elles s'appuient sur un moteur de requêtes avancé pour étendre considérablement la gamme de requêtes possibles. Les opérations de pipeline Firestore utilisent une syntaxe de requête flexible et une méthode d'indexation distincte où les index sont facultatifs et ne sont pas créés automatiquement. Cela permet d'effectuer des opérations de récupération de données avancées pour les applications.
Fonctionnalités des opérations Firestore Core
Les opérations de base permettent les opérations CRUD standards et les requêtes d'écoute en temps réel. Toutefois, lorsque vous utilisez ces opérations dans l'édition Enterprise, le comportement sous-jacent concernant l'indexation et la facturation change considérablement par rapport à l'édition Standard.
Fonctionnalité et continuité
Les opérations de base conservent la syntaxe de chaînage de méthodes habituelle (par exemple, .where(), .orderBy()) utilisée dans l'édition Standard. Ces opérations sont compatibles avec les requêtes d'écoute en temps réel et la persistance hors connexion pour les clients mobiles et Web. Il est recommandé d'utiliser ces opérations pour les charges de travail transactionnelles standards, les recherches simples et la migration du code d'application existant.
Indexation personnalisée
Contrairement à l'édition Standard, l'opération Core de l'édition Enterprise ne crée pas automatiquement d'index à un seul champ. Les index sont facultatifs et ne sont pas nécessaires pour exécuter une requête. Si un index spécifique est manquant, la requête effectue une analyse complète de la collection. Bien que les requêtes non indexées permettent un prototypage rapide, elles peuvent être plus lentes et plus coûteuses à mesure que l'ensemble de données augmente. Les développeurs doivent créer manuellement des index pour optimiser les performances des requêtes et réduire la consommation d'unités de lecture.
Modèle de facturation (basé sur les unités)
Les unités de lecture sont facturées par tranches de 4 Ko, et non par nombre de documents. Une requête non indexée qui analyse une grande collection consommera des unités de lecture en fonction du nombre total d'octets analysés dans tous les documents. Les unités d'écriture sont facturées par tranches de 1 Ko. L'écriture d'un document consomme des unités pour les données, ainsi que des unités supplémentaires pour chaque entrée d'index mise à jour. Contrairement à l'édition Standard, qui applique l'indexation automatique des champs individuels, vous pouvez désormais choisir des champs spécifiques à indexer pour optimiser les coûts d'écriture et les performances.
Fonctionnalités des opérations Firestore Pipeline
L'édition Enterprise de Firestore avec les opérations de pipeline utilise un moteur de requête avancé qui supprime de nombreuses limites existantes de l'édition Standard de Firestore. Les opérations Firestore Pipeline offrent des centaines de fonctionnalités de requête supplémentaires. Les opérations du pipeline Firestore présentent les fonctionnalités suivantes :
Syntaxe composable basée sur les étapes
Les requêtes de pipeline sont construites en définissant une série d'étapes séquentielles qui sont exécutées dans l'ordre. Cela permet d'effectuer des opérations complexes, comme filtrer le résultat d'une agrégation, ce qui n'était pas possible auparavant.
L'exemple suivant montre une requête de pipeline qui recherche le nombre d'ID de produits uniques consultés au cours du dernier mois :
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()
Fonctionnalités étendues
La requête Pipelines introduit un grand nombre de nouvelles fonctionnalités, y compris :
- Agrégations : prise en charge de nouvelles fonctions d'agrégation (comme
sum(...),min(...)etcount_distinct(...)) combinées à des champs de regroupement arbitraires. - Filtrage complexe : prise en charge de centaines de fonctions supplémentaires pour exprimer des instructions
where(...)arbitrairement complexes, y comprisregex_match(...),add(...)etstr_contains(...), le tout sans exigences d'index strictes. - Lectures / projections partielles : récupérez des sous-ensembles dynamiques de documents à l'aide de
select(...),remove_fields(...)et de nombreuses autres étapes de manipulation de documents.
Pour en savoir plus sur ces fonctionnalités, consultez Interroger des données avec des opérations de pipeline.
Assistance en temps réel et hors connexion
Pour utiliser les fonctionnalités en temps réel et hors connexion, les développeurs peuvent utiliser les opérations Firestore Core sur Firestore Enterprise Edition.
Intégration du client et des outils
L'édition Enterprise inclut des fonctionnalités spécialisées pour interagir avec les requêtes de pipeline et les gérer :
- Explication et profilage des requêtes : vous pouvez utiliser les résultats de l'explication des requêtes pour comprendre le nombre d'unités de lecture ou d'écriture qu'une requête consomme et analyser son exécution.
- Insights sur les requêtes : l'édition Enterprise est compatible avec les insights sur les requêtes, qui vous aident à déterminer où créer des index pour améliorer les performances et réduire les coûts. Pour ce faire, ils vous donnent de la visibilité sur les principales requêtes exécutées sur votre base de données et sur leurs caractéristiques de performances.
- Nouveaux types d'index : vous pouvez créer des index spécialisés pour l'édition Enterprise, y compris des types d'index tels que les index creux, non creux et uniques. Il permet également de créer et de modifier des index de recherche vectorielle pour les bases de données Enterprise.
Différences entre Firestore Standard et Firestore Enterprise
La principale différence opérationnelle entre les opérations Core et Pipeline réside dans la gestion de l'indexation, qui affecte directement les performances et les coûts.
| Firestore Standard : opérations de base | Firestore Enterprise : opérations Core et Pipeline | |
| Exigences concernant l'indexation | Les index sont obligatoires pour les requêtes.
Les index pour les champs individuels sont créés automatiquement, tandis que les requêtes plus complexes s'appuient sur des index composites ou des index de groupe de collections qui doivent être configurés manuellement. |
Les index ne sont pas obligatoires et sont donc facultatifs pour les requêtes.
Vous définissez les index selon vos besoins. L'édition Enterprise est également compatible avec un plus grand nombre de types d'index, y compris les index non épars/épars et uniques. |
| Performances | Requêtes indexées : les performances et le coût évoluent en fonction de la taille de votre ensemble de résultats. |
Requêtes non indexées : les performances et les coûts évoluent en fonction de la taille de votre ensemble de données. Requêtes indexées : les performances et le coût évoluent en fonction de la taille de votre ensemble de résultats. Nous vous recommandons d'utiliser les outils "Expliquer la requête" et "Query Insights" pour créer des index et améliorer les performances et le coût de vos requêtes. |
| Implications en termes de coûts de stockage | Les index automatiques et composites entraînent une surcharge de stockage. | Vous réduisez les coûts de stockage, car les index ne sont pas créés automatiquement pour chaque champ. |
| Base du coût | Facturation par opération de lecture, d'écriture et de suppression de document. | Facturation par unité de lecture (tranches de 4 Ko) et par unité d'écriture (tranches de 1 Ko). L'écriture d'entrées d'index consomme des unités d'écriture.
Découvrez les nouveaux tarifs avec quelques exemples. |
| Règles de sécurité | Les règles de sécurité protègent les collections en vérifiant les autorisations de lecture/écriture. | Les règles de sécurité protègent les collections en vérifiant les autorisations de lecture/écriture. Découvrez comment modéliser vos données pour prendre en charge les requêtes de pipeline dans le guide Modèle de données. |