2015-11-16 12 views
9

このpostは、個々のノードが1〜10万人の子供を持つようになるとFireBaseに問題が発生することを示しています。 1,000万人以上のユーザーがアプリ内のユーザーを処理するにはどうすればよいですか?すべての例では、ユーザーは単なるノード「ユーザー」の子でした​​。Firebaseのスケーラビリティ制限

+1

私は以下の回答を書いています。しかし、NoSQLのデータモデリングは非常に広範なトピックであり、ここではStackOverflowで簡単に答えられません。トピックに関する優れた入門書:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ –

答えて

16

Firebaseは長いアイテムのリストを処理するのには適していません。これらの長いリストの問題は、データにアクセスしているときにデータをあまり保存していないためです。

リストにアクセスするたびに(たとえばref.child('users').on(...)、Firebaseはサーバ上のそのリスト内のすべての項目を考慮する必要があります。少数のユーザー(.limitToLast(10))しかダウンロードしていない場合でも、各ユーザーを考慮する必要があります。

ただし、リストにアクセスしようとしない限り、必要な数のユーザーをそこに格納することができます。しかし、それはあなたが常にそれらに直接アクセスすることを意味します。 ref.child('users').child(auth.uid).on(...

これは実装可能なユースケースを制限するため、開発者は通常、ユーザーのサブリストをどのように使用する必要があるかによって作成します。たとえば、各ユーザーが友人のリストを保持している場合は、それらをref.child('users_friends').child(auth.id).on(...のように保ち、それぞれをref.child('users').child(auth.uid)と再度見てください。そうすれば、少数のユーザーのリストを読んで、それぞれのユーザーを直接ロードするだけです。

関連する問題