Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Administrar zonas de fragmentos

En los clústeres fragmentados, puedes crear zonas que representen un grupo de particiones y asociar uno o más rangos de valores de la clave de partición a esa zona. MongoDB enruta las lecturas y escrituras que caen dentro de un rango de zona solo a aquellas particiones dentro de la zona.

Tip

Al definir las zonas y los rangos de zonas antes de fragmentar una colección vacía o inexistente, la operación de "shard colletion" crea fragmentos para la zona definida rangos así como cualquier fragmento adicional para cubrir todo el rango de los valores de la clave de partición y realiza una distribución inicial de fragmentos basada en los rangos de zonas. Esta creación y distribución inicial de fragmentos permite una configuración más rápida del particionado zonificado. Después de la distribución inicial, el balanceador gestiona la distribución de fragmentos en adelante.

Consulta Predefinir zonas y rangos de zonas para una colección vacía o inexistente para ver un ejemplo.

Asocia una Zona con una determinada partición utilizando el sh.addShardToZone() método cuando se conecta a una instancia de mongos. Una sola partición puede tener varias zonas, y varias particiones también pueden tener la misma zona.

Ejemplo

El siguiente ejemplo agrega la zona NYC a dos particiones, y las zonas SFO y NRT a una tercera partición:

sh.addShardToZone("shard0000", "NYC")
sh.addShardToZone("shard0001", "NYC")
sh.addShardToZone("shard0002", "SFO")
sh.addShardToZone("shard0002", "NRT")

Puede remover una zona de una particular partición mediante el método sh.removeShardFromZone() cuando está conectado a una instancia mongos, como en el siguiente ejemplo, que remueve la zona NRT de una partición:

sh.removeShardFromZone("shard0002", "NRT")

Para definir el rango de claves de fragmentos de la zona, utilice el método sh.updateZoneKeyRange() cuando esté conectado a una instancia mongos. Cualquier rango de clave de partición solo puede tener una zona asignada. No puedes superponer rangos definidos.

Ejemplo

Dada una colección llamada users en la base de datos records, fragmentada por el campo zipcode. Se asignan las siguientes operaciones:

  • dos rangos de códigos postales en Manhattan y Brooklyn la zona NYC

  • un rango de códigos postales en San Francisco, la zona SFO

sh.updateZoneKeyRange("records.users", { zipcode: "10001" }, { zipcode: "10281" }, "NYC")
sh.updateZoneKeyRange("records.users", { zipcode: "11201" }, { zipcode: "11240" }, "NYC")
sh.updateZoneKeyRange("records.users", { zipcode: "94102" }, { zipcode: "94135" }, "SFO")

Nota

  • Los rangos de zona siempre incluyen el límite inferior y excluyen el límite superior.

  • Al descartar una colección, se borran sus rangos de zona/etiqueta asociados.

Utilice el método asistente de shell sh.removeRangeFromZone() para remover un rango de una zona.

Ejemplo

El siguiente ejemplo remueve la asignación de zona NYC para el rango de códigos postales dentro de Manhattan:

sh.removeRangeFromZone("records.user", {zipcode: "10001"}, {zipcode: "10281"})

Nota

Al descartar una colección, se borran sus rangos de zona/etiqueta asociados.

Usa sh.status() para listar las zonas asociadas a cada partición en el clúster. También puede ver las zonas de particiones consultando la colección shards en la base de datos config.

El siguiente ejemplo utiliza el método find() para devolver todas las particiones con la NYC zona.

use config
db.shards.find({ tags: "NYC" })

Puedes encontrar rangos de zona para todos los espacios de nombres en la colección tags de la base de datos config. La salida de sh.status() también muestra todos los rangos de zona.

El siguiente ejemplo utiliza el método find() para devolver cualquier rango asociado a la zona NYC.

use config
db.tags.find({ tag: "NYC" })

Volver

Zones

En esta página