Todas las Noticias en Películas, Avances de Películas y Reseñas.

MongoDB Cuándo fragmentar – Hackanons

Sharding es un método de distribución o partición de datos en varias máquinas. Es útil cuando una sola máquina no puede manejar grandes cargas de trabajo modernas porque le permite escalar horizontalmente. El escalado horizontal, también conocido como escalado horizontal, agrega más computadoras para compartir el conjunto de datos y la carga. El escalado horizontal permite un escalado prácticamente ilimitado para manejar grandes conjuntos de datos y cargas de trabajo intensas. Ahora que tiene algunos conocimientos sobre fragmentación, veamos en MongoDB cuándo fragmentar. Antes de esto, veremos la arquitectura de fragmentación básica. Entonces, comencemos de inmediato.

¿No sabe cómo funciona el índice MongoDB? ¡No te preocupes, haz clic aquí para averiguarlo! ~~>

MongoDB Cuándo fragmentar

En esta sección, primero veremos la arquitectura de fragmentación básica antes de continuar con otras ramas de este tema.

Arquitectura fragmentada

En MongoDB, un clúster de fragmentación consta de:

  • Fragmentos
  • Mongos
  • Servidores de configuración

Entonces, podemos decir que un fragmento es como un conjunto de réplicas que contiene un subconjunto de los datos del clúster principal.

Mientras que Mongos actúa como un enrutador de consultas para aplicaciones cliente, procesa tanto lecturas como escrituras. Reenvía las solicitudes de los clientes a los fragmentos apropiados y combina los resultados de los fragmentos en una respuesta de cliente unificada. Los clientes se conectan a Mongos, no a fragmentos individuales.

¿Y qué pasa con los servidores de configuración entonces? Estas son las fuentes autorizadas de metadatos de fragmentación. Los metadatos de fragmentación reflejan el estado y la organización de los datos de fragmentación. Los metadatos incluyen la lista de colecciones divididas, información de enrutamiento, etc.

¡Aquí se explica cómo usar MongoDB con Python! ~~> ~~>

Ventajas de la fragmentación

Con la fragmentación, puede escalar su base de datos casi indefinidamente para manejar cargas más altas. Esto se logra aumentando el rendimiento de lectura/escritura, la capacidad de almacenamiento y la alta disponibilidad. Ahora, veamos cada ventaja una por una:

  • Mayor rendimiento de r/w: Sharding le brinda la capacidad de distribuir conjuntos de datos en numerosos fragmentos.
  • Mayor capacidad de almacenamiento: Aumentar el número de fragmentos también aumenta la capacidad total de almacenamiento.
  • Mayor disponibilidad: Dado que los datos se distribuyen, la base de datos en su conjunto permanece parcialmente funcional incluso si un fragmento deja de estar disponible y los fragmentos restantes lo leen y escriben.
  • Localización de datos: Con la fragmentación de zonas, puede crear fácilmente bases de datos distribuidas para admitir aplicaciones dispersas geográficamente, con políticas que imponen la disponibilidad de datos dentro de regiones específicas. Cada zona puede tener uno o más fragmentos.
Recomendado:  El mandaloriano | Descubre de dónde surgió la idea de la serie

Ahora que nos hemos dado cuenta de las diversas ventajas de la fragmentación. Veamos ahora cómo se distribuyen los datos.

Usar Agrupación en MongoDB — ¡¡Aquí se explica cómo hacerlo!! ~~> ~~>

Distribución de datos: MongoDB Shard

La llave de fragmento

MongoDB fragmentos en el nivel de colección. Usted selecciona qué colección(es) desea fragmentar. MongoDB usa la clave de fragmento para distribuir los documentos de una colección en fragmentos. A partir de entonces, divide los datos en partes/fragmentos utilizando la división de valores de fragmentos en rangos. A continuación, MongoDB intenta distribuir estos “fragmentos” de manera uniforme entre los fragmentos del clúster.

Las claves fragmentadas se basan en campos de cada documento. Los valores de estos campos deciden en qué fragmento se encuentra el documento, según los rangos de fragmentos y el conjunto de fragmentos. Estos datos se almacenan y mantienen en el conjunto de réplicas del servidor de configuración.

La clave de fragmento tiene un impacto directo en el rendimiento del clúster y, por lo tanto, debe elegirse con cuidado. Una clave de fragmento subóptima puede generar problemas de rendimiento o de escalado debido a la distribución desigual de los fragmentos. Puede cambiar su estrategia de distribución de datos en cualquier momento cambiando la clave de partición. Utilice la siguiente documentación para seleccionar la clave de fragmento que sea mejor para usted.

Un proceso en segundo plano llamado “equilibrador” migra automáticamente fragmentos entre fragmentos para garantizar que cada fragmento tenga siempre la misma cantidad de fragmentos.

¿Quieres saber la versión de MongoDB que tienes? ~~> ~~>

Estrategia típica de fragmentación

MongoDB admite dos estrategias de fragmentación para distribuir datos entre clústeres de fragmentación:

  • Fragmentación a distancia
  • Fragmentación hash

La fragmentación por rangos divide los datos en rangos en función de los valores de la clave de fragmento, por lo que otorga a cada parte/fragmento un valor basado en la clave de fragmento. Es más probable que un rango de claves de fragmentos cuyos valores estén “muy juntos” estén en el mismo fragmento. Esto permite operaciones dirigidas ya que un mongo puede reenviar operaciones solo a los fragmentos que contienen los datos requeridos.

