En aquest tema, explorarem els diferents tipus d'índexs que MongoDB ofereix per optimitzar les consultes i millorar el rendiment de la base de dades. Els índexs són estructures de dades especials que emmagatzemen una petita part de les dades de la col·lecció en un format fàcil de cercar. Això permet a MongoDB executar consultes de manera més eficient.
Índexs Bàsics
Índex Únic
Un índex únic assegura que els valors de l'índex siguin únics en tota la col·lecció. Això és útil per a camps que han de tenir valors únics, com ara identificadors d'usuari o adreces de correu electrònic.
Índex Compost
Un índex compost inclou més d'un camp. Això és útil per a consultes que filtren o ordenen per múltiples camps.
// Crear un índex compost en els camps "lastName" i "firstName" db.users.createIndex({ lastName: 1, firstName: 1 });
Índexs Especials
Índex de Text
Els índexs de text permeten la cerca de text complet en camps de cadena. Són útils per a aplicacions que necessiten funcionalitats de cerca avançada.
// Crear un índex de text en el camp "description" db.products.createIndex({ description: "text" });
Índex Geoespacial
Els índexs geoespacials permeten emmagatzemar i consultar dades de coordenades geogràfiques. Són útils per a aplicacions que treballen amb ubicacions, com ara mapes o serveis de lliurament.
// Crear un índex geoespacial en el camp "location" db.places.createIndex({ location: "2dsphere" });
Índex de Hash
Els índexs de hash distribueixen els valors de l'índex de manera uniforme. Són útils per a consultes d'igualtat en camps amb valors molt dispersos.
Índexs Multiclau
Els índexs multiclau permeten indexar camps que contenen matrius. MongoDB crea una entrada d'índex per a cada element de la matriu.
Índexs Parcials
Els índexs parcials permeten indexar només els documents que compleixen una condició específica. Això pot reduir la mida de l'índex i millorar el rendiment.
// Crear un índex parcial en el camp "status" només per a documents amb "status" igual a "active" db.orders.createIndex({ status: 1 }, { partialFilterExpression: { status: "active" } });
Índexs de Cobertura
Un índex de cobertura conté tots els camps necessaris per a una consulta, permetent a MongoDB satisfer la consulta només amb l'índex, sense accedir als documents.
// Crear un índex de cobertura en els camps "username" i "email" db.users.createIndex({ username: 1, email: 1 });
Exercicis Pràctics
Exercici 1: Crear un Índex Únic
Crea un índex únic en el camp username
de la col·lecció users
.
Exercici 2: Crear un Índex Compost
Crea un índex compost en els camps category
i price
de la col·lecció products
.
Exercici 3: Crear un Índex de Text
Crea un índex de text en el camp content
de la col·lecció posts
.
Exercici 4: Crear un Índex Geoespacial
Crea un índex geoespacial en el camp coordinates
de la col·lecció locations
.
Conclusió
Els índexs són una eina poderosa per millorar el rendiment de les consultes a MongoDB. Conèixer els diferents tipus d'índexs i com utilitzar-los adequadament pot marcar una gran diferència en l'eficiència de la teva base de dades. En el proper tema, explorarem el marc d'agregació de MongoDB, que permet realitzar operacions de processament de dades més complexes.
Curs de MongoDB
Mòdul 1: Introducció a MongoDB
Mòdul 2: Operacions CRUD a MongoDB
Mòdul 3: Modelatge de Dades a MongoDB
Mòdul 4: Indexació i Agregació
Mòdul 5: Funcions Avançades de MongoDB
Mòdul 6: Rendiment i Seguretat
- Optimització del Rendiment
- Còpia de Seguretat i Restauració
- Millors Pràctiques de Seguretat
- Monitorització i Alertes