Firestore はフィードを最適化し、システムのスケーラビリティを追跡するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-10-29 19:35:30
オリジナル
399 人が閲覧しました

How can Firestore optimize a feed and follow system for scalability?

Firestore でのフィードとフォローのシステム構造の最適化

ソーシャル ネットワーク アプリのフィードとフォローのシステムを設計する場合、次のことが重要です。パフォーマンスのボトルネックを防ぐためにスケーラビリティを考慮してください。これに対処するために Firestore でデータベースを構造化する方法は次のとおりです:

初期リレーショナル スキーマ

現在の Firebase Realtime Database スキーマには次のものが含まれます:

  • ユーザー情報のあるユーザー
  • 投稿の詳細のある投稿
  • ユーザーがフォローしている投稿にリンクするタイムライン

Firestore データベースの構造

Firestore でこの構造を最適化するために、コレクションを利用する非正規化アプローチを提案します:

  • users: ユーザー プロファイルの詳細を含むユーザー ドキュメントのコレクション
  • 以下: ユーザーフォロードキュメントのコレクション、各ドキュメントにはフォローされているユーザーのコレクションが含まれます
  • posts: 投稿ドキュメントのコレクション、各ドキュメントには投稿のコレクションが含まれます

非正規化の利点

データを非正規化することで、コストのかかる結合の必要性がなくなり、クエリのパフォーマンスとスケーラビリティが向上します。

ユーザーフォローのクエリ

ユーザーのリストに続いて、次のクエリを実行できます。

CollectionReference userFollowingRef = rootRef.collection("following/" + uid + "/userFollowing");
ログイン後にコピー

ユーザーの投稿のクエリ

ユーザーの最新の投稿を取得するには、次のクエリを実行できます。

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

フィード取得の最適化

ユーザーのフィードを効率的に取得するには、次の点を考慮してください。

  • ページネーション戦略を使用して、データをより小さいサイズで読み込む
  • 同じデータを取得するための繰り返しのクエリを避けるために、ユーザーのフィードを別のドキュメントに保存します。

この改訂された構造は、初期設定のスケーラビリティの問題に対処します。スキーマを使用すると、Firestore で大量のフォロワーと投稿を効率的に管理できるようになります。

以上がFirestore はフィードを最適化し、システムのスケーラビリティを追跡するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!