Docs Menu
Docs Home
/ /

shardCollection (comando de base de datos)

shardCollection

Fragmentos: una colección para distribuir sus documentos entre fragmentos. shardCollection El comando debe ejecutarse contra la admin base de datos.

Tip

mongoshEn, este comando también se puede ejecutar a través del método sh.shardCollection() auxiliar.

Los métodos asistente son convenientes para usuarios de mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

Para ejecutar,shardCollection db.runCommand( { <command> } ) utilice el método.

El comando tiene la siguiente forma:

db.adminCommand(
{
shardCollection: "<database>.<collection>",
key: { <field1>: <1|"hashed">, ... },
unique: <boolean>,
numInitialChunks: <integer>,
presplitHashedZones: <boolean>,
collation: { locale: "simple" },
timeseries: <object>
}
)

Nota

Cambiado en la versión 6.0.

A partir de MongoDB,6.0 para fragmentar una colección no es necesario ejecutar primero el enableSharding comando para configurar la base de datos.

El comando toma los siguientes campos:

Campo
Tipo
Descripción

shardCollection

string

El espacio de nombres de la colección que se va a fragmentar en el <database>.<collection> formato.

key

Documento

El documento que especifica el campo o los campos que se utilizarán como clave de fragmento.

{ <field1>: <1|"hashed">, ... }

Establezca los valores del campo en:

La clave defragmento debe ser compatible con un índice. A menos que la colección esté vacía, el índice debe existir antes del shardCollection comando. Si la colección está vacía, MongoDB crea el índice antes de fragmentarla si el índice compatible con la clave de fragmento aún no existe.

Véase también Índices de claves de fragmentos

unique

booleano

Especifique true para garantizar que el índice subyacente aplique una restricción única. El valor predeterminado es false.

No se puede especificar true cuando se utilizan claves de fragmentos con hash.

numInitialChunks

entero

Especifica el número inicial de fragmentos que se crearán en todos los fragmentos del clúster al fragmentar una colección vacía con una clave de fragmento con hash. MongoDB creará y equilibrará los fragmentos en todo el clúster. El numInitialChunks valor debe resultar en menos de 8192 por fragmento.

Si la colección no está vacía o la clave del fragmento no contiene un campo hash, la operación devuelve un error.

collation

Documento

Opcional. Si la colección especificada en shardCollection tiene una intercalación predeterminada,debe incluir un documento de intercalación con;{ locale : "simple" } de lo contrario, el shardCollection comando fallará. Al menos uno de los índices cuyos campos admitan el patrón de clave de fragmento debe tener la intercalación simple.

booleano

Opcional. Especifique true para crear y distribuir fragmentos iniciales para una colección vacía o inexistente, según las zonas y los rangos de zonas definidos para la colección. Solo para fragmentación con hash.

shardCollection con presplitHashedZones: true devuelve un error si alguna de las siguientes condiciones es verdadera:

Objeto

Opcional. Especifique esta opción para crear una nueva colección de series temporales fragmentadas.

Para fragmentar una colección de series de tiempo existente, omita este parámetro.

Cuando la colección especificada en shardCollection es una colección de series de tiempo y no se especifica la opción timeseries, MongoDB utiliza los valores que definen la colección de series de tiempo existente para completar el campo timeseries.

Para conocer la sintaxis detallada, consulte Opciones de series de tiempo.

Nuevo en la versión 5.1.

Nuevo en la versión 5.1.

Para crear una nueva colección de series temporales fragmentada, especifique la opción de series shardCollection temporales en.

La opción de serie temporal toma los siguientes campos:

Campo
Tipo
Descripción

timeField

string

Requerido. El nombre del campo que contiene la fecha en cada documento de serie de tiempo. Los documentos en una colección de series de tiempo deben tener una fecha BSON válida como valor para el timeField.

metaField

string

Opcional. El nombre del campo que contiene los metadatos en cada documento de serie de tiempo. Los metadatos del campo especificado deben ser datos que se utilicen para etiquetar una serie única de documentos. Los metadatos difícilmente cambien. El nombre del campo especificado no puede ser _id ni el mismo que el timeseries.timeField. El campo puede ser de cualquier tipo de dato.

Aunque el campo metaField es opcional, el uso de metadatos puede mejorar la optimización de query. Por ejemplo, MongoDB crea un índice compuesto automáticamente en los campos metaField y timeField para las nuevas colecciones. Si no proporcionas un valor para este campo, los datos se agrupan únicamente en función del tiempo.

granularity

string

Opcional. Los valores posibles son:

  • "seconds"

  • "minutes"

  • "hours"

