Tag Aware Sharding

tag_aware_sharding

Ya sabemos que cuando particionamos una colección, MongoDB se encarga de distribuir sus datos entre todos los shards de nuestro cluster. Para ello, se ayuda de los chunks, del split y del balanceado. Para aquellos que queráis refrescar esto podéis leer el post anterior MongoDB Pre-splitting.

Esta es la forma que tiene MongoDB de permitir que nuestras aplicaciones escalen, el llamado escalado horizontal.

Hay ocasiones en las que necesitamos almacenar ciertos datos en un shard determinado, por ejemplo, en en caso de que nuestros shards estén geográficamente dispersos y necesitemos que los datos relativos a los usuarios de un país estén en el shard más cercano.

Pues bien, sólo con dar un nombre o etiqueta a nuestros shards, y asignar esa etiqueta a los rangos que nos interese que se almacenen en el shard de la misma etiqueta lo habremos conseguido.

Supongamos que tenemos un cluster con tres shards, llamados s0, s1 y s2. Con los siguientes comandos vamos a asignarles una etiqueta a cada uno de ellos:

Nuestra siguiente acción, como he comentado antes, será etiquetar nuestros rangos con la etiqueta del shard donde queremos que residan, vamos a ello:

Podemos comprobarlo consultando la colección “tags” de la base de datos “config”:

En este momento ya tenemos todo el trabajo hecho. Cuando insertemos datos en nuestra colección y se vayan creando los chunks comprobaremos que se distribuirán tal y como hemos configurado anteriormente.

Echemos un vistazo a nuestro cluster:

Sólo nos resta insertar algunos documentos y comprobar que se envían al shard que le corresponde:

Nos conectamos al primario del shard s0:

Y comprobamos qué documentos almacena:

Hacemos igual con el shard s1:

Y, por último, con el shard s2:

Bien, hemos llegado al final de nuestro post y comprobado que el concepto de Tag Aware Sharding es más sencillo de lo que creíamos, ¿verdad? De todas formas, cualquier duda, error, o punto que no haya quedado claro, no dudéis en dejarlo en los comentarios.

Dejar un comentario

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

4 − 3 =