Docs Menu
Docs Home
/ /
particionado

split (comando de base de datos)

split

Divide una Unfragmento de un clúster fragmentado se divide en dos fragmentos. Los fragmentos gestionan y dividen los fragmentos según las estadísticas de tamaño que mantienen.

En circunstancias excepcionales, el comando permite a los split administradores crear divisiones manualmente. Consulte "Particiones en un clúster fragmentado" para obtener información sobre estas circunstancias y sobre los comandos del shell de MongoDB que split encapsulan.

El comando debe ejecutarse en split la admin base de datos.

Tip

En mongosh, este comando también se puede ejecutar a través de los métodos asistentes sh.splitAt() y sh.splitFind().

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.

El comando tiene la siguiente sintaxis:

db.adminCommand(
{
split: <database>.<collection>, <find|middle|bounds>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

split

string

El nombre de la colección donde se encuentra el fragmento. Especifique el espacio de nombres completo de la colección, incluido el nombre de la base de datos.

find

Documento

Una sentencia de consulta que especifica una coincidencia de igualdad en la clave del fragmento. La coincidencia selecciona el fragmento que contiene el documento especificado. Debe especificar solo uno de los siguientes: find, bounds o middle.

No puedes utilizar la opción find en una colección vacía.

bounds

arreglo

bounds Se aplica a fragmentos de colecciones particionadas mediante una clave de fragmento con hash. La matriz del parámetro debe constar de dos documentos que especifiquen los valores de clave de fragmento inferior y superior del fragmento. Los valores deben coincidir con los valores mínimo y máximo de un fragmento existente. Especifique solo uno de los siguientes:, find bounds middleo.

No puedes utilizar la opción bounds en una colección vacía.

middle

Documento

El documento que se utilizará como punto de división para crear dos fragmentos. requiere una de lassplit siguientesfind opciones:, bounds middleo.

Al usar find la opción bounds o, el split comando divide el fragmento según la mediana. Por lo tanto, no puede usar find la bounds opción ni para dividir un fragmento vacío, ya que no tiene mediana.

Para crear divisiones en fragmentos vacíos, utilice la middle opción con el comando split sh.splitAt() o utilice el comando.

Para crear una división de fragmentos, conéctese a una instancia y emita el siguiente comando a mongos la admin base de datos:

db.adminCommand( { split: <database>.<collection>,
find: <document> } )

O:

db.adminCommand( { split: <database>.<collection>,
middle: <document> } )

O:

db.adminCommand( { split: <database>.<collection>,
bounds: [ <lower>, <upper> ] } )

Para crear una división para una colección que utiliza una clave de fragmento con hash, utilice el bounds parámetro.No utilice el middle parámetro para este propósito.

Advertencia

Tenga cuidado al dividir datos en una colección fragmentada para crear nuevos fragmentos. Al fragmentar una colección con datos existentes, MongoDB crea fragmentos automáticamente para distribuirlos uniformemente. Para dividir los datos eficazmente en un clúster fragmentado, debe considerar la cantidad de documentos en un fragmento y el tamaño promedio de los documentos para crear un tamaño de fragmento uniforme. Cuando los fragmentos tienen tamaños irregulares, los fragmentos pueden tener el mismo número de fragmentos, pero tamaños de datos muy diferentes. Evite crear divisiones que resulten en una colección con fragmentos de diferentes tamaños.

Las siguientes secciones proporcionan ejemplos del split comando.

db.adminCommand( { split : "test.people", find : { _id : 99 } } )

El comando identifica el fragmento en split la people colección de la test base de datos que contiene los documentos que coinciden { _id : 99 } con. no requiere que exista una coincidencia para identificarsplit el fragmento apropiado. Luego, el comando lo divide en dos fragmentos de igual tamaño.

Nota

split crea dos fragmentos iguales por rango en lugar de tamaño, y no utiliza el punto seleccionado como límite para los nuevos fragmentos.

Para definir un punto de división arbitrario, utilice el siguiente formato:

db.adminCommand( { split : "test.people", middle : { _id : 99 } } )

El comando identifica el fragmento en split la people colección de la test base de datos que contendría los documentos que coinciden con la { _id : 99 } consulta. no requiere que exista una coincidencia para identificarsplit el fragmento apropiado. Luego, el comando lo divide en dos fragmentos, con el documento coincidente como el límite inferior de uno de los fragmentos divididos.

Este formulario se utiliza normalmente cuando se predividen datos en una colección.

Este ejemplo utiliza la clave de partición con hash userid en una people colección de una test base de datos. El siguiente comando utiliza un arreglo que contiene dos documentos de un solo campo para representar los valores mínimo y máximo de la clave de partición con hash para dividir el fragmento:

db.adminCommand( { split: "test.people",
bounds : [ { userid: Long("-5838464104018346494") },
{ userid: Long("-5557153028469814163") }
] } )

Nota

MongoDB utiliza 64el tipo NumberLong de bits para representar el valor hash.

Utilice para ver los límites existentes de las claves de sh.status() fragmento.

Si otro proceso, como un proceso balanceador, cambia los metadatos mientras se ejecuta, es posible que split vea metadata lock error un.

errmsg: "The collection's metadata lock is already taken."

Este mensaje indica que la división ha fallado sin efectos secundarios. Reintente el comando split.

Volver

estado de fragmentación

En esta página