Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Estime o impacto do armazenamento de Queryable Encryption

Criptografar um campo com Queryable Encryption e habilitar queries em campos criptografados aumentam o armazenamento exigido por uma collection. Estime esses aumentos antes de finalizar o esquema de criptografia, pois a alteração dos aumentos exige que você recrie a collection.

Você pode calcular essas estimativas para sua collection com a habilidade do agente mongodb-qe-size-estimation, disponível diretamente no repositório público, ou a partir dos plug-ins mongodb ou mongodb-atlas.

Para obter informações mais detalhadas sobre Queryable Encryption, consulte o whitepaper Queryable Encryption .

O MongoDB indexa cada campo criptografado consultável gerando tags, T, que armazena nas coleções de metadados criadas para cada coleção criptografada. O armazenamento cresce com o número de tags que cada valor produz. As fórmulas abaixo são para o número máximo de tags que um valor pode gerar.

  • Os campos não consultáveis ("não indexados") não geram tags, T=0.

  • Os campos indexados para queries de igualdade geram uma marcação, T=1.

  • Os campos indexados para consultas de prefixo ou sufixo geram uma marcação inicial e, em seguida, crescem linearmente com a diferença entre o comprimento máximo e mínimo da consulta, T = 1 + (strMaxQueryLength - strMinQueryLength + 1).

  • Os campos indexados para consultas de prefixo e sufixo aumentam linearmente com a diferença entre o comprimento máximo e mínimo da consulta de prefixo e sufixo, T = 1 + (strMaxQueryLength_prefix - strMinQueryLength_prefix + 1) + (strMaxQueryLength_suffix - strMinQueryLength_suffix + 1)

  • Os campos indexados para queries de substring geram a maioria das tags, usando a fórmula T = 1 + (strMaxQueryLength - strMinQueryLength + 1) * (2 * strMaxLength + 2 - strMaxQueryLength - strMinQueryLength) / 2.

A ativação da Queryable Encryption em sua coleção provavelmente terá um armazenamento em disco e um impacto na memória menores do que o calculado. Essas fórmulas protegem contra o pior caso.

Importante

Cada gravação de um valor de campo criptografado também grava dois documentos de metadados por tag, um no SEC e um no ECOC, portanto, escreva escalas de taxa de transferência com a contagem de tags da mesma maneira que o armazenamento.

Para consultas de prefixo e sufixo, somente a diferença entre o comprimento máximo e mínimo de consulta contribui para o crescimento da tag. Para queries de substring, todos os parâmetros contribuem e o comprimento pesquisável é o maior colaborador. A tabela a seguir compara quantas marcações um campo de string gera à medida que strMaxQueryLength aumenta, presumindo um strMaxLength de 50 e um strMinQueryLength de 2. As queries de substring impõem um máximo de strMaxQueryLength de 6, portanto, esta tabela compara apenas valores de 2 a 6, apesar das queries de prefixo e sufixo permitirem valores mais altos.

strMaxQueryLength
2
3
4
5
6

prefix ou suffix

2

3

4

5

6

substring

50

98

145

191

236

Devido a esse crescimento, evite ativar queries de substring em mais de um campo. Ative-os somente se as consultas de prefixo e sufixo não atenderem às suas necessidades e a coleção contiver menos de 50 milhões de documentos.

Certifique-se de que tem as seguintes informações:

  • O número de documentos na collection que contêm campos criptografados.

  • O comprimento médio de bytes dos valores de texto simples de cada campo criptografado.

  • O número de campos que você planeja criptografar e sua configuração de query criptografada.

1

Para cada campo criptografado, calcule T, o limite superior do número de tags que um único valor gera. Calcular um T por campo: um campo indexado para queries de prefixo e sufixo usa uma única fórmula que combina ambos os tipos de query.

  1. Para campos não indexados, T = 0.

  2. Para campos indexados para queries de igualdade, T = 1.

  3. Para campos indexados para queries prefix ou suffix:

    T = 1 + (strMaxQueryLength - strMinQueryLength + 1)
  4. Para campos indexados para queries prefix e suffix:

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

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

    Por exemplo, para um campo com strMinQueryLength 2, strMaxQueryLength 6 e strMaxLength 50:

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

Usando a contagem de tags da etapa anterior, calcule o armazenamento que um único documento exige para o campo}, em bytes. Use as seguintes fórmulas, em que v é o comprimento médio de bytes dos valores não criptografados do campo.

Para campos não indexados, use:

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

Para outros campos, use:

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

Verifique se os documentos permanecem dentro do limite de tamanho. Os valores criptografados e seus metadados contam para o limite de tamanho do documento BSON MB 16.

3

Soma o valor T de cada campo em T_Total. Em seguida, usando N, o número de documentos que contêm campos criptografados, calcule o seguinte, em 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)

Converta o armazenamento total em disco para GB dividindo por 1,000,000,000. Converta memória para GiB dividindo por 1,073,741,824.

4

Adicione o impacto estimado de disco e memória ao tamanho atual da sua collection e compare os totais com o armazenamento e a memória disponíveis em sua implantação.

  • Se seu sistema atender aos requisitos de armazenamento e memória, continue para Criar um esquema de criptografia.

  • Se sua implantação não atender aos requisitos, considere as seguintes opções:

    • substituir queries de substrings por queries de prefixo ou sufixo

    • reduzir strMaxLength em campos indexados para queries de substring

    • restringir o intervalo entre strMinQueryLength e strMaxQueryLength em campos indexados para queries de substring

Para obter detalhes sobre as opções de configuração de query em campos criptografados, consulte Referência de campo.

Para configurar campos criptografados e tipos de query, consulte Criar um esquema de criptografia.

Para saber como cada opção de configuração afeta a segurança e o desempenho, consulte Configurar campos criptografados para otimização de pesquisa e armazenamento.