Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configuración de particionado

El particionado es una forma de distribuir tus datos entre varias máquinas. MongoDB utiliza particionado para admitir implementaciones con grandes conjuntos de datos y operaciones de alto rendimiento. En esta guía, puedes aprender cómo configurar el particionado en tu aplicación Mongoid.

MongoDB utiliza claves de partición para distribuir los documentos de una colección entre las particiones. Una clave de partición es un campo indexado, o varios campos cubiertos por un índice compuesto, que determina la distribución de los documentos de la colección entre las particiones del clúster. En tu aplicación Mongoid, puedes declarar una clave de partición utilizando la macro shard_key cuando creas un modelo.

El siguiente ejemplo crea una clase Person con una clave de partición en el campo ssn:

class Person
include Mongoid::Document
field :ssn
shard_key ssn: 1
# The collection must also have an index that starts with the shard key.
index ssn: 1
end

Nota

Para fragmentar una colección, la colección debe tener un índice que comience con la clave de partición. El índice puede estar solo en la clave de partición o puede ser un índice compuesto donde la clave de partición es el prefijo. Puede utilizar la funcionalidad de gestión de índices de Mongoid para crear el índice. Para obtener más información sobre la gestión de índices con Mongoid, consulte la guía Gestión de índices.

Si un modelo declara una clave de partición, Mongoid espera que la colección particionada utilice la clave declarada para particionar. Cuando Mongoid recarga modelos, proporciona la clave de partición junto con el campo _id al comando find para mejorar el rendimiento de la query. Si la colección no está particionada con la clave de partición especificada, es posible que las consultas no devuelvan los resultados esperados.

Puedes declarar claves de fragmento utilizando sintaxis completa de MongoDB o empleando una sintaxis abreviada.

La sintaxis completa sigue el formato del método mongosh shardCollection() y permite especificar los siguientes tipos de claves de partición:

  • Teclas clasificadas por rango

  • Claves encriptadas

  • Claves compuestas

La sintaxis completa también permite especificar opciones de colección y partición.

El siguiente ejemplo crea cada uno de los tipos anteriores de clave de partición en el campo sson:

# Create a ranged shard key
shard_key ssn: 1
# Create a compound shard key
shard_key ssn: 1, country: 1
# Create a hashed shard key
shard_key ssn: :hashed
# Specify a shard key option
shard_key {ssn: :hashed}, unique: true

La sintaxis abreviada te permite declarar una clave de partición especificando solo el nombre del campo. Esta sintaxis solo admite claves de partición mixtas y por rango, y no permite especificar opciones de partición ni de colección.

El siguiente ejemplo crea una clave de partición compuesta y clasificada por rango:

# Create a ranged shard key
shard_key :ssn
# Create a compound shard key
shard_key :ssn, :country

Puede especificar una clave de partición en una asociación de belongs_to en lugar de un nombre de campo. Al hacerlo, Mongoid crea la clave de partición en la clave primaria de la colección asociada.

El siguiente ejemplo crea una clave de partición en la asociación belongs_to en un modelo Person. Debido a que la colección asociada country tiene una llave primaria llamada country_id, Mongoid realiza la partición por ese campo:

class Person
include Mongoid::Document
belongs_to :country
# Shards by country_id
shard_key country: 1
# The collection must have an index that starts with the shard key
index country: 1
end

Puedes especificar una clave de partición en un documento incrustado utilizando notación de puntos para delimitar los nombres de los campos. El siguiente ejemplo crea una clave de partición en el campo address.city:

class Person
include Mongoid::Document
field :address
shard_key "address.city"
end

Nota

Como el. carácter punto (.) se utiliza para delimitar campos integrados, Mongoid no admite la creación de claves de fragmento en campos cuyos nombres contienen un carácter punto.

Puedes fragmentar colecciones en tu base de datos siguiendo las claves de partición definidas en tus modelos de Mongoid ejecutando la tarea db:mongoid:shard_collections rake. Para asegurarte de que las colecciones contengan índices que empiecen con la clave de partición, primero puedes ejecutar la tarea Rake db:mongoid:create_indexes.

Ejecute los siguientes comandos rake para crear los índices y fragmentar las colecciones basadas en las claves de fragmentación de tu modelo:

rake db:mongoid:create_indexes
rake db:mongoid:shard_collections

Las tareas de rake de gestión de índices y particionado no se detienen cuando encuentran un error con una clase de modelo en particular. En cambio, registran el error y continúan procesando el siguiente modelo. Para garantizar que las tareas de rake no encuentren ningún error, revise la salida del logger de Mongoid configurado para su aplicación.

Nota

Al realizar operaciones relacionadas con el esquema en un clúster particionado, los nodos podrían contener datos de caché relacionados con la configuración local que están desactualizados. Para borrar los cachés, ejecute el comando flushRouterConfig en cada nodo mongos.

Para aprender más sobre el particionado con MongoDB, consulte la guía de particionado en el manual de MongoDB Server.

Para obtener más información sobre la macro shard_key discutida en esta guía, consulta la documentación API de shard_key.