Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Campos cifrados y queries activadas

Cuando utilices Queryable Encryption, deberás definir campos cifrados a nivel de colección mediante un esquema de cifrado. El cifrado de un campo y la habilitación de consultas incrementan los requerimientos de almacenamiento y afectan el rendimiento de las consultas. Puede configurar un campo cifrado para consultas de igualdad o de rango, pero no para ambas opciones. Configura los campos para el tipo de query esperado.

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

Para una lista de operadores del query soportados y comportamiento con campos cifrados, consulte Tipos y operadores de queries compatibles.

Queryable Encryption requiere un esquema de cifrado del lado del servidor para aplicar el cifrado de campos específicos en una colección. Los clientes que utilizan automatic Queryable Encryption se comportan de manera diferente según la configuración de la conexión de 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

    Cuando se utiliza un esquema remoto:

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

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

Decida qué campos deben estar cifrados y/o ser consultables antes de crear su colección. Cambiar qué campos están cifrados o son consultables requiere volver a compilar el esquema de cifrado de la colección y recrear la colección.

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.

Para 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 relacionado.

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

min, max

Tipo de consulta: range

Tipo: debe coincidir con el bsonType del campo.

Obligatorio si bsonType es decimal o double. Opcional pero muy recomendable si es int, long o date. Por defecto, los valores mínimos y máximos de bsonType.

Especifica valores mínimos y máximos (inclusive) queryables para un campo cuando sea posible, ya que límites más pequeños mejoran la eficiencia de la query. Si se consultan valores fuera de estos límites, MongoDB devuelve un error.

Advertencia

Las consultas de prefijos, sufijos y subcadenas están en vista previa pública

Las búsquedas por prefijo, sufijo y subcadena de Queryable Encryption ya están disponibles en la vista previa pública en MongoDB 8.2. No habilite estos tipos de query en producción. La funcionalidad de la vista previa pública será incompatible con la funcionalidad GA, y deberá descartar cualquier colección que permita estas queries.

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

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

strMinQueryLength

Tipo de query: prefixPreview, suffixPreview, substringPreview

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 consultar. Intentar query una string más corta devuelve un error.

strMaxQueryLength

Tipo de query: prefixPreview, suffixPreview, substringPreview

Tipo: Entero positivo - Debe ser >=1 para prefixPreview o suffixPreview consultas. - Debe estar 2-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 tiene un fuerte impacto en el rendimiento de las queries. Limite la longitud máxima de la query siempre que sea posible.

caseSensitive

Tipo de query: prefixPreview, suffixPreview, substringPreview

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 de query: prefixPreview, suffixPreview, substringPreview

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 están destinados únicamente a usuarios avanzados. Los valores por defecto son adecuados para la mayoría de los casos de uso y solo deben modificarse si su caso de uso 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 queries, pero almacena más documentos en las colecciones de metadatos cifrados para cada operación de inserción o actualización, causando un mayor sobrecosto de almacenamiento. Una dispersión elevada hace lo contrario.

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

precision

Tipo de consulta: range

Tipo: Entero.

opcional. Permitido solo si bsonType es double o decimal. Si no se establece, MongoDB utiliza la misma precisión máxima que el bsonType, ya sea double o decimal.

Limita cuántos dígitos después del punto decimal se tienen en cuenta al consultar un campo double o decimal. Se descartan los dígitos adicionales, no se redondean. Por ejemplo, un precision de 1 trata 10.18 como 10.1 para queries. El valor cifrado aún 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 concurrentes, como insertar el mismo par de campo/valor en varios documentos en rápida sucesión, pueden provocar 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.

Cuando no se establece, contention se configura por defecto en 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 disminuye el rendimiento de búsqueda.

Opcionalmente, puedes incluir contention en los campos consultables para cambiar el valor de su valor por defecto 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