MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

I pericoli della creazione di indici su MongoDB

Gli indici sono una parte fondamentale di qualsiasi operazione di database. La definizione degli indici giusti può fare un'enorme differenza per le prestazioni dei server di database. Tuttavia, la creazione di indici in MongoDB presenta diverse insidie ​​di cui devi essere a conoscenza per le tue operazioni quotidiane. MongoDB ad alto livello supporta tre tecniche per creare indici sulle tue raccolte.

1. Creazione dell'indice in primo piano

Quando crei un indice in primo piano, questo blocca tutte le altre operazioni sul database – su una grande collezione, questo può durare diverse ore. Ciò implica che il database è inattivo per la durata della compilazione dell'indice. Dato che questa è la modalità predefinita per la creazione di indici, non sorprende che molti sviluppatori si sparano ai piedi attivando build di indici accidentali. Non c'è davvero alcun buon motivo per attivare una build di indice in primo piano su un server di produzione (a meno che tu non sappia che la raccolta ha una piccola quantità di dati).

2. Creazione dell'indice in background

Come suggerisce il nome, il processo di indicizzazione in background crea l'indice in background senza influire sulla disponibilità del server del database. Tuttavia, è ancora un'operazione ad alta intensità di risorse e dovresti aspettarti di vedere un degrado delle prestazioni. Inoltre, poiché sta accadendo in background, la compilazione può richiedere molto più tempo rispetto agli indici in primo piano. Nelle versioni precedenti di MongoDB (<2.6) quando si creava un indice in background sul primario di un set di repliche, veniva eseguito come build "in primo piano" sui server secondari, fortunatamente non è più così:è un build in background su tutti i nodi. Se una build di un indice in background viene interrotta, riprenderà come build di un indice in primo piano al riavvio del server.

3. Costruzione dell'indice mobile

Il processo di compilazione dell'indice in sequenza crea l'indice su un solo nodo alla volta. Funziona più o meno così:

  1. Ruota un nodo secondario fuori dal set di repliche (puoi farlo cambiando le porte o riavviando in modalità standalone).
  2. Costruisci l'indice su questo nodo in primo piano. Una volta creato l'indice, ruota nuovamente il nodo nel set di repliche.
  3. Una volta che il nodo ha raggiunto le modifiche, passa al nodo successivo. Se il nodo successivo è il primario, dovrai eseguire un rs.stepDown() per trasformarlo in un secondario.
  4. Risciacqua e ripeti.

Maggiori dettagli sul processo di creazione dell'indice sono nella documentazione di MongoDB.

Utilizzando build di indici a rotazione puoi creare un indice senza alcun impatto significativo sulle prestazioni per la tua applicazione. Tuttavia è coinvolto il failover, quindi la tua applicazione dovrebbe essere in grado di gestirlo (cosa che comunque deve fare).

Puoi creare un indice a rotazione se non hai un set di repliche? Sfortunatamente per le istanze autonome, l'unica opzione è una "Build dell'indice in background".

La build di Rolling index è il nostro approccio preferito alla creazione di indici su ScaleGrid. Forniamo anche un'interfaccia utente e ti semplifichiamo l'avvio dell'intero processo dalla nostra interfaccia utente. Il nostro back-end eseguirà tutta l'orchestrazione necessaria per la compilazione dell'indice completo:attiverà una build dell'indice server per server. Devi solo eseguire la configurazione con noi e quindi puntare e fare clic!

Come sempre, se hai altre domande puoi contattarci all'indirizzo [email protected].