View a markdown version of this page

비컨 파티셔닝 구성 - AWS 데이터베이스 암호화 SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

비컨 파티셔닝 구성

이 섹션에서는 비컨 파티셔닝을 구성하는 방법과 비컨 파생, 쿼리 동작 및 보안 보장에 미치는 영향을 설명합니다. 파티셔닝은 모든 비컨에 적용되며 값을 배포하고, 주파수 누출을 제한하고, 쿼리 팬아웃을 제어하기 위한 일관된 모델을 제공합니다. 파티션 수와 파티션 할당이 함께 작동하는 방식을 이해하면 프라이버시, 성능 및 운영 안전의 균형을 맞추는 구성을 선택하는 데 도움이 됩니다.

파티션 구성 개요

파티셔닝은 논리적 테이블 수준에서 구성되며 모든 표준 비컨에 균일하게 적용됩니다. 각 논리적 테이블은 maximumNumberOfPartitionsdefaultNumberOfPartitions의 두 파라미터로 제어되는 단일 파티셔닝 체계를 정의합니다.

maximumNumberOfPartitions

maximumNumberOfPartitions 필드는 테이블이 수명 동안 사용할 수 있는 파티션 수의 상한을 정의합니다. 이 값은 다음과 같습니다.

  • 가능한 최대 쿼리 팬아웃을 결정합니다.

  • 데이터 볼륨 또는 보안 요구 사항이 증가함에 따라 늘릴 수 있습니다.

  • 데이터가 있는 후에는 줄이면 안 됩니다.

defaultNumberOfPartitions

defaultNumberOfPartitions 필드는 고유한 파티션 수를 명시적으로 선언하지 않는 표준 비컨에서 사용되는 파티션 수를 지정합니다. 이 값은 다음과 같습니다.

  • 를 충족해야 합니다1 ≤ defaultNumberOfPartitions ≤ maximumNumberOfPartitions ≤ 255.

  • 늘릴 수 있지만 항목을 작성한 후에는 줄이면 안 됩니다.

  • 개별 비컨이 사용할 수 있는 파티션 수를 의도적으로 제한하려는 maximumNumberOfPartitions 경우가 아니면이 값을와 동일한 값으로 설정합니다. 비컨의 파티션 수를 제한하면 속성의 값 공간이 작거나 잘 이해되는 경우, 속성을 매우 자주 쿼리하는 경우 또는 쿼리 팬아웃 및 쿼리 비용을 줄이려는 경우에 유용할 수 있습니다. 파티션을 제한하면 쿼리 효율성과 예측 가능성을 높이기 위해 일부 무작위성과 배포 이점이 상호 작용합니다. 대부분의 속성에서 사용 가능한 전체 파티션 세트를 사용하면 개인 정보 보호와 유연성 간의 균형을 가장 잘 맞출 수 있습니다.

PartitionSelector 할당

라는 사용자 제공 함수는 쓰기 시 각 항목을 파티션에 PartitionSelector 할당합니다. 파티션 번호를 결정합니다.

GetPartitionNumber(item, numberOfPartitions, logicalTableName) -> PartitionNumber

선택기에서 도메인 지식을 인코딩하여 다음을 수행할 수 있습니다.

  • 여러 파티션에 고주파 값을 분산합니다.

  • 단일 파티션에 드문 값을 일관되게 할당합니다.

  • 범용 워크로드에는 기본 무작위 선택기를 사용합니다.

비컨 파생은 선택한 파티션 번호를 통합하며, 암호화된 항목 또는 비컨 값에 직접 노출되지 않습니다.

표준 비컨에서 파티션 수 구성

기본적으로 모든 표준 비컨은를 사용합니다defaultNumberOfPartitions. 선택적으로를 설정하여 개별 비컨을 제한할 수 있습니다numberOfPartitions. 이는 다음과 같은 경우에 유용합니다.

  • 기본 데이터는 이미 거의 균일하게 분산되어 있습니다.

  • 쿼리 워크로드는 매우 작은 결과 집합을 반환할 것으로 예상됩니다.

  • 쿼리 팬아웃을 줄이면 성능이 크게 향상됩니다.

제한된 비컨의 경우 비컨 추출 중에 사용되는 유효 파티션은 다음과 같이 계산됩니다.

effectivePartition = itemPartition % numberOfPartitions

필요한 경우에만 적절한 보안 검토를 통해 비컨 수준 제약 조건을 적용합니다. 잘못된 제약 조건은 익명 보장을 약화시키거나 쿼리 중에 기존 항목에 연결할 수 없게 만들 수 있습니다.

구성 구문의 예제

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