View a markdown version of this page

Configurando o particionamento de beacon - AWS SDK de criptografia de banco de dados

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando o particionamento de beacon

Esta seção descreve como o particionamento do beacon é configurado e como ele afeta a derivação do beacon, o comportamento da consulta e as garantias de segurança. O particionamento se aplica a todos os beacons e fornece um modelo consistente para distribuir valores, limitar o vazamento de frequência e controlar a dispersão de consultas. Entender como a contagem de partições e a atribuição de partições funcionam juntas ajuda você a escolher configurações que equilibram privacidade, desempenho e segurança operacional.

Visão geral da configuração da partição

O particionamento é configurado no nível da tabela lógica e se aplica uniformemente a todos os beacons padrão. Cada tabela lógica define um único esquema de particionamento, que é controlado por dois parâmetros: máximo NumberOfPartitions e padrão. NumberOfPartitions

máximo NumberOfPartitions

O maximumNumberOfPartitions campo define o limite superior do número de partições que a tabela pode usar durante sua vida útil. Esse valor:

  • Determina a extensão máxima possível da consulta.

  • Pode ser aumentado à medida que o volume de dados ou os requisitos de segurança evoluem.

  • Não deve ser diminuído após a existência dos dados.

padrão NumberOfPartitions

O defaultNumberOfPartitions campo especifica quantas partições são usadas pelos beacons padrão que não declaram explicitamente sua própria contagem de partições. Esse valor:

  • Deve satisfazer1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255.

  • Pode ser aumentado, mas nunca deve ser diminuído após a gravação dos itens.

  • Defina esse valor com o mesmo valor, maximumNumberOfPartitions a menos que você queira restringir intencionalmente quantas partições um beacon individual pode usar. Limitar o número de partições de um beacon pode ser útil quando um atributo tem um espaço de valor pequeno ou bem compreendido, quando o atributo é consultado com muita frequência ou quando você deseja reduzir a dispersão e o custo da consulta. A restrição de partições oferece alguns benefícios de aleatoriedade e distribuição para melhorar a eficiência e a previsibilidade das consultas. Para a maioria dos atributos, o uso do conjunto completo de partições disponíveis fornece o melhor equilíbrio entre proteção de privacidade e flexibilidade.

Atribuição de partições usando um PartitionSelector

Uma função fornecida pelo usuário chamada PartitionSelector atribui cada item a uma partição no momento da gravação. Ele determina o número da partição:

GetPartitionNumber(item, numberOfPartitions, logicalTableName) -> PartitionNumber

Você pode codificar o conhecimento do domínio no seletor para:

  • Distribua valores de alta frequência em várias partições.

  • Atribua valores raros de forma consistente a uma única partição.

  • Use o seletor aleatório padrão para cargas de trabalho de uso geral.

A derivação do beacon incorpora o número da partição selecionada, que nunca é exposto diretamente no item criptografado ou no valor do beacon.

Configurando contagens de partições em beacons padrão

Por padrão, todos os beacons padrão usam. defaultNumberOfPartitions Opcionalmente, você pode restringir um farol individual configurando. numberOfPartitions Isso é útil quando:

  • Os dados subjacentes já estão distribuídos aproximadamente uniformemente.

  • Espera-se que as cargas de trabalho de consulta retornem conjuntos de resultados muito pequenos.

  • Reduzir a dispersão de consultas melhora significativamente o desempenho.

Para beacons restritos, a partição efetiva usada durante a derivação do farol é calculada como:

effectivePartition = itemPartition % numberOfPartitions

Aplique restrições em nível de beacon somente quando necessário e com a análise de segurança apropriada. Restrições incorretas podem enfraquecer as garantias de anonimato ou tornar os itens existentes inacessíveis durante as consultas.

Sintaxe de exemplo de configuração

Java
List<StandardBeacon> standardBeaconList = new ArrayList<>(); StandardBeacon exampleStandardBeacon = StandardBeacon.builder() .name("beaconName") .length(beaconLengthInBits) .numberOfPartitions(number) .build(); standardBeaconList.add(exampleStandardBeacon);
C# / .NET
var standardBeaconList = new List<StandardBeacon>(); StandardBeacon exampleStandardBeacon = new StandardBeacon { Name = "beaconName", Length = 10, NumberOfPartitions = number }; standardBeaconList.Add(exampleStandardBeacon);
Rust
let standard_beacon_list = vec![ StandardBeacon::builder() .name("beacon_name") .length(beacon_length_in_bits) .number_of_partitions(number) .build()?,