¿Qué es Sharding en MongoDB?
La fragmentación es un concepto en MongoDB, que divide grandes conjuntos de datos en pequeños conjuntos de datos en múltiples instancias de MongoDB.
A veces, los datos dentro de MongoDB serán tan grandes que las consultas contra conjuntos de datos tan grandes pueden causar una gran utilización de la CPU en el servidor. Para abordar esta situación, MongoDB tiene un concepto de fragmentación, que es básicamente la división de conjuntos de datos en múltiples instancias de MongoDB.
La colección que podría ser de gran tamaño en realidad se divide en varias colecciones o fragmentos, como se les llama. Lógicamente, todos los fragmentos funcionan como una sola colección.
Cómo implementar la fragmentación
Los fragmentos se implementan mediante el uso de clústeres que no son más que un grupo de instancias de MongoDB.
Los componentes de un Shard incluyen
- Un fragmento : esto es lo básico, y esto no es más que una instancia de MongoDB que contiene el subconjunto de los datos. En entornos de producción, todos los fragmentos deben formar parte de conjuntos de réplicas.
- Servidor de configuración : esta es una instancia de mongodb que contiene metadatos sobre el clúster, básicamente información sobre las diversas instancias de mongodb que contendrán los datos del fragmento.
- Un enrutador : esta es una instancia de mongodb que básicamente es responsable de redirigir los comandos enviados por el cliente a los servidores correctos.
Ejemplo de clúster de fragmentación paso a paso
Paso 1) Cree una base de datos separada para el servidor de configuración.
mkdir /data/configdb
Paso 2) Inicie la instancia de mongodb en modo de configuración. Supongamos que si tenemos un servidor llamado Servidor D que sería nuestro servidor de configuración, necesitaríamos ejecutar el siguiente comando para configurar el servidor como servidor de configuración.
mongod -configdb ServerD: 27019
Paso 3) Inicie la instancia de mongos especificando el servidor de configuración
mongos -configdb ServerD: 27019
Paso 4) Desde el shell de mongo conéctese a la instancia de mongo
mongo -host ServerD -port 27017
Paso 5) Si tiene el servidor A y el servidor B que deben agregarse al clúster, ejecute los siguientes comandos
sh.addShard("ServerA:27017")sh.addShard("ServerB:27017")
Paso 6) Habilite la fragmentación para la base de datos. Entonces, si necesitamos fragmentar la base de datos de Employeedb, emita el siguiente comando
sh.enableSharding(Employeedb)
Paso 7) Habilite la fragmentación para la colección. Entonces, si necesitamos fragmentar la colección de Empleados, emita el siguiente comando
Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})
Resumen:
- Como se explicó en el tutorial, Sharding es un concepto en MongoDB, que divide grandes conjuntos de datos en pequeños conjuntos de datos en múltiples instancias de MongoDB.