2016-11-18 2 views
1

Я пытаюсь создать людей мировой модели в Firebase. Это означает, что где-то мне нужно положить 500 miljon + записи, как этот Firebase JSON:Как найти в Firebase этот очень большой список пользователей

 "USER" : { 
     "HnhLyXRxUINmlltKOfxx2QBYiQ53" : { // FireBase user ids 
      "FRIENDLYS" : { 
      "-KWrFrMx1yQe0jhyA7HP" : { // Push ids 
       "animal" : "dog" 
      }, 
      "-KWrG7EsLkZvASjpcW3A" : { 
       "animal" : "cat" 
      }, 
      "-KWrG9hbQxrZwdfjqbuQ" : { 
       "animal" : "horse" 
      } 
      }, 
      "email" : "[email protected]", 
      "lastName" : "Doe", 
      "firstName" : "John", 
      "googleId" : "10086464927329323e2326" 
     }, 
     "HnhLyXHKJH67677GJKMnbBYiQ53" : { // FireBase user ids 
      "FRIENDLYS" : { 
      "-KWrFrMdjnjs982s7HP" : { // Push ids 
       "animal" : "ant" 
      .... 

     } 

Я хочу найти одну USER как это:

firebase.child("USER/HnhLyXRxUINmlltKOfxx2QBYiQ53").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

Вопрос в том, что это хороший подход к продолжать строить, особенно возможно ли иметь объект «ПОЛЬЗОВАТЕЛЬ», этот большой при поиске, как я?

Что я могу ожидать?

ответ

2

Ваш код не поиск для пользователя. Вы создаете прямую ссылку на дочерний узел, которая сама по себе не имеет каких-либо последствий для производительности. Поиск ключа напрямую всегда выполняется быстро, поэтому количество пользователей не будет отрицательно влиять на ваше приложение.

Однако сохранение «FRIENDLYS» [sic] под пользователем не масштабируется. Загрузка одного пользовательского узла будет медленнее с каждым добавленным ребенком. Вы должны хранить их отдельно под другим корневым узлом и загружать их только в том случае, если они вам действительно нужны.

См. Также раздел базы данных базы данных Structure Your Data.

Смежные вопросы