クラウドFirestoreソーシャルメディアの構造について「アレイ-含む」クエリを使用して

tccpg288:

私はと呼ばれるコレクション、で構成されていたデータ構造を有する「投票を。」「投票」をランダムIDを生成しているいくつかの文書を持っています。それらの文書の中では、と呼ばれる追加のコレクションセットがある「の回答が。」すべての「答え」サブコレクションに書かれた票を持つユーザーこれらの世論調査に投票を、。私は(任意の世論調査のための)このsubscollectionは常に更新され、ユーザーによって書き込まれているという考えと、「答え」ノードに.runTransaction()メソッドを使用します。

私は約読んでいるFirestoreのためのソーシャルメディアの構造しかし、私は最近Firestore、「array_contains」クエリオプションの新しい機能に出くわしました。

議論し、上記のポスト参照し、ソーシャルメディアの構造のための「次」のフィードが、私は心の中でさまざまなアイデアを持っていました。私は、ユーザーがそれゆえ、別の「次」のノードを作成しても、ユーザーが(クラウド機能を使用して)更新投票の投票数にこのノードに書き込みを持つ、私のメインの投票ノードに(投票)書き込み思い描く私は常にコピーされなければならないので、恐ろしく非効率です投票がカウントされているメインノードから。

「array_containsは、」ソーシャルメディアの構造のスケーラビリティのための別の実用的な選択肢になるクエリでしょうか?私の考えは次のとおりです。

  1. 利用者Aと呼ばれる私の「ユーザー」ノード内の直接の配列の子への書き込み、ユーザーBを、以下の場合は「信者。」
  2. すべての投票がユーザBにより作成される前に、ユーザーのBのデバイスは、Arrayオブジェクトでは、クライアント側でそれらを以下とを移入すべてのユーザーのリストを得るためにFirestoreから「フォロワー」の配列を読み込み
  3. ユーザBが新しい投票を書き込むとき、ユーザBからそれぞれ新しい投票は、すべてのIDの次のユーザーが含まれているのそれに接続されている配列を持つことになりますので、その後、、ポーリングにその「フォロワー」の配列を追加します。

「array_contains」クエリの制限は何ですか?それは、ユーザー/フォロワーの数千人が含まれていFirebaseに格納された配列を持つことが実用的ですか?

ここでは、画像の説明を入力します。 ここでは、画像の説明を入力します。

アレックス・マモ:

「array_containsは、」ソーシャルメディアの構造のスケーラビリティのための別の実用的な選択肢になるクエリでしょうか?

Yes of course. This the reason why Firebase creators added this feature.

Seeing your structure, I think you can give it a try, but to responde to your question.

What are the limitations on the "array_contains" query?

There is no limitations regarding what type of data do you store.

Is it practical to have an array stored in Firebase that contains thousands of users / followers?

Is not about practical or not, is about other type of limitations. The problem is that the documents have limits. So there are some limits when it comes to how much data you can put into a document. According to the official documentation regarding usage and limits:

Maximum size for a document: 1 MiB (1,048,576 bytes)

あなたが見ることができるように、あなたは、単一のドキュメント内のデータの1点のMIB合計に制限されています。我々はテキストを格納について話しているとき、あなたはかなりを保存することができます。あなただけのIDを保存するかどうだからあなたの場合には、私はそれは問題はないと思います。しかし、私見では、大きなご使用のアレイgettsとして、この制限に注意してください。

あなたは配列内のデータを大量に保存されており、それらの配列は、多くのユーザーによって更新されなければならない場合、あなたはの世話をする必要があることを、別の制限があります。だから、すべての文書に毎秒1個の書き込みに制限されています。あなたは多くのユーザーがアルすべてのすべてを一度に同じ文書への書き込み/更新データにしようとしている状況を持っているのであれば、あなたは、この書き込みの一部が失敗して見始めるかもしれません。だから、あまりにもこの制限に注意してください。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=235342&siteId=1