3 votes

Les requêtes s'adaptent à la taille de votre ensemble de résultats, et non à celle de votre ensemble de données.

Il s'agit d'une question sur le dernier Firebase Cloud Firestore Dans ce document, il est dit ceci :

Il permet également des requêtes expressives. Les requêtes évoluent avec la taille de votre ensemble de résultats, et non la taille de votre ensemble de données. performance en récupérant un résultat à partir d'un ensemble de 100 ou de 100 000 000.

Cette déclaration n'est pas claire pour moi. Pouvez-vous nous en dire un peu plus sur ce cas d'utilisation ?

16voto

Frank van Puffelen Points 16029

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 :

  1. 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.
  2. 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)

5voto

David Points 4696

L'écriture peut être un peu confuse. Il ne s'agit pas d'un cas d'utilisation au sens classique du terme, mais simplement d'une déclaration sur les performances de Firestore.

En gros, cela signifie que peu importe que vous demandiez 1 élément sur 100 ou 1 élément sur 100 000 000, la rapidité sera la même. Ici, 1 est votre résultat et 100/100.000.000 est votre ensemble de données . Ainsi, la demande d'un article sur 100.000.000 sera plus rapide que la demande de 50 articles sur 100.

J'espère que c'est un peu plus clair !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X