2017-06-05 5 views
0

このようなデータストアがあるとします。2人の子供を2回服用し、すべての子供を一度に服用するのはどういう違いがありますか?

Firebase database

が、私は唯一のusernameprofileImageをしたいです。この場合、どのような方法を使用する必要がありますか?

最初のクエリデータは2回です。このような何か...

usersRef.child(uid).child("username").addValueListener...  
String username = dataSnapshot.getValue(String.class);  
usersRef.child(uid).child("profileImage").addValueListener... 
String profileImage = dataSnapshot.getValue(String.class); 

または

もう一つは一度だけ、すべての子供たちを取得し、私が欲しいデータのみを取得することです。このようなもの...

- userRef.addValueListener... 
User user = new User(); 
datasnapshot.getValue(user.class) 
String username = user.username; 
String profileImage = user.profileImage; 

答えて

0

(このシナリオでは)別のコールのオーバーヘッドはかなり小さいです。 http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786を参照してください。

余分なデータを取得するためのオーバーヘッドは、余分なデータのサイズによって異なります。このシナリオではかなり重いようですが、特にそこにネストされたコレクションがあるためです。これは、Firebaseがデータをフラット化し、ネストしたすべてのコレクションを独自の最上位ノード(userFollowersuserFollowingsuserNoficationTokens)に移動することを推奨する多くの理由の1つです。

最適なパフォーマンスを得るには、アプリケーションに表示したいデータが含まれているリストが必要です。したがって、ユーザー名+画像のリストを表示する画面がある場合は、そのデータだけをデータベースに持つリストが必要です。その場合、データを複製することになりますが、そのためにスケーラビリティがほぼ無限に向上します。

関連する問題