View a markdown version of this page

Configuración del particionamiento de balizas - AWS SDK de cifrado de bases de datos

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración del particionamiento de balizas

En esta sección se describe cómo se configura la partición de balizas y cómo afecta a la derivación de las balizas, al comportamiento de las consultas y a las garantías de seguridad. La partición se aplica a todas las balizas y proporciona un modelo coherente para distribuir valores, limitar la fuga de frecuencia y controlar la distribución de consultas. Comprender cómo funcionan juntos el recuento de particiones y la asignación de particiones le ayuda a elegir configuraciones que equilibren la privacidad, el rendimiento y la seguridad operativa.

Descripción general de la configuración de particiones

La partición se configura en el nivel de la tabla lógica y se aplica de manera uniforme a todas las balizas estándar. Cada tabla lógica define un esquema de partición único, que se controla mediante dos parámetros: el máximo y el predeterminado. NumberOfPartitions NumberOfPartitions

máximo NumberOfPartitions

El maximumNumberOfPartitions campo define el límite superior del número de particiones que la tabla puede utilizar a lo largo de su vida útil. Este valor:

  • Determina la distribución máxima posible de consultas.

  • Se puede aumentar a medida que evolucionen el volumen de datos o los requisitos de seguridad.

  • No debe reducirse una vez que existan los datos.

predeterminado NumberOfPartitions

El defaultNumberOfPartitions campo especifica cuántas particiones utilizan las balizas estándar que no declaran explícitamente su propio recuento de particiones. Este valor:

  • Debe satisfacer1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255.

  • Se puede aumentar, pero nunca se debe disminuir una vez escritos los elementos.

  • Establezca este valor en el mismo valor maximumNumberOfPartitions que a menos que desee restringir intencionadamente el número de particiones que puede utilizar una baliza individual. Limitar el número de particiones de una baliza puede resultar útil cuando un atributo tiene un espacio de valores pequeño o bien comprendido, cuando el atributo se consulta con mucha frecuencia o cuando se quiere reducir la dispersión de consultas y el coste de las consultas. Al restringir las particiones, se obtienen algunas ventajas de aleatoriedad y distribución, lo que mejora la eficiencia y la previsibilidad de las consultas. Para la mayoría de los atributos, el uso del conjunto completo de particiones disponibles proporciona el mejor equilibrio entre la protección de la privacidad y la flexibilidad.

Asignación de particiones mediante un PartitionSelector

Una función proporcionada por el usuario denominada PartitionSelector asigna cada elemento a una partición en el momento de la escritura. Determina el número de partición:

GetPartitionNumber(item, numberOfPartitions, logicalTableName) -> PartitionNumber

Puede codificar el conocimiento del dominio en el selector para:

  • Distribuya los valores de alta frecuencia en varias particiones.

  • Asigne valores raros de forma coherente a una sola partición.

  • Utilice el selector aleatorio predeterminado para las cargas de trabajo de uso general.

La derivación de balizas incorpora el número de partición seleccionado, que nunca se expone directamente en el elemento cifrado o en el valor de la baliza.

La configuración de los recuentos de particiones en balizas estándar

De forma predeterminada, todas las balizas estándar utilizan. defaultNumberOfPartitions Si lo desea, puede restringir una baliza individual mediante la configuración. numberOfPartitions Esto resulta útil cuando:

  • Los datos subyacentes ya están distribuidos aproximadamente de manera uniforme.

  • Se espera que las cargas de trabajo de consultas arrojen conjuntos de resultados muy pequeños.

  • Al reducir la dispersión de consultas, se mejora considerablemente el rendimiento.

En el caso de las balizas restringidas, la partición efectiva utilizada durante la obtención de las balizas se calcula de la siguiente manera:

effectivePartition = itemPartition % numberOfPartitions

Aplique restricciones a nivel de baliza solo cuando sea necesario y con la revisión de seguridad adecuada. Las restricciones incorrectas pueden debilitar las garantías de anonimato o hacer que los elementos existentes sean inaccesibles durante las consultas.

Ejemplo de sintaxis de configuración

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()?,