firebaser ici
Dans la plupart des bases de données (y compris la base de données en temps réel de Firebase), les performances des requêtes dépendent d'une combinaison du nombre d'éléments que vous demandez et de la taille de la collection à partir de laquelle vous demandez les éléments.
Donc :
- Si vous demandez 10 articles sur 1 million d'articles, ce sera plus rapide que si vous demandez 1000 articles sur 1 million d'articles.
- Si vous demandez 10 articles sur 1 million d'articles, ce sera plus rapide que si vous demandez 10 articles sur 100 millions d'articles.
La différence de performance pour le numéro 1 est attendue, le transfert de données seul est quelque chose qui est difficile à oublier. Comme le point 2 dépend du traitement côté serveur, les développeurs l'oublient parfois. De nombreux SGBD relationnels s'optimisent très bien, ce qui signifie que la différence de performance est souvent une différence logarithmique. Mais avec une taille de collection suffisamment grande, même log(n)
les performances vont être perceptibles.
Cloud Firestore évolue horizontalement, ce qui signifie que la règle n° 2 ci-dessus ne s'applique pas :
- Si vous demandez 10 articles sur 1 million d'articles, cela prendra le même temps que de demander 10 articles sur 100 millions d'articles.
Cela est dû à la façon dont le système de requêtes de Firestore est conçu. Bien qu'il ne soit pas possible de modéliser chaque requête directement à partir d'un modèle de données relationnel vers le modèle de données Firestore, si vous pouvez définir vos cas d'utilisation en termes de requête Firestore, il est garanti que l'exécution se fera dans un temps relatif au nombre de résultats demandés. (en paraphrasant le commentaire de Gil ici)