2013-05-09 18 views
8

Come parte del nostro cluster mongo, abbiamo un nodo nascosto che le persone di analisi utilizzano per la segnalazione. Le loro richieste sono abbastanza diverse da quelle per cui è stata ottimizzata la nostra applicazione principale.Indici diversi su diversi membri della serie di repliche

Possiamo migliorare notevolmente le prestazioni delle loro query aggiungendo determinati indici, che sono relativamente costosi da calcolare, e prendono una buona quantità di memoria. Questi indici non dovrebbero essere usati da nessuna delle query in esecuzione sui nostri membri primari e secondari, quindi sembra un po 'sciocco spendere tempo e memoria sui membri del set di repliche principale per calcolare e mantenere gli indici dei rapporti in memoria.

C'è un modo per creare un indice in modo che esista solo su un singolo membro del set di repliche? C'è un modo per dire ai miei nodi primari e secondari di non calcolare o memorizzare gli indici che so che non useranno?

risposta

9

Sì: è possibile utilizzare una variante della strategia utilizzata per creare un nuovo indice in un set di repliche senza tempi di inattività. Ciò richiederà che il membro nascosto venga rimosso dalla linea mentre vengono creati gli indici.

ecco il link per la strategia: http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/#procedure

Nel tuo caso si avrà il membro nascosto off-line e il riavvio in modalità standalone (rimuovere l'opzione --replSet e utilizzare un numero di porta diverso). Una volta isolato, puoi regolare gli indici (rimuovere quelli non necessari e aggiungerne di nuovi). Una volta che gli indici sono stati creati, riavviare il membro con la vecchia porta e l'opzione --replSet.

Il membro nascosto eseguirà la risincronizzazione sul set di repliche e sarà tutto impostato.

+0

Interessante. Il mio problema è che assolutamente non voglio propagare gli indici ai server primari. Ridurranno drasticamente le prestazioni in scrittura. – captncraig

+2

Non lo faranno. Gli indici vengono propagati solo dal primario ai secondari quando vengono creati. Poiché questo è un membro nascosto, non sarà mai il primario e gli indici non verranno mai propagati. Devi rimuovere il membro dal set di repliche, altrimenti è di sola lettura e rifiuterà la creazione dell'indice. Una volta creato, il membro lo manterrà felicemente. –

+0

Gli indici non verranno propagati in Primaria o in qualsiasi altro secondario. Le modifiche vengono estratte solo dall'oplog primario, da altri server. –

Problemi correlati