암호화된 필드 및 활성화된 쿼리
Queryable Encryption 을 사용하는 경우 암호화 스키마 를 사용하여 컬렉션 수준에서 암호화됨 필드를 정의합니다. 필드 를 암호화하고 쿼리를 활성화하면 저장 요구 사항이 증가하고 쿼리 성능에 영향을 미칩니다. 동일성 또는 범위 쿼리에 대해 암호화됨 필드 를 구성할 수 있지만 둘 다 구성할 수는 없습니다. 예상 쿼리 유형에 대한 필드를 구성합니다.
암호화 스키마 생성 및 쿼리 구성에 대한 지침은 암호화 스키마 생성을 참조하세요.
지원되는 쿼리 유형 및 동작
지원되는 쿼리 연산자 목록 및 암호화됨 필드의 동작은 지원되는 쿼리 연산자를 참조하세요.
클라이언트 및 서버 스키마 유효성 검사
MongoDB 는 스키마 유효성 검사 를 사용하여 컬렉션 의 특정 필드에 암호화 를 시행하다 기능을 지원합니다. 자동 Queryable Encryption 을 사용하는 클라이언트는 데이터베이스 연결 구성에 따라 다르게 동작합니다.
연결
encryptedFieldsMap
객체 에 지정된 컬렉션 에 대한 키가 포함되어 있으면 클라이언트 는 원격 스키마 를 사용하는 대신 해당 객체 를 사용하여 자동 Queryable Encryption 을 수행합니다. 최소한 로컬 규칙은 원격 스키마 가 수행하는 모든 필드를 암호화해야 합니다.연결
encryptedFieldsMap
객체에 지정된 컬렉션에 대한 키가 포함되어 있지 않으면 클라이언트는 컬렉션에 대한 서버 측 원격 스키마를 다운로드하여 대신 사용합니다.중요
원격 스키마 동작
원격 스키마 를 사용하는 경우:
클라이언트 는 서버 가 유효한 스키마 를 가지고 있다고 신뢰합니다.
클라이언트는 원격 스키마를 사용하여 자동 Queryable Encryption만 수행합니다. 클라이언트는 스키마에 지정된 다른 유효성 검사 규칙을 적용하지 않습니다.
쿼리 사용 시 고려 사항
암호화됨 필드 를 쿼리 가능하게 만들 수 있습니다. 암호화됨 되거나 쿼리 가능한 필드를 변경하려면 컬렉션의 암호화 스키마 를 다시 작성하고 컬렉션 을 다시 만듭니다.
암호화됨 필드 를 쿼리 할 필요가 없는 경우 해당 필드 에서 쿼리를 활성화 할 필요가 없을 수 있습니다. 쿼리 가능하거나 암호화되지 않은 다른 필드를 쿼리하여 문서 를 조회 할 수 있습니다.
모든 암호화됨 컬렉션 에 대해 MongoDB 는 두 개의 메타데이터 컬렉션 을 생성하여 저장 공간을 늘립니다. MongoDB 는 암호화됨 각 필드 에 대해 인덱스 를 생성하여 해당 필드 에 대한 쓰기 (write) 작업 기간을 늘립니다. 쓰기 (write) 작업이 인덱싱된 필드 를 업데이트하면 MongoDB 는 관련 인덱스 를 업데이트합니다.
최적의 검색 및 저장을 위해 암호화된 필드 구성
MongoDB 는 디버깅 및 성능 조정을 용이하게 하기 위해 다음과 같은 매개변수를 제공합니다.
min, max
쿼리 유형: 범위 쿼리만 해당됩니다.
유형: 필드의
bsonType
과 일치해야 합니다.bsonType
가decimal
또는double
인 경우 필수입니다. 선택 사항이지만int
,long
또는date
인 경우 적극 권장합니다. 기본값은bsonType
최소값과 최대값입니다.범위가 작을수록 쿼리 효율성 이 향상되므로 가능하면 필드 에 대한 최소 및 최대(포함) 쿼리 가능 값을 지정합니다. 이 경계를 벗어난 값을 쿼리하면 MongoDB 는 오류를 반환합니다.
중요
희소성( sparsity), 정밀도(precision), 트림팩터( trimFactor) 및 경합 매개변수는 고급 사용자를 위한 것입니다. 이러한 옵션의 기본값 은 대부분의 사용 사례에 적합하며, 사용 사례 에 필요한 경우에만 수정해야 합니다.
sparsity
쿼리 유형: 범위 쿼리만 해당됩니다.
유형:
1
-4
의 정수입니다.선택 사항 기본값은
2
입니다.MongoDB 범위 값을 얼마나 철저히 인덱스하는지에 영향을 미칩니다. 희소성이 낮으면(밀도 인덱싱) 쿼리 성능이 향상되지만 삽입 또는 업데이트 작업마다 암호화됨 메타데이터 컬렉션에 더 많은 문서를 저장하므로 저장 오버헤드 가 증가합니다. High sparsity does the opposite.
precision
쿼리 유형: 범위 쿼리만 해당됩니다.
유형: 정수.
선택 사항.
bsonType
이double
또는decimal
인 경우에만 허용됩니다. 설정하지 않으면 MongoDB 는bsonType
double
또는decimal
와 동일한 최대 정밀도를 사용합니다.double
또는decimal
필드 를 쿼리할 때 고려할 자릿수를 결정합니다. 숫자가 추가될 때마다 저장 오버헤드 가 증가하고 검색 가능 범위 및 인덱스 생성에 큰 영향 을 미칩니다. 이 매개변수는 범위 쿼리의 정밀도를 제한합니다. 암호화됨 값은 여전히 전체 정밀도로 저장되지만 다른precision
값은 쿼리 출력에 영향을 줍니다.
trimFactor
쿼리 유형: 범위 쿼리만 해당됩니다.
유형: 정수.
선택 사항 기본값은
6
입니다.trimFactor
은(는) 동시 삽입 및 업데이트의 처리량 을 제어합니다.trimFactor
이 높을수록 일부 범위 읽기 작업 속도가 느려지는 대신 동시 삽입 및 업데이트 처리량 이 비용 합니다.trimFactor
값이 낮으면 그 반대입니다.
contention
쿼리 유형: 동등성 및 범위 쿼리입니다.
유형: 정수.
선택 사항 기본값은
8
입니다.동일한 필드/값 쌍을 여러 문서에 연속적으로 삽입하는 등의 동시 쓰기 작업은 경합(충돌로 인해 작업이 지연되는 현상)을 일으킬 수 있습니다.
Queryable Encryption 을 사용하면 MongoDB 는 내부 카운터를 사용하여 암호화됨 컬렉션 에서 각 필드 /값 쌍의 발생을 추적합니다. 경합 요인 은 배열 과 유사하게 이 카운터를 분할합니다. 이렇게 하면
insert
,update
또는findAndModify
를 사용하여 동일한 필드 /값 쌍이 있는 암호화됨 필드 를 연속해서 추가하거나 수정할 때 카운터 증분과 관련된 문제를 최소화합니다.contention = 0
는 인덱스 0 에 하나의 요소가 있는 배열 을 만듭니다.contention = 4
은 인덱스 0-4 에 5 요소가 있는 배열 을 만듭니다. MongoDB 는 삽입 중에 임의의 배열 요소를 증가시킵니다.설정하지 않으면
contention
기본값은8
로, 대부분의 워크로드에 고성능을 제공합니다. 경합이 높으면 카디널리티 가 낮은 필드에 대한 삽입 및 업데이트 작업의 성능이 향상되지만 찾기 성능이 저하됩니다.선택적으로 쿼리 가능 필드 에
contention
를 포함하여 기본값 인8
에서 값을 변경할 수 있습니다.경합 요인과 이것이 암호화에 미치는 영향에 대한 자세한 내용은 MongoDB의 Queryable Encryption 기술 문서 '섹션 9: 가이드라인'을 참조하세요.