2017-01-29 2 views
0

Ich verwende die Firebase-Datenbank für Android und habe einige Geschwindigkeitsprobleme. Beim Abrufen vieler benutzerdefinierter Objekte dauert es sehr lange (z. B. 1/2 bis 1 Sekunde). Ich lade eine Menge von Poll-Objekten, die ich im FB gespeichert habe. HierAndroid Firebase-Datenbank wird schneller geladen

ist ein Beispiel dafür, wie ich zur Zeit mache es für jede Umfrage:

pollRef = rootRef.child(getString(R.string.poll_ref)).child(myPollIds.get(polls.size())); 

     pollRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       if (isAdded()) { 
        Poll poll = dataSnapshot.getValue(Poll.class); 

ich jetzt versuchen, einzeln zu laden, bestimmte Teile der Umfrage herunterladen, die ich verwenden müssen. Es wird ziemlich komplex. Gibt es einen besseren Weg, nur Teile von Objekten effizient aus der Datenbank zu bekommen?

Zum Beispiel möchte ich nur die markierten Teile des Objekts. enter image description here

Vielen Dank im Voraus! :)

Antwort

2

Firebase Realtime Database gibt Ihnen nicht die Fähigkeit, einzelne Attribute wie Sie hoffen, zu pflücken. Der effizienteste Weg, um nur ein Stück Daten von einer größeren Struktur zu erhalten, besteht darin, alle relevanten Bits in eine ganz andere Struktur zu kopieren und stattdessen diese andere Struktur anzufordern. Diese Art der Duplizierung ist typisch für eine optimierte NoSQL-Datenbank - die Daten werden normalerweise so oft kopiert wie nötig, um sie für bestimmte Abfragen zu optimieren, die in einer App üblich sind. Der Nachteil davon ist, wenn Sie einen der kopierten Werte aktualisieren, müssen Sie darauf achten, ihn an alle anderen Orte zu kopieren, an denen er leben könnte.

Der Name dieser Datenorganisation lautet denormalization.