

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration du partitionnement des balises
<a name="configuring-beacon-partitioning"></a>

Cette section décrit comment le partitionnement des balises est configuré et comment il affecte la dérivation des balises, le comportement des requêtes et les garanties de sécurité. Le partitionnement s'applique à toutes les balises et fournit un modèle cohérent pour distribuer les valeurs, limiter les fuites de fréquence et contrôler le fan-out des requêtes. Comprendre comment le nombre de partitions et l'attribution des partitions fonctionnent ensemble vous permet de choisir des configurations qui équilibrent confidentialité, performances et sécurité opérationnelle. 

## Vue d'ensemble de la configuration des partitions
<a name="configuring-beacon-partitioning.overview"></a>

 Le partitionnement est configuré au niveau de la table logique et s'applique uniformément à toutes les balises standard. Chaque table logique définit un schéma de partitionnement unique, contrôlé par deux paramètres : **maximum NumberOfPartitions** et **par défaut NumberOfPartitions**. 

## maximum NumberOfPartitions
<a name="configuring-beacon-partitioning.maximumNumberOfPartitions"></a>

 Le `maximumNumberOfPartitions` champ définit la limite supérieure du nombre de partitions que la table peut utiliser au cours de sa durée de vie. Cette valeur : 
+ Détermine le fan-out maximal possible pour les requêtes.
+ Peut être augmenté à mesure que le volume de données ou les exigences de sécurité évoluent.
+ Ne doit pas être diminué une fois que les données existent.

## par défaut NumberOfPartitions
<a name="configuring-beacon-partitioning.defaultNumberOfPartitions"></a>

 Le `defaultNumberOfPartitions` champ indique le nombre de partitions utilisées par les balises standard qui ne déclarent pas explicitement leur propre nombre de partitions. Cette valeur : 
+  Doit satisfaire`1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255`. 
+  Peut être augmenté, mais ne doit jamais être diminué une fois que les éléments ont été écrits. 
+  Définissez cette valeur sur la même valeur que, `maximumNumberOfPartitions` sauf si vous souhaitez intentionnellement limiter le nombre de partitions qu'une balise individuelle peut utiliser. Limiter le nombre de partitions pour une balise peut être utile lorsqu'un attribut possède un espace de valeurs restreint ou bien compris, lorsque l'attribut est interrogé très fréquemment ou lorsque vous souhaitez réduire le nombre de requêtes et le coût des requêtes. En limitant les partitions, certains avantages du caractère aléatoire et de la distribution se traduisent par une efficacité et une prévisibilité accrues des requêtes. Pour la plupart des attributs, l'utilisation de l'ensemble complet des partitions disponibles offre le meilleur équilibre entre protection de la vie privée et flexibilité. 

## Attribution de partitions à l'aide d'un PartitionSelector
<a name="configuring-beacon-partitioning.partition-selector"></a>

 Une fonction fournie par l'utilisateur appelée `PartitionSelector` assigne chaque élément à une partition au moment de l'écriture. Il détermine le numéro de partition : 

```
GetPartitionNumber(item, numberOfPartitions, logicalTableName) -> PartitionNumber
```

 Vous pouvez encoder les connaissances du domaine dans le sélecteur pour : 
+ Répartissez les valeurs de haute fréquence sur plusieurs partitions.
+ Attribuez des valeurs rares de manière cohérente à une seule partition.
+ Utilisez le sélecteur aléatoire par défaut pour les charges de travail à usage général.

 La dérivation des balises intègre le numéro de partition sélectionné, qui n'est jamais exposé directement dans l'élément chiffré ou dans la valeur de la balise. 

## Configuration du nombre de partitions sur les balises standard
<a name="configuring-beacon-partitioning.standard-beacons"></a>

 Par défaut, toutes les balises standard utilisent`defaultNumberOfPartitions`. Vous pouvez éventuellement contraindre une balise individuelle en définissant`numberOfPartitions`. Cela est utile lorsque : 
+ Les données sous-jacentes sont déjà distribuées de manière approximativement uniforme.
+ Les charges de travail liées aux requêtes sont censées renvoyer de très petits ensembles de résultats.
+ La réduction du fan-out des requêtes améliore considérablement les performances.

 Pour les balises contraintes, la partition effective utilisée lors de la dérivation des balises est calculée comme suit : 

```
effectivePartition = itemPartition % numberOfPartitions
```

 Appliquez des contraintes au niveau des balises uniquement lorsque cela est nécessaire et en procédant à un examen de sécurité approprié. Des contraintes incorrectes peuvent affaiblir les garanties d'anonymat ou rendre les éléments existants inaccessibles lors des requêtes. 



### Exemple de syntaxe de configuration
<a name="w2aac15c27c17c13c15"></a>

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

------