「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Firestore はどのようにフィードを最適化し、ソーシャル ネットワークのスケーラビリティのためにシステムに従うことができるでしょうか?

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

2024 年 11 月 23 日に公開
ブラウズ:349

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

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

リアルタイム データベースのスケーラビリティの問題

Firebase Realtime Database を使用した以前のソーシャル ネットワーク アプリでは、次のような理由によるスケーラビリティの問題に直面していました。フォロー中:

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

最適化された Firestore 構造

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

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

スケーラビリティの向上

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

  • フォロワーをサブに保存します。コレクションを使用すると、データをコピーする必要がなくなります。
  • 投稿をサブコレクションに分割すると、フォローしているユーザーの最新の投稿を引き続き取得できます。

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

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

Query query = rootRef.collection("posts/"   uid   "/userPosts")
    .orderBy("date", Query.Direction.DESCENDING).limit(3);

このクエリは、指定されたユーザー (uid) の最新の 3 つの投稿を取得し、連続読み込みのためにページ分割された方法で利用できます。 .

大量の投稿の最適化

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3