De forma predeterminada, MongoDB establece granularity en "seconds" para la ingestión de alta frecuencia.

Configure manualmente el parámetro granularity para mejorar el rendimiento optimizando el almacenamiento interno de los datos de la colección de series temporales. Para seleccionar un valor para granularity, elija la coincidencia más cercana al intervalo de tiempo entre mediciones entrantes consecutivas.

Si especifica timeseries.metaField, considere el intervalo de tiempo entre mediciones entrantes consecutivas que tengan el mismo valor único en el campo metaField. Las mediciones suelen tener el mismo valor único en el campo metaField si provienen de la misma fuente.

Si no especificas timeseries.metaField, considera el intervalo de tiempo entre todas las mediciones que se insertan en la colección.

Si configura el parámetro granularity, no podrá configurar los parámetros bucketMaxSpanSeconds y bucketRoundingSeconds.

Si bien puede cambiar su clave de fragmento más adelante, es importante considerar cuidadosamente su elección de clave de fragmento para evitar problemas de escalabilidad y rendimiento.

Al fragmentar colecciones de series temporales, solo puede especificar los siguientes campos en la clave de fragmentación:

  • El metaField

  • Subcampos de metaField

  • El timeField

Puede especificar combinaciones de estos campos en la clave de fragmento. No se permiten otros campos, incluido _id, en el patrón de la clave de fragmento.

Cuando se especifica la clave del fragmento:

Tip

Evite especificar solo timeField como clave de fragmento. Dado que timeField aumenta de forma monótona, es posible que todas las escrituras aparezcan en un solo fragmento dentro del clúster. Idealmente, los datos se distribuyen uniformemente entre los fragmentos.

Para saber cómo elegir mejor una clave de fragmento, consulte:

Las claves de fragmento con hash utilizan un índice con hash o un índice con hash compuesto como clave de fragmento.

Utilice el formato field: "hashed" para especificar un campo de clave de fragmento con hash.

Nota

Si se están realizando migraciones de fragmentos mientras se crea una colección de claves de fragmentos con hash, la distribución inicial de fragmentos puede ser desigual hasta que el equilibrador equilibre automáticamente la colección.

La operación de recopilación de fragmentos (esshardCollection decir, el comando y el asistente) puede crear y distribuir fragmentos iniciales para una colección vacía o inexistente sh.shardCollection() si se han definido zonas y rangos de zonas para la colección. La 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 de forma habitual.

Consulte "Predefinir zonas y rangos de zonas para una colección vacía o inexistente" para ver un ejemplo. Si se fragmenta una colección mediante una clave de fragmento con rango o hash de un solo campo, la numInitialChunks opción no tiene efecto si se han definido zonas y rangos de zonas para la colección vacía.

Para fragmentar una colección utilizando un índice hash compuesto, consulte Fragmentación de zonas e índices hash compuestos.

MongoDB admite la fragmentación de colecciones en índices con hash compuesto. Al fragmentar una colección vacía o inexistente mediante una clave de fragmento con hash compuesto, se aplican requisitos adicionales para que MongoDB pueda crear y distribuir fragmentos iniciales.

La numInitialChunks opción no tiene efecto si se han definido zonas y rangos de zonas para la colección vacía y presplitHashedZones falsees.

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

Si se especifica unique: true:

  • Si la colección está vacía, shardCollection crea el índice único en la clave de partición si dicho índice no existe ya.

  • Si la colección no está vacía, debe crear el índice antes de usar shardCollection.

Aunque se puede tener un índice compuesto único donde la clave de fragmentación es un prefijo, si se utiliza el parámetro unique, la colección debe tener un índice único que esté en la clave de partición.

Véase también Colección fragmentada e índices únicos

Si la colección tiene una intercalación predeterminada, el comando debe incluir shardCollection un collation parámetro con el { locale: "simple" } valor. Para colecciones no vacías con una intercalación predeterminada, debe tener al menos un índice con la intercalación simple cuyos campos admitan el patrón de clave de fragmento.

No es necesario especificar la opción collation para colecciones sin intercalación. Si se especifica la opción de intercalación para una colección sin intercalación, no tendrá efecto.

mongos utiliza para "majority" la preocupación de escritura del comando y shardCollection su sh.shardCollection() ayudante.

La siguiente operación habilita la fragmentación de la people colección en la records base de datos y utiliza el zipcode campo como clave de fragmentación:

db.adminCommand( { shardCollection: "records.people", key: { zipcode: 1 } } )

Volver

establecerPermitirMigraciones

En esta página