Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / / / /

암호화된 필드 및 활성화된 쿼리

Queryable Encryption 을 사용하는 경우 암호화 스키마 를 사용하여 컬렉션 수준에서 암호화됨 필드를 정의합니다. 필드 를 암호화하고 쿼리를 활성화하면 저장 요구 사항이 증가하고 쿼리 성능에 영향을 미칩니다. 동일성 또는 범위 쿼리에 대해 암호화됨 필드 를 구성할 수 있지만 둘 다 구성할 수는 없습니다. 예상 쿼리 유형에 대한 필드를 구성합니다.

암호화 스키마 생성 및 쿼리 구성에 대한 지침은 암호화 스키마 생성을 참조하세요.

지원되는 쿼리 연산자 목록 및 암호화됨 필드의 동작은 지원되는 쿼리 연산자를 참조하세요.

Queryable Encryption 컬렉션 의 특정 필드에 대한 암호화 시행하다 위해 서버 측 암호화 스키마 필요합니다. 자동 Queryable Encryption 사용하는 클라이언트는 데이터베이스 연결 구성에 따라 다르게 동작합니다.

  • 최소한 로컬 규칙은 서버 의 원격 스키마 와 동일한 필드를 암호화해야 합니다.

  • 연결 encryptedFieldsMap 객체 에 지정된 컬렉션 의 키가 포함되어 있으면 클라이언트 원격 스키마 사용하는 대신 해당 객체 사용하여 자동 Queryable Encryption 수행합니다.

  • 연결 encryptedFieldsMap 객체 에 지정된 컬렉션 에 대한 키가 포함되어 있지 않으면 클라이언트 컬렉션 에 대한 원격 스키마 다운로드하여 대신 사용합니다.

    중요

    원격 스키마 동작

    원격 스키마 를 사용하는 경우:

    • 클라이언트 는 서버 가 유효한 스키마 를 가지고 있다고 신뢰합니다.

    • 클라이언트는 원격 스키마를 사용하여 자동 Queryable Encryption만 수행합니다. 클라이언트는 스키마에 지정된 다른 유효성 검사 규칙을 적용하지 않습니다.

컬렉션 만들기 전에 암호화됨 하거나 쿼리할 수 있는 필드를 결정합니다. 암호화됨 되거나 쿼리 가능한 필드를 변경하려면 컬렉션의 암호화 스키마 다시 작성하고 컬렉션 다시 만들어야 합니다.

암호화됨 필드 를 쿼리 할 필요가 없는 경우 해당 필드 에서 쿼리를 활성화 할 필요가 없을 수 있습니다. 쿼리 가능하거나 암호화되지 않은 다른 필드를 쿼리하여 문서 를 조회 할 수 있습니다.

모든 암호화됨 컬렉션 에 대해 MongoDB 는 두 개의 메타데이터 컬렉션 을 생성하여 저장 공간을 늘립니다. MongoDB 는 암호화됨 각 필드 에 대해 인덱스 를 생성하여 해당 필드 에 대한 쓰기 (write) 작업 기간을 늘립니다. 쓰기 (write) 작업이 인덱싱된 필드 를 업데이트하면 MongoDB 는 관련 인덱스 를 업데이트합니다.

MongoDB 는 디버깅 및 성능 조정을 용이하게 하기 위해 다음과 같은 매개변수를 제공합니다.

min, max

쿼리 유형: range

유형: 필드의 bsonType 과 일치해야 합니다.

bsonTypedecimal 또는 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 를 포함해야 합니다.

쿼리 에 허용되는 최대 접두사/접미사/하위 문자열 길이입니다. 더 긴 문자열을 쿼리 하려고 하면 오류가 반환됩니다.

중요

이 설정은 쿼리 성능에 큰 영향을 미칩니다. 가능하면 최대 쿼리 길이를 제한합니다.

caseSensitive

쿼리 유형: prefixPreview, suffixPreview, substringPreview

유형: 부울

선택 사항 기본값은 true입니다.

접두사/접미사/하위 문자열 쿼리가 대소문자를 구분하는지 여부입니다. 대소문자를 구분하지 않고 일치시키려면 false 로 설정합니다.

diacriticSensitive

쿼리 유형: prefixPreview, suffixPreview, substringPreview

유형: 부울

선택 사항 기본값은 true입니다.

접두사/접미사/하위 문자열 쿼리가 발음 구별 부호와 일치해야 하는지 여부입니다. 분음 부호를 구분하지 않는 일치의 경우 false 로 설정합니다.

경고

이러한 매개변수는 고급 사용자를 위한 것입니다. 기본값 은 대부분의 사용 사례에 적합하며 사용 사례 필요한 경우에만 수정해야 합니다.

sparsity

쿼리 유형: range

유형: 1-4 의 정수입니다.

선택 사항 기본값은 2입니다.

MongoDB 범위 값을 얼마나 철저히 인덱스하는지에 영향을 미칩니다. 희소성이 낮으면(밀도 인덱싱) 쿼리 성능이 향상되지만 삽입 또는 업데이트 작업마다 암호화됨 메타데이터 컬렉션에 더 많은 문서를 저장하므로 저장 오버헤드 가 증가합니다. High sparsity does the opposite.

precision

쿼리 유형: range

유형: 정수.

선택 사항. bsonTypedouble 또는 decimal 인 경우에만 허용됩니다. 설정하지 않으면 MongoDB 는 bsonType, double 또는 decimal 와 동일한 최대 정밀도를 사용합니다.

double 또는 decimal 필드 쿼리할 때 점 이하 자릿수를 고려하는 것을 제한합니다. 추가 자릿수는 반올림되지 않고 삭제됩니다. 예시 들어 1 의 precision 는 쿼리에 대해 10.1810.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: 가이드라인"을 참조하세요.

돌아가기

Fundamentals

이 페이지의 내용