View a markdown version of this page

Configurazione del partizionamento Beacon - AWS SDK per la crittografia del database

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione del partizionamento Beacon

Questa sezione descrive come è configurato il partizionamento dei beacon e come influisce sulla derivazione dei beacon, sul comportamento delle query e sulle garanzie di sicurezza. Il partizionamento si applica a tutti i beacon e fornisce un modello coerente per la distribuzione dei valori, la limitazione delle perdite di frequenza e il controllo del fan-out delle query. Capire come il conteggio delle partizioni e l'assegnazione delle partizioni interagiscono aiuta a scegliere configurazioni che bilanciano privacy, prestazioni e sicurezza operativa.

Panoramica della configurazione delle partizioni

Il partizionamento è configurato a livello di tabella logica e si applica in modo uniforme a tutti i beacon standard. Ogni tabella logica definisce un singolo schema di partizionamento, controllato da due parametri: massimo e predefinito. NumberOfPartitions NumberOfPartitions

massimo NumberOfPartitions

Il maximumNumberOfPartitions campo definisce il limite superiore del numero di partizioni che la tabella può utilizzare nel corso della sua durata. Questo valore:

  • Determina il fan-out massimo possibile delle interrogazioni.

  • Può essere aumentato in base all'evoluzione del volume di dati o dei requisiti di sicurezza.

  • Non deve essere diminuito una volta che i dati sono disponibili.

impostazione predefinita NumberOfPartitions

Il defaultNumberOfPartitions campo specifica quante partizioni vengono utilizzate dai beacon standard che non dichiarano esplicitamente il proprio numero di partizioni. Questo valore:

  • Deve soddisfare1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255.

  • Può essere aumentato, ma non deve mai essere diminuito dopo che gli elementi sono stati scritti.

  • Impostate questo valore sullo stesso valore a maximumNumberOfPartitions meno che non vogliate intenzionalmente limitare il numero di partizioni che un singolo beacon può usare. Limitare il numero di partizioni per un beacon può essere utile quando un attributo ha uno spazio di valori piccolo o ben compreso, quando l'attributo viene interrogato molto frequentemente o quando si desidera ridurre il fan-out delle query e il costo delle query. La limitazione delle partizioni offre alcuni vantaggi in termini di casualità e distribuzione per una migliore efficienza e prevedibilità delle query. Per la maggior parte degli attributi, l'utilizzo del set completo di partizioni disponibili offre il miglior equilibrio tra protezione della privacy e flessibilità.

Assegnazione delle partizioni utilizzando un PartitionSelector

Una funzione fornita dall'utente denominata PartitionSelector assegna ogni elemento a una partizione in fase di scrittura. Determina il numero della partizione:

GetPartitionNumber(item, numberOfPartitions, logicalTableName) -> PartitionNumber

È possibile codificare la conoscenza del dominio nel selettore per:

  • Distribuisci valori ad alta frequenza su più partizioni.

  • Assegna valori rari in modo coerente a una singola partizione.

  • Utilizza il selettore casuale predefinito per carichi di lavoro generici.

La derivazione del beacon incorpora il numero di partizione selezionato, che non viene mai esposto direttamente nell'elemento crittografato o nel valore del beacon.

Configurazione del conteggio delle partizioni su beacon standard

Per impostazione predefinita, tutti i beacon standard utilizzano. defaultNumberOfPartitions È possibile facoltativamente vincolare un singolo beacon impostando. numberOfPartitions Ciò è utile quando:

  • I dati sottostanti sono già distribuiti approssimativamente in modo uniforme.

  • Si prevede che i carichi di lavoro di interrogazione restituiscano set di risultati molto piccoli.

  • La riduzione del fan-out delle query migliora significativamente le prestazioni.

Per i beacon vincolati, la partizione effettiva utilizzata durante la derivazione dei beacon viene calcolata come segue:

effectivePartition = itemPartition % numberOfPartitions

Applica i vincoli a livello di beacon solo quando necessario e con un'adeguata revisione della sicurezza. I vincoli errati possono indebolire le garanzie di anonimato o rendere irraggiungibili gli elementi esistenti durante le interrogazioni.

Esempio di sintassi di configurazione

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