Penso che a questa domanda non possa essere data una risposta precisa senza ulteriori dettagli specifici per la vostra applicazione. Detto questo, penso che sia una domanda importante, quindi descriverò alcune cose da considerare.
Per essere chiari, il focus di questa risposta sarà discutere i meriti relativi del lato server e lato client reactive joins.
decidere se è necessario reattività
È possibile produrre un semplice unire di più raccolte, senza alcuna reattività nel inserzionista (vedi il primo esempio dal suddetto articolo). A seconda della natura del problema, potrebbe non essere necessario un join reattivo. Immagina di unirti a commenti e autori, ma la tua app ha sempre tutti gli autori possibili pubblicati. In tal caso il difetto fondamentale nei join non reattivi (documenti secondari mancanti dopo un nuovo genitore) non esisterà, quindi una pubblicazione reattiva è ridondante.
considerano il vostro modello di sicurezza
Come ho detto nel mio articolo sul template joins, lato server si unisce il vantaggio di impacchettare tutti i dati insieme, mentre i client si unisce agli editori più granulari. Considera le implicazioni sulla sicurezza di avere un editore come commentsAndAuthors
rispetto a due implementazioni generiche di comments
e users
. Quest'ultimo suggerisce che chiunque potrebbe richiedere una serie di documenti utente senza contesto.
Server unisce può essere CPU e memoria maiali
Guardate attentamente l'attuazione della libreria che si stanno prendendo in considerazione per il lato server si unisce. Alcuni di essi usano observe che richiede che ogni documento completo nella catena delle dipendenze sia conservato in memoria. Altri sono implementati solo su observeChanges che è più efficiente ma rende i pacchetti un po 'meno flessibili in quello che possono fare.
look per riutilizzare osservatore
Uno dei vostri obiettivi dovrebbe essere quello di reuse your observers. In altre parole, dato che si avranno S iscrizioni simultanee, si finirà solo con il lavoro ~ (S-I) dove I è il numero di osservatori identici tra i client. A seconda della natura dei tuoi abbonamenti, potresti vedere un maggiore riutilizzo dell'osservatore con abbonamenti più granulari, ma questo è molto specifico per l'applicazione.
guardatevi latenza
Un grande vantaggio di lato server si unisce è che essi offrono tutti i documenti in modo efficace in una sola volta. Confrontalo con un client join che deve attendere l'arrivo di ogni set di documenti padre prima di attivare le sottoscrizioni secondarie. Un client-join N-level dovrebbe effettuare N round-trip prima che il set iniziale di documenti venga consegnato al client.
conclusione
Avrete bisogno di prendere tutto quanto sopra in considerazione al momento di decidere la tecnica da utilizzare per ciascuna delle vostre pubblicazioni. La realtà è che il benchmarking di un'app live su qualcosa come kadira è l'unico modo per arrivare a una risposta definitiva.
non corrisponde interamente alla quantità di dati che dovresti inviare? Se ti iscrivi al server, il set di dati da sincronizzare può essere molto piccolo. Proprio quello di cui hai bisogno. Se è necessario sincronizzare diverse raccolte prima di decidere sul client che è necessario solo un piccolo frammento di esso, si inviano più del necessario che possono influire sulle prestazioni. Ma ancora, potrebbe non essere sempre così. –