Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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 Crea un esquema de cifrado.

Para obtener una lista de operadores del query admitidos y el comportamiento con campos cifrados, consulta Operadores del query admitidos.

MongoDB admite el uso de validación de esquema para aplicar el cifrado de campos específicos en una colección. Los clientes que usan Queryable Encryption automática se comportan de manera diferente dependiendo de la configuración de la conexión de la base de datos:

  • Si la conexión encryptedFieldsMap el objeto contiene una clave para la colección especificada, el cliente utiliza ese objeto para ejecutar el cifrado Queryable Encryption automático, en lugar de utilizar el esquema remoto. Como mínimo, las reglas locales deben cifrar todos los campos que el esquema remoto hace.

  • 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 es necesario query un campo cifrado, es posible que no sea necesario activar la query en ese campo. Todavía puedes recuperar el documento consultando otros campos que sean consultables o no estén encriptados.

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 query: Solo queries 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 esparsidad, precisión, factor de recorte y conflicto están destinados solo a usuarios avanzados. Los valores por defecto de estas opciones son adecuados para la mayoría de los casos de uso y sólo deben modificarse si su caso de uso lo requiere.

sparsity

Tipo de query: Solo queries 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 query: Solo queries 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.

Especificar precision y limitarlo 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 query: Solo queries 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 Queryable Encryption, MongoDB rastrea las ocurrencias de cada par campo/valor en una colección cifrada utilizando un contador interno. El factor de contención particiona este contador, similar a un arreglo. Esto minimiza los problemas al incrementar el contador al usar insert, update o findAndModify para agregar o modificar un campo cifrado con el mismo par campo/valor en sucesión cercana. contention = 0 crea un arreglo con un elemento en el índice 0. contention = 4 crea un arreglo con 5 elementos en los índices 0-4. MongoDB incrementa un elemento aleatorio del arreglo 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 más información sobre el factor de contención y sus implicancias criptográficas, consulte la "Sección 9: Directrices" en Articulo Técnico de Queryable Encryption de MongoDB.

Volver

Fundamentals

En esta página