Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / / /

加密字段和启用的查询

在此页面上

  • 支持的查询类型和行为
  • 客户端和服务器模式验证
  • 启用查询时的注意事项
  • 配置加密字段以实现最佳搜索和存储

使用Queryable Encryption时,可以使用加密模式在集合级别定义加密字段。 加密字段并启用查询会增加存储要求并影响查询性能。 您可以为相等查询或范围查询配置加密字段,但不能同时为两者配置加密字段。 配置预期查询类型的字段。

有关创建加密模式和配置查询的说明,请参阅创建加密模式。

有关支持的查询运算符和加密字段行为的列表,请参阅支持的查询运算符。

MongoDB支持使用模式验证来实施对集合中的特定字段进行加密。 使用自动Queryable Encryption的客户端的行为因数据库连接配置而异:

  • 如果连接 encryptedFieldsMap对象包含指定集合的密钥,则客户端使用该对象执行自动Queryable Encryption,而不是使用远程模式。 至少,本地规则必须加密远程模式加密的所有字段。

  • 如果连接encryptedFieldsMap对象不包含指定集合的密钥,客户端会下载并使用该集合的服务器端远程模式。

    重要

    远程模式行为

    使用远程模式时:

    • 客户端相信服务器具有有效的模式

    • 客户端仅使用远程模式来执行自动 Queryable Encryption。客户端不会实施该模式中指定的任何其他验证规则。

您可以将加密字段设为可查询。 要更改哪些字段已加密或可查询,请重建集合的加密模式并重新创建集合。

如果不需要查询加密字段,则可能不需要启用对该字段的查询。 您仍然可以通过查询其他可查询或未加密的字段来检索文档。

对于每个加密的集合, MongoDB都会创建两个元数据集合,从而增加存储空间。 MongoDB为每个加密字段创建一个索引,这会增加对该字段执行写入操作的持续时间。 当写入操作更新索引字段时, MongoDB会更新相关索引。

MongoDB提供了以下参数以方便调试和性能调优:

min, max

查询类型:仅限范围查询。

类型:必须与字段的bsonType匹配。

如果bsonTypedecimaldouble ,则为必填项。 可选,但如果为intlongdate ,则强烈建议使用。 默认为bsonType最小值和最大值。

尽可能指定字段的最小和最大(含)可查询值,因为更小的边界可以提高查询效率。如果查询的值超出这些范围, MongoDB将返回错误。

重要

稀疏性精度修剪因子争用参数仅供高级用户使用。 这些选项的默认值适用于大多数使用案例,只有在使用案例需要时才应修改。

sparsity

查询类型:仅限范围查询。

类型1 - 4之间的整数。

可选。默认值为 2

影响MongoDB对范围值进行索引的彻底程度。 低稀疏性(密集索引)可提高查询性能,但会在每次插入或更新操作的加密元数据集合中存储更多文档,从而导致更大的存储开销。 高稀疏度则相反。

precision

查询类型:仅限范围查询。

类型:整数。

可选。仅当bsonTypedoubledecimal时才允许。如果未设置, MongoDB将使用与bsonType相同的最大精度,即doubledecimal

确定在查询doubledecimal字段时考虑多少位数字。每增加一个数字,就会增加存储开销,并对可搜索范围和索引生成产生很大影响。此参数限制范围查询的精度。尽管加密值仍以全精度存储,但不同的precision值会影响查询输出。

trimFactor

查询类型:仅限范围查询。

类型:整数。

可选。默认值为 6

trimFactor控制并发插入和更新的吞吐量。较高的trimFactor会提高并发插入和更新的吞吐量,但会费用某些范围读取操作的速度。较低的trimFactor则执行相反操作。

contention

查询类型:相等和范围查询。

类型:整数。

可选。默认值为 8

并发写操作,例如在多个文档中连续插入相同的字段/值对,可能会导致争用:即延迟操作的冲突。

通过Queryable Encryption, MongoDB使用内部计数器跟踪加密集合中每个字段/值对的出现次数。 争用因子对该计数器进行分区,类似于大量。 这样可以最大限度地减少使用insertupdatefindAndModify连续添加或修改具有相同字段/值对的加密字段时递增计数器的问题。 contention = 0创建一个大量,在索引0处包含一个元素。 contention = 4会在索引0 - 4处创建一个包含5个元素的大量。 MongoDB在插入期间递增随机大量元素。

未设置时, contention默认为8 ,可为大多数工作负载提供高性能。 较高的争用可提高低关联基数字段上的插入和更新操作的性能,但会降低查找性能。

您可以选择在可查询字段上包含contention ,以更改该值的默认8

有关争用因素及其加密影响的更全面信息,请参阅 MongoDB 的Queryable Encryption技术论文中的“第9节:指南”。

后退

Fundamentals