La fragmentació (sharding) és una tècnica de partició de dades que permet distribuir les dades d'una col·lecció a través de múltiples màquines. Això és especialment útil per gestionar grans volums de dades i per millorar el rendiment i l'escalabilitat de la base de dades.
Conceptes Clau
- Què és la Fragmentació?
La fragmentació és el procés de dividir una col·lecció de dades en fragments més petits, anomenats "shards", que es distribueixen a través de diferents servidors. Cada fragment conté una part de les dades totals de la col·lecció.
- Components de la Fragmentació
- Shards: Cada shard és una instància de MongoDB que conté una part de les dades.
- Config Servers: Emmagatzemen la informació de configuració de la fragmentació.
- Query Routers (mongos): Són els responsables de dirigir les operacions de lectura i escriptura als shards corresponents.
- Clau de Fragmentació
La clau de fragmentació és un camp o conjunt de camps que es fa servir per determinar com es distribueixen les dades entre els diferents shards.
Avantatges de la Fragmentació
- Escalabilitat Horitzontal: Permet afegir més servidors per gestionar més dades.
- Millora del Rendiment: Les operacions es poden distribuir entre múltiples servidors, reduint la càrrega en cada un.
- Alta Disponibilitat: Si un shard falla, els altres poden continuar operant.
Configuració de la Fragmentació
- Configurar els Config Servers
Els config servers emmagatzemen la informació de configuració de la fragmentació. Normalment, es configuren en un conjunt de rèpliques per garantir la seva alta disponibilitat.
- Configurar els Shards
Cada shard és una instància de MongoDB que conté una part de les dades. També es recomana configurar-los com a conjunts de rèpliques.
- Configurar el Query Router (mongos)
El query router és l'entrada principal per a les aplicacions que interactuen amb la base de dades fragmentada.
- Afegir Shards al Clúster
Un cop els shards i els config servers estan en funcionament, es poden afegir els shards al clúster.
- Habilitar la Fragmentació per a una Col·lecció
Per habilitar la fragmentació per a una col·lecció, primer cal habilitar-la per a la base de dades i després per a la col·lecció específica.
Exemples Pràctics
Exemple 1: Configuració Bàsica de Fragmentació
// Habilitar la fragmentació per a la base de dades sh.enableSharding("ecommerceDB") // Habilitar la fragmentació per a la col·lecció de productes sh.shardCollection("ecommerceDB.products", { "productId": 1 })
Exemple 2: Afegir un Nou Shard
Exercicis Pràctics
Exercici 1: Configurar un Clúster Fragmentat
- Configura tres config servers.
- Configura dos shards, cadascun com un conjunt de rèpliques.
- Configura un query router.
- Habilita la fragmentació per a una base de dades anomenada
testDB
. - Habilita la fragmentació per a una col·lecció anomenada
users
amb la clau de fragmentacióuserId
.
Solució
# Configurar config servers mongod --configsvr --replSet configReplSet --dbpath /data/configdb1 --port 27019 mongod --configsvr --replSet configReplSet --dbpath /data/configdb2 --port 27020 mongod --configsvr --replSet configReplSet --dbpath /data/configdb3 --port 27021 # Configurar shards mongod --shardsvr --replSet shardReplSet1 --dbpath /data/shard1 --port 27018 mongod --shardsvr --replSet shardReplSet2 --dbpath /data/shard2 --port 27022 # Configurar query router mongos --configdb configReplSet/localhost:27019,localhost:27020,localhost:27021 # Afegir shards al clúster mongo --eval 'sh.addShard("shardReplSet1/localhost:27018")' mongo --eval 'sh.addShard("shardReplSet2/localhost:27022")' # Habilitar la fragmentació per a la base de dades mongo --eval 'sh.enableSharding("testDB")' # Habilitar la fragmentació per a la col·lecció mongo --eval 'sh.shardCollection("testDB.users", { "userId": 1 })'
Conclusió
La fragmentació és una tècnica poderosa per gestionar grans volums de dades i millorar el rendiment de la base de dades. En aquest mòdul, hem après els conceptes clau de la fragmentació, com configurar un clúster fragmentat i com habilitar la fragmentació per a col·leccions específiques. Amb aquests coneixements, estàs preparat per gestionar bases de dades de gran escala amb MongoDB.
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