Les opérations Firestore Pipeline sont une fonctionnalité essentielle de l'édition Firestore Enterprise. Elles sont basées sur un nouveau moteur de requête qui élargit 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 Pipeline
L'édition Firestore Enterprise et les nouvelles opérations de pipeline utilisent un nouveau moteur de requête avancé qui supprime de nombreuses limites existantes de l'édition Firestore Standard. Les opérations du pipeline Firestore offrent plus de 120 nouvelles fonctionnalités de requête. 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 le filtrage sur 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 : plus de 120 nouvelles fonctions pour exprimer des instructions
where(...)arbitrairement complexes, y comprisregex_match(...),add(...)etstr_contains(...), sans aucune exigence d'indexation stricte. - 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.
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ù des index pourraient être créés pour améliorer les performances et réduire les coûts en vous donnant de la visibilité sur les caractéristiques de performances des requêtes.
- Nouveaux types d'index : vous pouvez créer des index spécialisés pour l'édition Enterprise, y compris des index creux. 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. |
| Risque de 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. |