Restricciones operativas de particionado
Operaciones no disponibles en entornos fragmentados
$where no permite referencias al objeto db desde la función $where. Esto es poco común en las colecciones no fragmentadas.
El comando geoSearch no se admite en entornos fragmentados.
En MongoDB 5.0 y versiones anteriores, no se pueden especificar colecciones fragmentadas en el from parámetro de las $lookup etapas.
Operaciones de modificación de un solo documento en colecciones fragmentadas
Para utilizar las operaciones updateOne() y deleteOne() en una colección particionada que especifique la opción multi: false o justOne:
Si solo apunta a un fragmento, puede usar una clave de fragmentación parcial en la especificación de query o,
Puede proporcionar la clave de fragmentación o el campo
_iden la especificación de la query.
Para usar findOneAndUpdate() con una colección particionada, su filtro de query debe incluir una condición de igualdad en la clave de partición para comparar la clave y el valor en cualquiera de estos formatos:
{ key: value } { key: { $eq: value } }
Índices únicos en colecciones fragmentadas
MongoDB no admite índices únicos entre fragmentos, excepto cuando el índice único contiene la clave de fragmentación completa como prefijo del índice. En estas situaciones, MongoDB aplicará la unicidad en toda la clave, no en un solo campo.
Particionado de tamaño de datos de la colección existente
Una colección existente solo puede fragmentarse si su tamaño no supera ciertos límites específicos. Estos límites pueden estimarse en función del tamaño promedio de todos los valores de la clave de partición, y del tamaño del fragmento configurado.
Importante
Estos límites solo se aplican a la operación inicial de particionado. Las colecciones particionadas pueden crecer a cualquier tamaño después de habilitar correctamente el particionamiento.
MongoDB distribuye los documentos en la colección de modo que cada fragmento esté lleno hasta la mitad al crearse. Utilice las siguientes fórmulas para calcular el tamaño máximo teórico de la colección.
maxSplits = 16777216 (bytes) / <average size of shard key values in bytes> maxCollectionSize (MB) = maxSplits * (chunkSize / 2)
Nota
El tamaño máximo de documento BSON es de 16MB o 16777216 bytes.
Todas las conversiones deben usar la escala base-2, por ejemplo, 1024 kilobytes = 1 megabytes.
Si maxCollectionSize es menor o casi igual a la colección objetivo, aumenta el tamaño del fragmento para asegurar el particionado inicial exitoso. Si hay dudas sobre si el resultado del cálculo está demasiado 'cerca' al tamaño de colección objetivo, probablemente sea mejor aumentar el tamaño del fragmento.
Después de un particionado inicial exitoso, puede reducir el tamaño del fragmento según sea necesario. Si más adelante reduces el tamaño del fragmento, puede llevar tiempo que todos los fragmentos se repartan al nuevo tamaño. Consulta Modificar el tamaño de los fragmentos en un clúster sharded para obtener instrucciones sobre cómo modificar el tamaño de los fragmentos.
Esta tabla ilustra los tamaños máximos aproximados de colección utilizando las fórmulas descritas anteriormente:
Tamaño promedio de los valores de la clave de partición | 512 bytes | 256 bytes | 128 bytes | 64 bytes |
|---|---|---|---|---|
Número máximo de divisiones | 32,768 | 65,536 | 131,072 | 262,144 |
Tamaño máximo de la colección (tamaño de fragmento de 64 MB) | 1 TB | 2 TB | 4 TB | 8 TB |
Tamaño máximo de la colección (tamaño de fragmento de 128 MB) | 2 TB | 4 TB | 8 TB | 16 TB |
Tamaño máximo de la colección (tamaño de fragmento de 256 MB) | 4 TB | 8 TB | 16 TB | 32 TB |