Maison >Java >javaDidacticiel >Comment Firestore peut-il optimiser les systèmes de flux et de suivi pour assurer l'évolutivité des réseaux sociaux ?

Comment Firestore peut-il optimiser les systèmes de flux et de suivi pour assurer l'évolutivité des réseaux sociaux ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 11:42:29357parcourir

How can Firestore optimize feed and follow systems for scalability in social networks?

Optimisation des systèmes de flux et de suivi dans Firestore

Problèmes d'évolutivité avec la base de données en temps réel

Dans votre Dans votre précédente application de réseau social utilisant Firebase Realtime Database, vous avez rencontré des problèmes d'évolutivité dus aux éléments suivants :

  • Des publications ont été ajoutées aux chronologies de tous les abonnés, même pour un utilisateur comptant de nombreux abonnés.
  • Les nouveaux abonnés ont reçu tout le contenu précédemment publié par les utilisateurs qu'ils suivaient.

Structure Firestore optimisée

Pour résoudre ces problèmes dans Firestore, considérez la base de données suivante structure :

  • Trois collections de niveau supérieur pour les utilisateurs, les abonnés et les publications.
  • Les utilisateurs disposent de documents avec des champs tels que le nom et l'adresse e-mail.
  • La collection suivante contient documents pour chaque utilisateur, avec des sous-collections pour les UID des utilisateurs qu'ils suivent.
  • La collection de publications contient des documents pour chaque utilisateur, avec des sous-collections pour les identifiants de publication de leurs publications.

Évolutivité améliorée

Cette structure permet une gestion efficace des abonnés et des publications :

  • Le stockage des abonnés dans des sous-collections élimine le besoin de copier des données.
  • La séparation des publications en sous-collections garantit que la récupération des dernières publications des utilisateurs suivis reste performante, même avec un grand nombre d'abonnés.

Requête des publications des utilisateurs suivis

Requête des publications des utilisateurs suivis
<code class="java">Query query = rootRef.collection("posts/" + uid + "/userPosts")
    .orderBy("date", Query.Direction.DESCENDING).limit(3);</code>

Pour afficher les dernières publications dans le flux d'un utilisateur, vous pouvez utiliser la requête suivante :

Cette requête récupère les trois dernières publications de l'utilisateur spécifié (uid) et peut être utilisé de manière paginée pour un chargement continu.

Optimisation pour les gros volumes de publicationsPour optimiser la gestion des gros volumes de publications, envisagez de stocker les publications qui doivent être affiché dans le flux d'un utilisateur dans un document ou une sous-collection distinct pour cet utilisateur. Cela garantit une récupération efficace et évite le problème des nouveaux abonnés recevant tout le contenu précédemment publié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn