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

Posso modificare l'indice esistente in MongoDB senza eliminarlo?

Non c'è modo di alterare un indice come descrivi, e se ci fosse penso che il risultato in termini di prestazioni sarebbe simile - come farebbe il database a utilizzare la metà dell'indice creato/modificato mentre questa operazione è in corso, ad esempio?

Consiglierei invece di utilizzare l'opzione in background per costruire l'indice su un singolo nodo, se questa è la tua configurazione:ci vorrà più tempo ma non interferirà tanto con il tuo normale funzionamento. Una volta terminato, puoi eliminare il vecchio indice a tuo piacimento.

Comunque , se hai un set di repliche (consigliato) dovresti essere consapevole che la creazione dell'indice viene sempre (attualmente) eseguita in primo piano sul secondario. Se vuoi evitare il carico sulle tue secondarie, dovresti seguire i passaggi qui descritti per eliminare un membro uno alla volta e creare l'indice richiesto prima di rientrare nel set:

http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

Aggiorna

Le build dell'indice in background su secondarie saranno possibili a partire dalla versione 2.6 (vedi le note sulla versione per i dettagli). Questo non verrà riportato alle versioni precedenti, quindi la nota sopra sarà valida per le versioni precedenti alla 2.6.

Infine, come nota generale, gli indici costruiti in background saranno generalmente più grandi e meno efficienti di quelli costruiti in primo piano, quindi la metodologia sopra avrà ancora i suoi usi.