Campos criptografados e queries habilitadas
Nesta página
Ao usar a Queryable Encryption, você define campos criptografados no nível da coleção usando um esquema de criptografia. Criptografar um campo e ativar queries aumenta os requisitos de armazenamento e afeta o desempenho da query. Você pode configurar um campo criptografado para queries de igualdade ou de intervalo, mas não para ambas. Configure campos para o tipo de query esperado.
Para obter instruções sobre como criar um esquema de criptografia e configurar a query, consulte Criar um esquema de criptografia.
Tipos de query e comportamento suportados
Para obter uma lista de operadores de query compatíveis e comportamento com campos criptografados, consulte Operadores de query compatíveis.
Validação de esquema de cliente e servidor
O MongoDB suporta o uso de validação de esquema para impor a criptografia de campos específicos em uma coleção. Os clientes que usam a Queryable Encryption se comportam de maneira diferente, dependendo da configuração da conexão com o banco de dados de dados:
Se o objeto de conexão
encryptedFieldsMap
contiver uma chave para a coleção especificada, o cliente usará esse objeto para executar automaticamente a Queryable Encryption, em vez de usar o esquema remoto. No mínimo, as regras locais devem criptografar todos os campos que o esquema remoto criptografa.Se o objeto de conexão
encryptedFieldsMap
não contiver uma chave para a coleção especificada, o cliente baixará o esquema remoto do lado do servidor para a coleção e o usará.Importante
Comportamento do esquema remoto
Ao usar um esquema remoto:
O cliente confia que o servidor tem um esquema válido
O cliente usa o esquema remoto apenas para executar uma Queryable Encryption automática. O cliente não força nenhuma outra regra de validação especificada no esquema.
Considerações ao ativar a query
Você pode tornar um campo criptografado consultável. Para alterar quais campos são criptografados ou consultáveis, reconstrua o esquema de criptografia da collection e recrie a collection.
Se você não precisar executar query de um campo criptografado, talvez não seja necessário habilitar a query nesse campo. Você ainda pode recuperar o documento consultando outros campos que podem ser consultados ou não criptografados.
Para cada collection criptografada, o MongoDB cria duas collections de metadados, aumentando o espaço de armazenamento. O MongoDB cria um índice para cada campo criptografado , o que aumenta a duração das operações de gravação nesse campo. Quando uma operação de gravação atualiza um campo indexado, MongoDB atualiza o índice relacionado.
Configurar campos criptografados para pesquisa e armazenamento ideais
O MongoDB fornece os seguintes parâmetros para facilitar a depuração e o ajuste de desempenho:
min, max
Tipo de Query: apenas queries de intervalo.
Tipo: deve corresponder ao
bsonType
do campo.Obrigatório se
bsonType
fordecimal
oudouble
. Opcional, mas altamente recomendado se forint
,long
oudate
. O padrão é os valores mínimos e máximosbsonType
.Especifique valores mínimos e máximos (inclusive) para query de um campo quando possível, pois limites menores melhoram a eficiência da query. Se estiver consultando valores fora desses limites, o MongoDB retornará um erro.
Importante
Os parâmetros esparsidade, precisão, trimFactor e contenção são destinados somente a usuários avançados. Os valores padrão para essas opções são adequados para a maioria dos casos de uso e só devem ser modificados se seu caso de uso exigir.
sparsity
Tipo de Query: apenas queries de intervalo.
Tipo: Inteiro de
1
-4
.Opcional. O padrão é
2
.Afeta o quão completamente o MongoDB indexa os valores de intervalo. A baixa esparsidade (indexação compacta) melhora o desempenho da consulta, mas armazena mais documentos nas coleções de metadados criptografadas para cada operação de inserção ou atualização, causando maior sobrecarga de armazenamento. Alta escassez faz o oposto.
precision
Tipo de Query: apenas queries de intervalo.
Tipo: inteiro.
Opcional. Permitido somente se
bsonType
fordouble
oudecimal
. Se não for definido, o MongoDB usa a mesma precisão máxima quebsonType
,double
oudecimal
.Determina quantos dígitos são levados em conta ao executar query de um campo
double
oudecimal
. Cada dígito adicional aumenta a sobrecarga de armazenamento e tem um alto impacto no intervalo pesquisável e na geração de índices. Este parâmetro limita a precisão das queries de intervalo. Valoresprecision
diferentes afetam a saída da query, embora os valores criptografados ainda sejam armazenados com precisão total.
trimFactor
Tipo de Query: apenas queries de intervalo.
Tipo: inteiro.
Opcional. O padrão é
6
.O
trimFactor
controla a taxa de transferência de inserções e atualizações simultâneas. UmtrimFactor
mais alto aumenta a taxa de transferência de inserção e atualizações simultâneas ao custo de desacelerar algumas operações de leitura de intervalo. UmtrimFactor
mais baixo faz o oposto.
contention
Tipo de query: queries de igualdade e faixa.
Tipo: inteiro.
Opcional. O padrão é
8
.Operações de gravação simultâneas, como inserir o mesmo par de campo/valor em vários documentos em sucessão próxima, podem causar contenção: conflitos que atrasam as operações.
Com o Queryable Encryption, o MongoDB rastreia as ocorrências de cada par de campo/valor em uma coleção criptografada usando um contador interno. O fator de contenção particiona esse contador, semelhante a uma array. Isto minimiza problemas ao incrementar o contador ao utilizar
insert
,update
oufindAndModify
para adicionar ou modificar um campo codificado com o mesmo par de campo/valor em sucessão próxima.contention = 0
cria uma array com um elemento no índice 0.contention = 4
cria uma array com 5 elementos nos índices 0-4. O MongoDB incrementa um elemento de array aleatório durante a inserção.Ao não ser definido, o
contention
padroniza para8
, que fornece alto desempenho para a maioria das cargas de trabalho. Uma contenção mais alta melhora o desempenho das operações de inserção e atualização em campos de baixa cardinalidade , no entanto, reduz o desempenho da procuras.Opcionalmente, você pode incluir
contention
nos campos consultáveis para alterar o valor do padrão de8
.Para obter informações mais completas sobre o fator de contenção e suas implicações criptográficas, consulte "Seção 9: Diretivas" no Documento técnico de Queryable Encryption do MongoDB.