Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Estimar el impacto del almacenamiento cifrado consultable

Encriptar un campo con cifrado consultable y habilitar las consultas en campos cifrados aumenta el espacio de almacenamiento que requiere una colección. Calcule este aumento antes de finalizar su esquema de cifrado, ya que modificarlo implica recrear la colección.

Puedes calcular estas estimaciones para tu colección con la habilidad del agente mongodb-qe-size-estimation, disponible directamente en el repositorio público, o desde los complementos mongodb o mongodb-atlas.

Para obtener información más detallada sobre el cifrado consultable,consulte el documento técnico sobre cifrado consultable.

MongoDB indexa cada campo cifrado consultable generando etiquetas, T,que almacena en las colecciones de metadatos que crea para cada colección cifrada. El almacenamiento aumenta con la cantidad de etiquetas que produce cada valor. Las fórmulas que se muestran a continuación indican la cantidad máxima de etiquetas que puede generar un valor.

  • Los campos no consultables ("no indexados") no generan etiquetas, T=0.

  • Los campos indexados para consultas de igualdad generan una etiqueta, T=1.

  • Los campos indexados para consultas de prefijo o sufijo generan una etiqueta inicial y luego crecen linealmente con la diferencia entre la longitud máxima y mínima de la consulta, T = 1 + (strMaxQueryLength - strMinQueryLength + 1).

  • Los campos indexados para consultas de prefijo y sufijo crecen linealmente con la diferencia entre la longitud máxima y mínima de la consulta de prefijo y sufijo, T = 1 + (strMaxQueryLength_prefix - strMinQueryLength_prefix + 1) + (strMaxQueryLength_suffix - strMinQueryLength_suffix + 1)

  • Los campos indexados para consultas de subcadenas generan la mayor cantidad de etiquetas, utilizando la fórmula T = 1 + (strMaxQueryLength - strMinQueryLength + 1) * (2 * strMaxLength + 2 - strMaxQueryLength - strMinQueryLength) / 2.

Habilitar el cifrado consultable en su colección probablemente tendrá un impacto menor en el almacenamiento en disco y la memoria del calculado. Estas fórmulas protegen contra el peor escenario.

Importante

Cada escritura de un valor de campo cifrado también escribe dos documentos de metadatos por etiqueta, uno en el ESC y otro en el ECOC, por lo que el rendimiento de escritura aumenta con la cantidad de etiquetas de la misma manera que el almacenamiento.

Para las consultas de prefijo y sufijo, solo la diferencia entre la longitud máxima y mínima de la consulta contribuye al crecimiento de las etiquetas. Para las consultas de subcadena, todos los parámetros contribuyen, y la longitud de búsqueda es el factor que más influye. La siguiente tabla compara cuántas etiquetas genera un campo de cadena a medida que strMaxQueryLength aumenta, suponiendo un strMaxLength de 50 y un strMinQueryLength de 2. Las consultas de subcadena imponen un máximo de strMaxQueryLength de 6, por lo que esta tabla solo compara los valores 2 a 6, a pesar de que las consultas de prefijo y sufijo permiten valores más altos.

strMaxQueryLength
2
3
4
5
6

prefix or suffix

2

3

4

5

6

substring

50

98

145

191

236

Debido a este crecimiento, evite habilitar las consultas de subcadenas en más de un campo. Habilítelas solo si las consultas de prefijo y sufijo no satisfacen sus necesidades y la colección contiene menos de 50 millones de documentos.

Asegúrese de tener la siguiente información:

  • El número de documentos de la colección que contienen campos cifrados.

  • La longitud media en bytes de los valores en texto plano de cada campo cifrado.

  • El número de campos que planea cifrar y su configuración de consulta cifrada.

1

Para cada campo cifrado, calcule T, el límite superior del número de etiquetas que genera un único valor. Calcule un T por campo: un campo indexado para consultas de prefijo y sufijo utiliza una única fórmula que combina ambos tipos de consulta.

  1. Para campos no indexados, T = 0.

  2. Para campos indexados para consultas de igualdad, T = 1.

  3. Para campos indexados para consultas prefix o suffix:

    T = 1 + (strMaxQueryLength - strMinQueryLength + 1)
  4. Para campos indexados tanto para consultas prefix como para consultas suffix:

    T = 1 + (strMaxQueryLength_prefix - strMinQueryLength_prefix + 1) +
    (strMaxQueryLength_suffix - strMinQueryLength_suffix + 1)
  5. Para campos indexados para consultas substring:

    T = 1 + (strMaxQueryLength - strMinQueryLength + 1) *
    (2 * strMaxLength + 2 - strMaxQueryLength -
    strMinQueryLength) / 2

    Por ejemplo, para un campo con strMinQueryLength 2, strMaxQueryLength 6 y strMaxLength 50:

    T = 1 + (6 - 2 + 1) * (2 * 50 + 2 - 6 - 2) / 2
    = 1 + 5 * 94 / 2
    = 236
2

Utilizando el recuento de etiquetas del paso anterior, calcule el espacio de almacenamiento que requiere un solo documento para el campo, en bytes. Utilice las siguientes fórmulas, donde v es la longitud promedio en bytes de los valores sin cifrar del campo.

Para campos no indexados, utilice:

document storage = 71 + ceil((v+6)/16) * 16

Para otros campos, utilice:

document storage = 1.2 * (255 * T + 122 + ceil((v + 6) / 16) * 16)

Verifique que los documentos se mantengan dentro del límite de tamaño. Los valores cifrados y sus metadatos se contabilizan para el límite de tamaño de documento BSON de 16 MB.

3

Suma el valor T de cada campo en T_Total. Luego, usando N, el número de documentos que contienen campos cifrados, calcula lo siguiente, en bytes:

index storage = 1.2 * (67 * T_Total + 640)
total disk storage = N * (index storage + sum of the document storage per field)
memory = N * (52 * T_Total + 17)

Convierta el almacenamiento total del disco a GB dividiendo por 1,000,000,000. Convierta la memoria a GiB dividiendo por 1,073,741,824.

4

Sume el impacto estimado en el disco y la memoria al tamaño actual de su colección y, a continuación, compare los totales con el almacenamiento y la memoria disponibles en su implementación.

  • Si su implementación cumple con los requisitos de almacenamiento y memoria, continúe con la creación de un esquema de cifrado.

  • Si su implementación no cumple con los requisitos, considere las siguientes opciones:

    • Reemplazar las consultas de subcadenas por consultas de prefijo o sufijo.

    • reducir strMaxLength en campos indexados para consultas de subcadenas

    • reducir el rango entre strMinQueryLength y strMaxQueryLength en los campos indexados para consultas de subcadenas

Para obtener más información sobre las opciones de configuración de consultas en campos cifrados, consulte la Referencia de campos.

Para configurar campos cifrados y tipos de consulta, consulte Crear un esquema de cifrado.

Para saber cómo afecta cada opción de configuración a la seguridad y al rendimiento, consulte Configurar campos cifrados para una búsqueda y un almacenamiento óptimos.