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.
Tipos de consultas y comportamientos admitidos
Para obtener una lista de operadores de consulta admitidos y el comportamiento con campos cifrados,consulte Tipos y operadores de consulta admitidos.
Validación de esquema
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
encryptedFieldsMapEl 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
encryptedFieldsMapno 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.
Consideraciones al habilitar la consulta
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.
Configurar campos cifrados para una búsqueda y un almacenamiento óptimos
MongoDB proporciona los siguientes parámetros para facilitar la depuración y el ajuste del rendimiento:
min, maxTipo de consulta:
rangeTipo: Debe coincidir con el del
bsonTypecampo.Obligatorio si
bsonTypeesdecimalodouble. Opcional, pero muy recomendable si esint,longodate. El valor predeterminado esbsonType(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.
Parámetros de subcadena
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.
strMaxLengthTipo de consulta:
substringPreviewTipo: 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
fleDisableSubstringPreviewParameterLimitsconfigurando, pero ejecutar consultas de subcadenas en cadenas más largas tiene un impacto significativo en el rendimiento.
strMinQueryLengthTipo de
prefixPreviewconsulta:,,suffixPreviewsubstringPreviewTipo: Entero positivo.
Debe ser >= 1 para consultas
prefixPreviewosuffixPreview.Debe ser >= 2 para
substringPreviewconsultas.
La longitud mínima permitida de prefijo/sufijo/subcadena para la consulta. Intentar consultar una cadena más corta devuelve un error.
strMaxQueryLengthTipo de
prefixPreviewconsulta:,,suffixPreviewsubstringPreviewTipo: entero positivo - Debe ser >=1 para
prefixPreviewosuffixPreviewconsultas. - Debe 2ser -10 inclusive parasubstringPreviewconsultas.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.
Parámetros de consulta avanzados
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.
sparsityTipo de consulta:
rangeTipo: 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
precisionTipo de consulta:
rangeTipo: Entero.
Opcional. Solo se permite si
bsonTypeesdoubleodecimal. Si no se configura, MongoDB usa la misma precisión máxima quebsonType, ya seadoubleodecimal.Limita la cantidad de dígitos después del punto decimal que se tienen en cuenta al consultar un campo
doubleodecimal. Los dígitos adicionales se omiten, no se redondean. Por ejemplo, unprecisionde 1 trata10.18como10.1en las consultas. El valor cifrado se almacena como10.18.Especifique
precisiony 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.
trimFactorTipo de consulta:
rangeTipo: Entero.
Opcional. Se establece por defecto en 6.
El
trimFactorcontrola el rendimiento de inserciones y actualizaciones concurrentes. UntrimFactormás alto aumenta el rendimiento de inserciones y actualizaciones concurrentes, a costa de ralentizar algunas operaciones de lectura de rangos. UntrimFactormás bajo hace lo contrario.
contentionTipo de consulta:,,,,
equalityrangeprefixPreviewsuffixPreviewsubstringPreviewTipo: 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
insertusar,updateofindAndModifypara añadir o modificar un campo cifrado con el mismo par campo-valor en una sucesión cercana.contention = 0crea una matriz con un elemento en el 0 índice.contention = 4crea 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,
contentiontoma el valor predeterminado8, 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
contentionen 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.