本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置信标分区
本节介绍信标分区是如何配置的,以及它如何影响信标派生、查询行为和安全保障。分区适用于所有信标,为分布值、限制频率泄漏和控制查询扇出提供了一致的模型。了解分区计数和分区分配是如何协同工作的,可以帮助您选择在隐私、性能和操作安全之间取得平衡的配置。
分区配置概述
分区是在逻辑表级别配置的,并且统一应用于所有标准信标。每个逻辑表都定义了一个分区方案,该方案由两个参数控制:最大值NumberOfPartitions和默认值NumberOfPartitions。
最大值 NumberOfPartitions
该maximumNumberOfPartitions字段定义了表在其生命周期内可以使用的分区数量的上限。这个值:
-
确定可能的最大查询扇出范围。
-
可以随着数据量或安全要求的变化而增加。
-
数据存在后不得减少。
默认 NumberOfPartitions
该defaultNumberOfPartitions字段指定未明确声明自己的分区计数的标准信标使用了多少分区。这个值:
-
必须满足
1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255。 -
可以增加,但绝不能在写完物品后减少。
-
maximumNumberOfPartitions除非您故意限制单个信标可以使用的分区数量,否则请将此值设置为与之相同的值。当属性的值空间较小或易于理解时、查询该属性的频率非常高,或者想要减少查询扇出和查询成本时,限制信标的分区数量会很有用。限制分区可以用一些随机性和分布优势来提高查询效率和可预测性。对于大多数属性,使用全套可用分区可以在隐私保护和灵活性之间取得最佳平衡。
使用 a 进行分区分配 PartitionSelector
用户提供的名为的函数在写入时将每个项目PartitionSelector分配给一个分区。它决定了分区号:
GetPartitionNumber(item, numberOfPartitions, logicalTableName) -> PartitionNumber
您可以在选择器中将领域知识编码为:
-
将高频值分布到多个分区。
-
一致地为单个分区分配稀有值。
-
对于通用工作负载,使用默认的随机选择器。
信标派生包含选定的分区号,该分区号永远不会直接暴露在加密项目或信标值中。
在标准信标上配置分区计数
默认情况下,所有标准信标都使用defaultNumberOfPartitions。您可以选择通过设置numberOfPartitions来限制单个信标。这在以下情况下很有用:
-
基础数据已经大致均匀分布。
-
查询工作负载预计将返回非常小的结果集。
-
减少查询扇出可以显著提高性能。
对于受约束的信标,信标推导过程中使用的有效分区计算为:
effectivePartition = itemPartition % numberOfPartitions
只有在必要时才应用信标级别的限制,并进行适当的安全审查。不正确的约束可能会削弱匿名性保证,或者使查询期间无法访问现有项目。