2015-11-16 27 views
9

Questo post dice che Firebase avrà un problema a venire, quando un singolo nodo comincia ad avere 1-10 + milioni di bambini. come si dovrebbe gestire gli utenti in un app, se abbiamo più di 10 milioni di euro? In tutti gli esempi, ho pensato che gli utenti fossero semplicemente figli di un singolo nodo "Utenti".Firebase Scalabilità Limite

+1

ho scritto un risposta qui sotto. Ma la modellazione dei dati per NoSQL è un argomento incredibilmente ampio che non è facile rispondere qui su StackOverflow. Un buon primer sull'argomento: https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ –

risposta

16

Firebase non è l'ideale per la lavorazione di lunghi elenchi di oggetti. Il problema con queste lunghe liste non è tanto la memorizzazione dei dati quanto l'accesso ai dati.

Ogni volta che si accede alla lista (ad esempio ref.child('users').on(...) Firebase deve considerare tutti gli elementi di tale elenco sul server; anche quando si sta scaricando solo pochi utenti (.limitToLast(10)), si deve considerare ogni utente.

Ma fino a quando non si tenta di accedere all'elenco, è possibile memorizzare quanti utenti ci sono sotto come si desidera. Ma ciò significa che le accedi sempre direttamente, ad es. ref.child('users').child(auth.uid).on(....

Ciò limita i casi di utilizzo che è possibile implementare, quindi in genere gli sviluppatori creano sottolisti di utenti in base a come devono utilizzarli. Ad esempio, se ogni utente tiene un elenco di amici, è possibile mantenere quelli come ref.child('users_friends').child(auth.id).on(... e visualizzarli di nuovo con ref.child('users').child(auth.uid) nuovamente. In questo modo, stai leggendo solo un piccolo elenco di utenti e quindi caricando direttamente ciascuno di questi utenti.