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