Docs Menu
Docs Home
/ /
Conciencia del centro de datos

Administrar zonas de fragmentos

En clústeres fragmentados, puede crear zonas que representen un grupo de fragmentos y asociar uno o más rangos de Valores declave de fragmento a esa zona. MongoDB enruta las lecturas y escrituras dentro de un rango de zona solo a los fragmentos dentro de esa zona.

Tip

Al definir las zonas y sus rangos antes de fragmentar una colección vacía o inexistente, la operación de recopilación de fragmentos crea fragmentos para los rangos de zona definidos, así como fragmentos adicionales para cubrir todo el rango de valores de clave de fragmento, y realiza una distribución inicial de fragmentos basada en los rangos de zona. Esta creación y distribución inicial de fragmentos permite una configuración más rápida de la fragmentación por zonas. Tras la distribución inicial, el balanceador gestiona la distribución de fragmentos en adelante.

Consulte Zonas predefinidas y rangos de zonas para una colección vacía o inexistente para ver un ejemplo.

Asocie una zona con un fragmento en particular usando el sh.addShardToZone()Método al conectarse a una instancia. Un mismo fragmento puede tener varias zonas, y varios fragmentos también pueden tener la misma mongos zona.

Ejemplo

El siguiente ejemplo agrega la zona NYC a dos fragmentos y las zonas SFO y NRT a un tercer fragmento:

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

Puede eliminar una zona de un fragmento en particular usando el sh.removeShardFromZone() método cuando esté conectado a una instancia, como en el siguiente ejemplo, que elimina mongos la NRT zona de un fragmento:

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

Para definir el rango de claves de fragmento de la zona, utilice el sh.updateZoneKeyRange() método al conectarse a una instancia. Cada rango mongos de claves de fragmento solo puede tener una zona asignada. No se pueden superponer los rangos definidos.

Ejemplo

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

  • 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 auxiliar de shell para eliminar un rango de una sh.removeRangeFromZone() zona.

Ejemplo

El siguiente ejemplo elimina 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.

Utilicesh.status()para listar las zonas asociadas a cada fragmento del clúster. También puede ver las zonas de un fragmento consultando la colecciónshardsen la base de datos config.

El siguiente ejemplo utiliza el método para devolver todos find() los NYC fragmentos con la zona.

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

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

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

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

Volver

Zones

En esta página