ホームページ > Java > &#&チュートリアル > Firestore はどのようにフィードを最適化し、ソーシャル ネットワークのスケーラビリティのためにシステムに従うことができるでしょうか?

Firestore はどのようにフィードを最適化し、ソーシャル ネットワークのスケーラビリティのためにシステムに従うことができるでしょうか?

Mary-Kate Olsen
リリース: 2024-10-31 11:42:29
オリジナル
352 人が閲覧しました

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

Firestore でのフィードおよびフォロー システムの最適化

Realtime Database のスケーラビリティの問題

Firebase Realtime Database を使用する以前のソーシャル ネットワーク アプリでは、次の原因によるスケーラビリティの問題に直面していました:

  • 投稿は、多数のフォロワーを持つユーザーであっても、すべてのフォロワーのタイムラインに追加されました。
  • 新しいフォロワーは、フォローしているユーザーが以前に投稿したすべてのコンテンツを受け取りました。

最適化された Firestore 構造

Firestore でこれらの問題を解決するには、次のデータベースを検討してください。構造:

  • ユーザー、フォロー、投稿の 3 つのトップレベル コレクション。
  • ユーザーには、名前や電子メールなどのフィールドを持つドキュメントがあります。
  • 次のコレクションには次のものが含まれます各ユーザーのドキュメントと、フォローしているユーザーの UID のサブコレクションが含まれます。
  • 投稿コレクションには、各ユーザーのドキュメントと、投稿の投稿 ID のサブコレクションが含まれます。

スケーラビリティの向上

この構造により、フォロワーと投稿を効率的に処理できます。

  • フォロワーをサブコレクションに保存すると、データをコピーする必要がなくなります。
  • 投稿をサブコレクションに分割すると、フォロワー数が多い場合でも、フォローされているユーザーの最新の投稿の取得パフォーマンスが維持されます。

フォローされているユーザーの投稿のクエリ

ユーザーのフィード内の最新の投稿を表示するには、次のクエリを使用できます。

<code class="java">Query query = rootRef.collection("posts/" + uid + "/userPosts")
    .orderBy("date", Query.Direction.DESCENDING).limit(3);</code>
ログイン後にコピー

このクエリは、指定されたユーザー (uid) の最新の 3 つの投稿を取得します。

大量の投稿の最適化

大量の投稿の処理を最適化するには、必要な投稿を保存することを検討してください。ユーザーのフィード内に、そのユーザーの別のドキュメントまたはサブコレクションに表示されます。これにより、効率的な検索が保証され、新しいフォロワーが以前に投稿されたすべてのコンテンツを受信するという問題が回避されます。

以上がFirestore はどのようにフィードを最適化し、ソーシャル ネットワークのスケーラビリティのためにシステムに従うことができるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート