Questo dipende molto dal sistema, ma è quasi certo che riusciremo a superare una scogliera arbitraria e ad entrare in Real Trouble. Sono curioso di sapere che tipo di regole empiriche esistono per un buon rapporto tra RAM e spazio su disco. Stiamo pianificando il nostro prossimo giro di sistemi e dobbiamo fare alcune scelte in merito a RAM, SSD e alla quantità di ciascuno dei nuovi nodi.
Ma ora per alcuni dettagli sulle prestazioni!
Durante il normale flusso di lavoro di un singolo progetto, MongoDB viene colpito con un'altissima percentuale di scritture (70-80%). Una volta che la seconda fase della pipeline di elaborazione ha esito positivo, è estremamente alta lettura in quanto deve deduplicare i record identificati nella prima metà dell'elaborazione. Questo è il flusso di lavoro per cui è fatto "mantieni il tuo set di lavoro nella RAM", e stiamo progettando intorno a questo presupposto.
L'intero set di dati viene continuamente sottoposto a query casuali da fonti derivate dall'utente finale; sebbene la frequenza sia irregolare, la dimensione è generalmente piuttosto piccola (gruppi di 10 documenti). Poiché questo è rivolto all'utente, le risposte devono essere al di sotto della soglia "annoiata" di 3 secondi. È molto meno probabile che questo modello di accesso sia nella cache, quindi sarà molto probabile che si verifichino hit del disco.
Un flusso di lavoro di elaborazione secondario è di alta lettura delle precedenti esecuzioni di elaborazione che potrebbero avere giorni, settimane o addirittura mesi e viene eseguito di rado ma deve comunque essere zippy. Sarà possibile accedere fino al 100% dei documenti nell'esecuzione di elaborazione precedente. Sospetto che nessuna quantità di riscaldamento della cache possa essere d'aiuto.
Le dimensioni del documento finito variano ampiamente, ma la dimensione mediana è di circa 8 K.
La parte di lettura elevata della normale elaborazione del progetto suggerisce fortemente l'uso di repliche per aiutare a distribuire il traffico di lettura. Ho letto altrove che un 1:10 da RAM-GB a HD-GB è una buona regola empirica per i dischi lenti, poiché stiamo seriamente prendendo in considerazione l'uso di SSD molto più veloci, vorrei sapere se esiste una regola simile di pollice per dischi veloci.
So che stiamo usando Mongo in un modo in cui tutto ciò che la cache non sta per volare, è per questo che sto cercando dei modi per progettare un sistema in grado di sopravvivere a tale utilizzo. L' intero set di dati sarà probabilmente la maggior parte di un TB entro sei mesi e continuerà a crescere.