Dos pasos para particionar una colección en MongoDB

shard_collectionEn el post Cómo configurar un Sharded Cluster en MongoDB vimos cómo configurar un MongoDB Sharded Cluster. El propósito del mismo, como ya sabemos, es escalar y que MongoDB reparta la carga de trabajo de manera proporcional entre todos los shards.

Hoy vamos a ver qué tenemos que hacer para particionar una colección y poder así repartir sus documentos entre todos nuestros shards.

Los trabajos relativos a sharded clusters siempre hemos de realizarlos conectados a un mongos:

MongoDB permite el particionado a nivel de colección. Esto quiere decir que en una misma base de datos podemos tener colecciones particionadas y colecciones no particionadas.

Primer paso

Antes de particionar una colección tenemos que activar el particionado en la base de datos a la que pertenece. Lo haremos así:

Las colecciones se particionan en base a un campo que conocemos como ‘shardkey’. Por lo tanto, es muy importante escogerlo bien. En este enlace podéis leer qué características debe cumplir una buena shardkey: Claves para seleccionar una shard key

Segundo paso

Tenemos este comando para particionar una colección (usamos el campo ‘username’ como shardkey):

Cuando particionamos una colección MongoDB crea un índice en la shardkey utilizada:

Si nuestra colección ya contenía datos se moverán automáticamente a los distintos shards.

Muy sencillo, ¿verdad?

Veamos a MongoDB en acción. Vamos a meter documentos en nuestra colección para comprobar que MongoDB los reparte entre los shards. Primero pararemos el balanceador, después haremos las inserts y comprobaremos que todos los documentos están en el mismo shard (por defecto será el shard 0). Seguiremos con la activación del balanceador y, por último, veremos que MongoDB ha distribuido los documentos como esperábamos.

Para no tener que insertar una gran cantidad de datos vamos a establecer el tamaño del chunk en 1MB:

Paramos el balanceador:

Insertamos los documentos:

Comprobamos que todos ellos están en el shard al que pertenece la colección:

Activamos el balanceador (automáticamente MongoDB comienza a mover los documentos):

Y, finalmente, comprobamos que MongoDB ha distribuido los documentos como esperamos.

Si te estás preguntando ¿cómo sé en qué shard está el dato que necesito?, no te preocupes, sólo tienes que pedírselo al mongos y te lo devolverá.

Hemos llegado al final del artículo, espero que todos los pasos hayan quedado claros y podáis sacar todo el rendimiento a vuestro MongoDB Sharded Cluster.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cinco + 16 =