Saltar al contenido

Diferencia entre fragmentación y replicación en MongoDB

Al fin luego de tanto batallar ya hallamos el resultado de esta obstáculo que muchos lectores de nuestro sitio han presentado. Si tienes alguna información que aportar no dudes en compartir tu información.

Solución:

A Juego de réplicas significa que tiene varias instancias de MongoDB, cada una de las cuales refleja todos los datos de cada una. Un conjunto de réplicas consta de un Maestro (también llamado “Principal”) y uno o más Esclavos (también conocidos como Secundarios). Cualquier esclavo puede realizar operaciones de lectura, por lo que puede aumentar el rendimiento de lectura agregando más esclavos al conjunto de réplicas (siempre que su aplicación cliente sea capaz de usar diferentes miembros del conjunto). Pero las operaciones de escritura siempre tienen lugar en el maestro del conjunto de réplicas y luego se propagan a los esclavos, por lo que las escrituras no serán más rápidas cuando agregue más esclavos.

Los conjuntos de réplicas también ofrecen tolerancia a fallas. Cuando uno de los miembros del conjunto de réplicas se cae, los demás toman el relevo. Cuando el maestro se cae, los esclavos elegirán un nuevo maestro. Por esa razón, para una implementación productiva, se sugiere usar siempre MongoDB como un conjunto de réplicas de al menos tres servidores, dos de ellos con datos (el tercero es un “árbitro” sin datos que se requiere para determinar un nuevo maestro cuando uno de los esclavos cae).

A Clúster fragmentado significa que cada fragmento del clúster (que también puede ser un conjunto de réplicas) se encarga de una parte de los datos. Cada solicitud, tanto de lectura como de escritura, es atendida por el clúster donde residen los datos. Esto significa que se puede aumentar el rendimiento de lectura y escritura al agregar más fragmentos a un clúster. Qué documento reside en qué fragmento lo determina el casco key de cada colección. Debe elegirse de manera que los datos se puedan distribuir uniformemente en todos los clústeres y que quede claro para las consultas más comunes donde el fragmentokey reside (ejemplo: cuando consulta con frecuencia por user_name, tu fragmento-key debe incluir el campo user_name por lo que cada consulta se puede delegar solo al fragmento que tiene ese documento).

El inconveniente es que sufre la tolerancia a fallos. Cuando un fragmento del clúster deja de funcionar, no se puede acceder a ningún dato que contenga. Por esa razón, cada miembro del clúster también debe ser un conjunto de réplicas. Esto no es obligatorio. Cuando no le importa la alta disponibilidad, un fragmento también puede ser una única instancia de mongod sin replicación. Pero para uso en producción, siempre debe usar la replicación.

Entonces, ¿qué significa eso para tu ejemplo?

                            Sharded Cluster             
             /                    |                    
      Shard A                  Shard B                  Shard C
        /                       /                       / 
+-------+ +---------+    +-------+ +---------+    +-------+ +---------+
|Primary| |Secondary|    |Primary| |Secondary|    |Primary| |Secondary|
|  25GB |=| 25GB    |    | 25 GB |=| 25 GB   |    | 25GB  |=| 25GB    |   
+-------+ +---------+    +-------+ +---------+    +-------+ +---------+

Cuando desee dividir sus datos de 75 GB en 3 fragmentos de 25 GB cada uno, necesita al menos 6 servidores de bases de datos organizados en tres conjuntos de réplicas. Cada conjunto de réplicas consta de dos servidores que tienen los mismos 25 GB de datos.

También necesita servidores para los árbitros de los tres conjuntos de réplicas, así como el enrutador mongos y el servidor de configuración para el clúster. Los árbitros son muy livianos y solo se necesitan cuando un miembro del conjunto de réplicas deja de funcionar, por lo que generalmente pueden compartir el mismo hardware con otra cosa. Pero el enrutador y el servidor de configuración de Mongos deben ser redundantes y estar en sus propios servidores.

  • fragmentación divide el conjunto de datos en partes discretas.
  • Replicación duplica el conjunto de datos.

Estas dos cosas pueden acumularse ya que son diferentes. El uso de ambos significa que dividirá su conjunto de datos en varios grupos de réplicas. Dicho de otra manera, replicas fragmentos; un conjunto de datos sin fragmentos es un solo ‘fragmento’.

Un clúster de Mongo con tres fragmentos y 3 réplicas tendría 9 nodos.

  • 3 conjuntos de réplicas de 3 nodos.
  • Cada conjunto de réplicas contiene un solo fragmento.

Por fragmentación, divides tu colección en varias partes.
replicando su base de datos significa que hace espejos de su conjunto de datos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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