Cuatro pasos para dividir un chunk en MongoDB

chunk_split_steps

Este post es la segunda parte de ¿Qué es un chunk en MongoDB?

¿Qué secuencia de pasos sigue MongoDB para dividir un chunk?

  1. Todos los mongos guardan información del tamaño de todos los chunks de cada uno de los shards. Cuando un mongos detecta que un chunk está recibiendo muchas escrituras pregunta al shard donde este reside si necesita ser dividido.
  2. El shard le devuelve una lista con los puntos de división. Si está vacía quiere decir que el chunk no ha crecido aún lo suficiente y el mongos no hace nada. En caso contrario la lista contiene aquellos puntos por los que el chunk se podrá dividir.
  3. El mongos escogerá uno de ellos y actualizará la información en la base de datos del config server.
  4. Por último, el mongos actualizará su caché.

La colección changelog, de la configdb, guarda registro de todos los split que se realizan. En el siguiente ejemplo se ve cómo el chunk que contiene los documentos cuyo rango de la shardkey comprende desde el valor 0 al máximo se divide en dos, desde el 0 al 49999 y desde el 50000 al valor máximo.

Deshabilitar el split

El proceso de split lo puede iniciar cualquiera de los mongos, por tanto, si por alguna razón nos interesa que no se produzca debemos deshabilitarlo en cada uno de ellos. Actualmente no hay un comando para hacerlo en caliente, así que es necesario hacerlo en el momento de levantar el servicio del mongos, utilizando para ello la opción:

Como siempre, cualquier punto que no os haya quedado claro no dudéis en preguntármelo. Estoy aquí para intentar aclarar todo aquello que necesitéis.

Dejar un comentario

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

1 × uno =