

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ビーコンパーティショニングの設定
<a name="configuring-beacon-partitioning"></a>

このセクションでは、ビーコンパーティショニングの設定方法と、ビーコンの取得、クエリの動作、およびセキュリティ保証への影響について説明します。パーティショニングはすべてのビーコンに適用され、値を分散し、頻度リークを制限し、クエリファンアウトを制御するための一貫したモデルを提供します。パーティション数とパーティション割り当てがどのように連携するかを理解することで、プライバシー、パフォーマンス、運用上の安全性のバランスがとれた設定を選択できます。

## パーティション設定の概要
<a name="configuring-beacon-partitioning.overview"></a>

 パーティション分割は論理テーブルレベルで設定され、すべての標準ビーコンに均一に適用されます。各論理テーブルは 1 つのパーティショニングスキームを定義します。これは **maximumNumberOfPartitions** と **defaultNumberOfPartitions** の 2 つのパラメータによって制御されます。

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

 `maximumNumberOfPartitions` フィールドは、テーブルが存続期間中に使用できるパーティションの数の上限を定義します。この値: 
+ クエリの最大ファンアウトを決定します。
+ データ量やセキュリティ要件が進化するにつれて増やすことができます。
+ データが存在する後に減らすことはできません。

## defaultNumberOfPartitions
<a name="configuring-beacon-partitioning.defaultNumberOfPartitions"></a>

 `defaultNumberOfPartitions` フィールドは、独自のパーティション数を明示的に宣言しない標準ビーコンで使用されるパーティションの数を指定します。この値: 
+  を満たす必要があります`1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255`。
+  増やすことはできますが、項目が書き込まれた後に減らすことはできません。
+  この値を と同じ値に設定します。`maximumNumberOfPartitions`ただし、個々のビーコンが使用できるパーティションの数を意図的に制限する場合は除きます。ビーコンのパーティション数を制限すると、属性の値空間が小さいかよく理解されている場合、属性を非常に頻繁にクエリする場合、またはクエリファンアウトとクエリコストを削減する場合に便利です。パーティションの制約は、クエリの効率と予測可能性を向上させるために、ランダム性と分散の利点をトレードします。ほとんどの属性では、使用可能なパーティションの完全なセットを使用すると、プライバシー保護と柔軟性のバランスがとれます。

## PartitionSelector を使用したパーティションの割り当て
<a name="configuring-beacon-partitioning.partition-selector"></a>

 というユーザー指定の関数は、書き込み時に各項目をパーティションに`PartitionSelector`割り当てます。パーティション番号が決まります。

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

 セレクタでドメインナレッジをエンコードして、以下を行うことができます。
+ 複数のパーティションに高頻度の値を分散します。
+ まれな値を 1 つのパーティションに一貫して割り当てます。
+ 汎用ワークロードには、デフォルトのランダムセレクタを使用します。

 ビーコンの取得には、選択したパーティション番号が組み込まれています。これは、暗号化された項目またはビーコン値に直接公開されることはありません。

## 標準ビーコンでのパーティション数の設定
<a name="configuring-beacon-partitioning.standard-beacons"></a>

 デフォルトでは、すべての標準ビーコンは を使用します`defaultNumberOfPartitions`。オプションで、 を設定して個々のビーコンを制限できます`numberOfPartitions`。これは、次の場合に便利です。
+ 基盤となるデータは既にほぼ均一に分散されています。
+ クエリワークロードは、非常に小さな結果セットを返すことが予想されます。
+ クエリファンアウトを減らすと、パフォーマンスが大幅に向上します。

 制約付きビーコンの場合、ビーコン取得中に使用される有効なパーティションは次のように計算されます。

```
effectivePartition = itemPartition % numberOfPartitions
```

 ビーコンレベルの制約は、必要な場合にのみ適用し、適切なセキュリティレビューを行います。制約が正しくないと、匿名性の保証が弱まったり、クエリ中に既存の項目にアクセスできなくなる可能性があります。



### 設定構文の例
<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()?,
```

------