2015-11-16 13 views
9

Diese post besagt, dass FireBase ein Problem auftreten wird, wenn ein einzelner Knoten 1-10 + Millionen Kinder hat. Wie sollte man Benutzer in einer App handhaben, wenn wir mehr als 10 Millionen haben? In allen Beispielen, die ich durchführte, waren Benutzer einfach Kinder eines einzelnen Knotens "Benutzer".Firebase-Skalierbarkeitsgrenze

+1

Ich schrieb eine Antwort unten. Aber Datenmodellierung für NoSQL ist ein unglaublich breites Thema, das hier auf StackOverflow nicht einfach zu beantworten ist. Ein guter Grund zum Thema: https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ –

Antwort

16

Firebase ist nicht ideal für die Verarbeitung langer Artikellisten. Das Problem bei diesen langen Listen besteht nicht so sehr darin, die Daten zu speichern, als auf die Daten zuzugreifen.

Wenn Sie auf die Liste zugreifen (z. B. ref.child('users').on(...), muss Firebase alle Elemente in dieser Liste auf dem Server berücksichtigen. Auch wenn Sie nur wenige Benutzer herunterladen (.limitToLast(10)), muss jeder Benutzer berücksichtigt werden.

Aber solange Sie nie versuchen, auf die Liste zuzugreifen, können Sie beliebig viele Benutzer dort speichern, wie Sie möchten. Aber das bedeutet, dass Sie immer direkt auf sie zugreifen, z. ref.child('users').child(auth.uid).on(....

Dies begrenzt die Anwendungsfälle, die Sie implementieren können, sodass Entwickler in der Regel Unterlisten von Benutzern erstellen, indem sie angeben, wie sie diese verwenden müssen. Zum Beispiel, wenn jeder Benutzer eine Liste von Freunden führt, könnten Sie solche wie ref.child('users_friends').child(auth.id).on(... behalten und jeden von ihnen mit ref.child('users').child(auth.uid) wieder schauen. Auf diese Weise lesen Sie nur eine kleine Liste von Benutzern und laden dann jeden dieser Benutzer direkt.