私が説明する戦略は、Firebaseで使用することをお勧めしますか?Firebaseでこのようなクエリを実行すると、どのようなパフォーマンスが期待できますか?
多くの人がすでに同じ問題を解決していると確信していますので、私の目標は何かをまず説明します。
目標は、共通の "George"(連絡先に基づいて)の友だちが今やAppの誇りある新しいユーザーになったときに、Appのすべてのユーザーに通知することです。
だから、私の考えはそうでした:ユーザーごとに連絡先のリストを保存するには
{
"contacts":
{
"user1":
{
{"user239":true}
,
{"user23":false}
,
{"user732":true}
}
,
{
"user2" :
{
{"user23":false}
,
{"user96":false}
,
{"user88":true}
}
}
}
}
:
1-この構造のコレクションを構築します。
次に、新しいユーザーは、このような連絡先のリストを照会します:
fbRef.child('contacts').orderByChild('user23').equalTo(false).once('value', showResults, console.error);
次に、ユーザはそのマップを使用して、マップに結果を保存true
に値を変更し、updateChildren()
でしょう。
ここで、数十万人、さらには何百万人ものユーザーがAppを使用することを願っているとしたら、これは妥当ですか?
5Mのユーザーがいて2番目のユーザーが参加すると、これはどれくらいの費用がかかりますか?
このケースでは「最適な戦略」がありますか?
おかげ
この単純にしてください。各ユーザには、連絡先情報の名前(電子メール、電話番号など)を含む連絡先ノードがあります。各ユーザーのアプリは、すべてのユーザーを含むメインユーザーノードにオブザーバーを追加します。 Georgeがサインアップすると、彼の情報はメインユーザーノードに書き込まれ、各ユーザーにこの新しいユーザーが通知されます。その名前(電子メール、電話番号)を連絡先のリストと比較し、一致する場合は連絡先リストにGeorgeのユーザーIDを追加します。難しい部分は、それが正しいジョージであることを知るために十分細かい使用するトリガーを決定することです。何千人もの観察者は問題ありません。 – Jay
+1に@ジェイ、私はそれが正しい答えだと思います。ところで、あなたは5Mのユーザーを何も持っていないでしょうし、もしあなたがそうしていても、それはfirebase価格で非営利になります。私見では –