Docs Menu
Docs Home
/ /

Campos cifrados y queries activadas

Al usar el cifrado consultable, se definen campos cifrados a nivel de colección mediante un esquema de cifrado. Cifrar un campo y habilitar consultas aumenta los requisitos de almacenamiento y afecta el rendimiento de las consultas. Puede configurar un campo cifrado para consultas de igualdad o de rango, pero no para ambas. Configure los campos para el tipo de consulta esperado.

Para obtener instrucciones sobre cómo crear un esquema de cifrado y configurar consultas, consulte Crear un esquema de cifrado.

Para obtener una lista de operadores de consulta admitidos y el comportamiento con campos cifrados,consulte Tipos y operadores de consulta admitidos.

El cifrado consultable requiere un esquema de cifrado del lado del servidor para aplicar el cifrado a campos específicos de una colección. Los clientes que utilizan el cifrado consultable automático se comportan de forma diferente según la configuración de la conexión a la base de datos:

  • Como mínimo, las reglas locales deben cifrar los mismos campos que el esquema remoto en el servidor.

  • Si la conexión encryptedFieldsMap El objeto contiene una clave para la colección especificada, el cliente utiliza ese objeto para realizar un cifrado consultable automático, en lugar de utilizar el esquema remoto.

  • Si el objeto de conexión encryptedFieldsMap no contiene una clave para la colección especificada, el cliente descarga el esquema remoto para la colección y lo utiliza en su lugar.

    Importante

    Comportamiento del esquema remoto

    Al utilizar un esquema remoto:

    • El cliente confía en que el servidor tiene un esquema válido

    • El cliente utiliza el esquema remoto únicamente para realizar el cifrado automático consultable. No aplica ninguna otra regla de validación especificada en el esquema.

Decida qué campos deben cifrarse o consultarse antes de crear su colección. Para cambiar los campos cifrados o consultables, es necesario reconstruir el esquema de cifrado de la colección y volver a crearla.

Si no necesita consultar un campo cifrado, es posible que no necesite habilitar la consulta en ese campo. Aun así, puede recuperar el documento consultando otros campos consultables o sin cifrar.

Por cada colección cifrada, MongoDB crea dos colecciones de metadatos, lo que aumenta el espacio de almacenamiento. MongoDB crea un índice para cada campo cifrado, lo que aumenta la duración de las operaciones de escritura en ese campo. Cuando una operación de escritura actualiza un campo indexado, MongoDB actualiza el índice correspondiente.

MongoDB proporciona los siguientes parámetros para facilitar la depuración y el ajuste del rendimiento:

min, max

Tipo de consulta: range

Tipo: Debe coincidir con el del bsonType campo.

Obligatorio si bsonType es decimal o double. Opcional, pero muy recomendable si es int, long o date. El valor predeterminado es bsonType (mínimo y máximo).

Especifique los valores mínimo y máximo (inclusive) de consulta para un campo siempre que sea posible, ya que los límites más pequeños mejoran la eficiencia de la consulta. Si se consultan valores fuera de estos límites, MongoDB devuelve un error.

Advertencia

Las consultas de prefijo, sufijo y subcadena están en vista previa pública

Las consultas de prefijo, sufijo y subcadena de cifrado consultable están disponibles en la vista previa pública de MongoDB 8.2. No habilite estos tipos de consulta en producción. La función de vista previa pública será incompatible con la función GA, y deberá eliminar cualquier colección que las habilite.

strMaxLength

Tipo de consulta: substringPreview

Tipo: entero 1de60 a, inclusive.

La longitud máxima permitida para un campo indexado por subcadena. Al intentar insertar una cadena más larga, se devuelve un error.

Importante

Puede anular el límite de caracteres fleDisableSubstringPreviewParameterLimits configurando, pero ejecutar consultas de subcadenas en cadenas más largas tiene un impacto significativo en el rendimiento.

strMinQueryLength

Tipo deprefixPreview consulta:,, suffixPreviewsubstringPreview

Tipo: Entero positivo.

  • Debe ser >= 1 para consultas prefixPreview o suffixPreview.

  • Debe ser >= 2 para substringPreview consultas.

La longitud mínima permitida de prefijo/sufijo/subcadena para la consulta. Intentar consultar una cadena más corta devuelve un error.

strMaxQueryLength

Tipo deprefixPreview consulta:,, suffixPreviewsubstringPreview