Recomendado:  Un funcionario de la UE dice que TikTok necesita hacer más para estar preparado para las nuevas reglas digitales de Europa

Mientras, la fragmentación hash calcula un hash del valor del campo de clave de fragmento donde cada parte recibe un valor de rango basado en los valores de la clave de fragmento hash. Aunque un rango de claves de fragmentos puede estar “cerca” entre sí, es poco probable que sus valores hash estén en el mismo fragmento.

La distribución de datos basada en valores hash facilita una distribución de datos más uniforme, especialmente en conjuntos de datos donde la clave de fragmento cambia de forma monótona. Sin embargo, la fragmentación de hash no proporciona operaciones eficientes basadas en rangos.

Volcar MongoDB !! ¡Aquí hay más información! ~~> ~~>

Implementando fragmentos

El método más conveniente y rentable para implementar y administrar un clúster de fragmentos es usar MongoDB Atlas. Es una solución de base de datos como servicio que simplifica la implementación de clústeres de fragmentos.

Pero, también puedes hacerlo manualmente. Simplemente reemplace todo entre < y > con los valores apropiados para su configuración. Entonces, veamos un ejemplo en el que configuraremos un servidor de configuración y varios fragmentos, en conjuntos de réplicas de tres nodos, así como un servidor Mongos. Entonces, comencemos de inmediato.

Configurar el servidor de configuración

Tenga en cuenta que un conjunto de réplicas del servidor de configuración puede tener hasta 50 procesos Mongos. Pero, con algunas excepciones como: sin árbitros y sin miembros de prioridad cero. Tomemos un ejemplo:

mongod --configsvr --replSet <configReplSetName> --dbpath <path> --port 27019 --bind_ip localhost,<hostname(s)|ip address(es)>

# Now, connect to a member from the replica set
mongo --host --port 27019

# Now, run rs.initiate() on any one member
rs.initiate(
  {
    _id: "<configReplSetName>",
    configsvr: true,
    members: [
      { _id : 4, host : "<cfg4.example.net:27019>" },
      { _id : 5, host : "<cfg5.example.net:27019>" },
      { _id : 6, host : "<cfg6.example.net:27019>" }
    ]
  }
)

# Now, that the config server replica is set up, we will create the shards.

Configurar fragmentos

A estas alturas, sabemos que un fragmento es un conjunto de réplicas en sí mismo. Este proceso es similar a los servidores de configuración, pero usando el –shardsvr opción. Asegúrese de usar un nombre de conjunto de réplicas diferente para cada fragmento.

mongod --shardsvr --replSet <shardReplicaSetNamereplSetname>  --dbpath <path> --port 27018 --bind_ip <cluster hostname(s)|ip address(es)>

# Now, connect to one of the replica set members
mongo --host <hostname> --port 27018 

#Next, run rs.initiate() on any member of the replica set
rs.initiate(
  {
    _id: "<shardReplicaSetNamereplSetnamereplSetName>",
    members: [
      { _id : 4, host : "<shard-host4.example.net:2701827019>" },
      { _id : 5, host : "<shard-host5.example.net:2701827019>" },
      { _id : 6, host : "<shard-host6.example.net:2701827019>" }
    ]
  }
)

# Next, we need to start the Mongos

Inicio Mongos

Ahora que el servidor congif y el shard-server están configurados, continuemos con el proceso e iniciemos Mongos. Tenga en cuenta que tenemos que apuntar este mongos al servidor de configuración.

mongos --configdb 

<configReplSetName>/<cfg4.example.net:27019>,<cfg5.example.net:27019>,<cfg6.example.net:27019> --bind_ip localhost,<cluster hostname(s)|ip address(es)>

# Note, we shall start with more than one Mongos to avoid bottlenecks and also to make the case of high availability.

Configurar y habilitar fragmentación

# Connect to the Mongos:
mongo --host <hostname> --port 27017

# Now, add the shards to your clusters (have to do it for as many shards):
sh.addShard( "<shardReplicaSetName>/<shard-host4.example.net:27018>,<shard-host5.example.net:27018>,<shard-host6.example.net:27018>")

# Enable sharding:
sh.enableSharding("<database>")

# Now, we have to shard the collection, for which we can use hashed sharding:
sh.shardCollection("<database>.<collection>", { <shard key field> : "hashed" , ... } )

# If you want to use Ranged Sharding, you can do as below:
sh.shardCollection("<database>.<collection>", { <shard key field> : 1, ... } )

¡Eso es todo! Hemos fragmentado nuestro primer grupo.

Recomendado:  PlayStation 5 permitirá instalar muchos más juegos y eliminará una de sus características más molestas

Nota: Cualquier interacción con la aplicación a partir de ahora solo debe realizarse utilizando los enrutadores/instancias de Mongos.

TERMINANDO !! ~~> ~~>

En esta publicación, hemos visto qué es el sharding y también las diversas ventajas del sharding. A partir de entonces, también vimos qué y cuándo fragmentar e incluso vimos cómo implementar la fragmentación en MongoDB. Entonces, simplemente disfruta de esta publicación y recupera el aprendizaje tanto como puedas. En esa nota, hasta la próxima, ¡nos vemos! Adiós !! ~~> ~~>

:: ~~> ~~> :: ** :::::: ** :: )) ** :: ** (( ~~> ~~>