암호화된 필드 및 활성화된 쿼리
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), 경합 (contention) 매개변수는 고급 사용자를 위한 것입니다. 이러한 옵션의 기본값 은 대부분의 사용 사례에 적합하며, 사용 사례 에 필요한 경우에만 수정해야 합니다.
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의 9 Queryable Encryption 기술 문서 '섹션: 가이드라인'을 참조하세요.