Tipo: entero positivo - Debe ser >=1 para prefixPreview o suffixPreview consultas. - Debe 2ser -10 inclusive para substringPreview consultas.

La longitud máxima permitida de prefijo, sufijo o subcadena para query. Intentar consultar una cadena más larga devuelve un error.

Importante

Esta configuración afecta considerablemente el rendimiento de las consultas. Limite la longitud máxima de las consultas siempre que sea posible.

caseSensitive

Tipo deprefixPreview consulta:,, suffixPreviewsubstringPreview

Tipo: booleano

Opcional. Se establece por defecto en true.

Si las queries de prefijo, sufijo o subcadena distinguen mayúsculas y minúsculas. Establecido en false para la coincidencia no sensible a mayúsculas.

diacriticSensitive

Tipo deprefixPreview consulta:,, suffixPreviewsubstringPreview

Tipo: booleano

Opcional. Se establece por defecto en true.

Si las queries de prefijo/sufijo/subcadena deben coincidir con marcas diacríticas. Configura en false para coincidencia insensible a diacríticos.

Advertencia

Estos parámetros son solo para usuarios avanzados. Los valores predeterminados son adecuados para la mayoría de los casos de uso y solo deben modificarse si su caso lo requiere.

sparsity

Tipo de consulta: range

Tipo: Entero del 1al8.

Opcional. Se establece por defecto en 2.

Afecta la exhaustividad con la que MongoDB indexa los valores de rango. Una baja dispersión (indexación densa) mejora el rendimiento de las consultas, pero almacena más documentos en las colecciones de metadatos cifrados por cada operación de inserción o actualización, lo que genera una mayor sobrecarga de almacenamiento. Una alta dispersión produce el efecto contrario.

Cambiado en la 8.2 versión: El valor máximo cambió de 4 a.8

precision

Tipo de consulta: range

Tipo: Entero.

Opcional. Solo se permite si bsonType es double o decimal. Si no se configura, MongoDB usa la misma precisión máxima que bsonType, ya sea double o decimal.

Limita la cantidad de dígitos después del punto decimal que se tienen en cuenta al consultar un campo double o decimal. Los dígitos adicionales se omiten, no se redondean. Por ejemplo, un precision de 1 trata 10.18 como 10.1 en las consultas. El valor cifrado se almacena como 10.18.

Especifique precision y limítelo cuando sea posible. Cada dígito aumenta la sobrecarga de almacenamiento y tiene un gran impacto en el rango de búsqueda y la generación de índices.

trimFactor

Tipo de consulta: range

Tipo: Entero.

Opcional. Se establece por defecto en 6.

El trimFactor controla el rendimiento de inserciones y actualizaciones concurrentes. Un trimFactor más alto aumenta el rendimiento de inserciones y actualizaciones concurrentes, a costa de ralentizar algunas operaciones de lectura de rangos. Un trimFactor más bajo hace lo contrario.

contention

Tipo de consulta:,,,, equalityrangeprefixPreviewsuffixPreviewsubstringPreview

Tipo: Entero.

Opcional. Se establece por defecto en 8.

Las operaciones de escritura simultáneas, como insertar el mismo par campo/valor en varios documentos en rápida sucesión, pueden causar contención: conflictos que retrasan las operaciones.

Con el cifrado consultable, MongoDB rastrea las ocurrencias de cada par campo-valor en una colección cifrada mediante un contador interno. El factor de contención particiona este contador, de forma similar a una matriz. Esto minimiza los problemas de incremento del contador al insert usar, update o findAndModify para añadir o modificar un campo cifrado con el mismo par campo-valor en una sucesión cercana. contention = 0 crea una matriz con un elemento en el 0 índice. contention = 4 crea una matriz con 5 elementos en los índices 04-. MongoDB incrementa un elemento aleatorio de la matriz durante la inserción.

Si no se configura, contention toma el valor predeterminado 8, lo que proporciona un alto rendimiento para la mayoría de las cargas de trabajo. Una mayor contención mejora el rendimiento de las operaciones de inserción y actualización en campos de baja cardinalidad, pero reduce el rendimiento de las búsquedas.

Opcionalmente, puede incluir contention en los campos consultables para cambiar el valor predeterminado de 8.

Para obtener información más detallada sobre el factor de contención y sus implicaciones criptográficas, consulte la 9 "Sección: Pautas" en el Documento técnico sobre cifrado consultable de MongoDB.

Volver

Fundamentals

En esta página