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 obtener una lista de operadores de consulta admitidos y el comportamiento con campos cifrados,consulte Operadores de consulta admitidos.

MongoDB admite la validación de esquemas para aplicar el cifrado de 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:

  • Si la conexión encryptedFieldsMap Si el objeto contiene una clave para la colección especificada, el cliente utiliza dicho objeto para realizar el cifrado consultable automático, en lugar de usar el esquema remoto. Como mínimo, las reglas locales deben cifrar todos los campos que cifra el esquema remoto.

  • Si el objeto connection encryptedFieldsMap no contiene una clave para la colección especificada, el cliente descarga el esquema remoto del servidor 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.

Puede hacer que un campo cifrado sea consultable. Para cambiar qué campos están cifrados o pueden ser consultados, reconstruya el esquema de cifrado de la colección y vuelva a crear 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: Solo consultas de rango.

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.

Importante

La Los parámetros de escasez, precisión, factor de recorte y contención son solo para usuarios avanzados. Los valores predeterminados de estas opciones son adecuados para la mayoría de los casos de uso y solo deben modificarse si su caso lo requiere.

sparsity

Tipo de consulta: Solo consultas de rango.

Tipo: Entero del 1al4.

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.

precision

Tipo de consulta: Solo consultas de rango.

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: Solo consultas de rango.

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: consultas de igualdad y de rango.

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