Docs Menu
Docs Home
/
MongoDB マニュアル
/ / / / /

制限

項目一覧

  • Overview
  • Atlas Search
  • MongoDB サポートの制限
  • 競合係数
  • メタデータコレクションの手動圧縮
  • encryptedFieldsMap の変更
  • 読み取りおよび書込み操作のサポート
  • 編集
  • クエリ ログとデータベースプロファイラーのリダクション
  • コマンドと集計ステージの出力リダクション
  • トポロジー サポート
  • シャーディング
  • CRUD
  • コレクション
  • コレクションの削除
  • コレクションを作成
  • クエリ タイプ
  • 暗号化されたフィールド名
  • ビュー
  • 照合
  • Unique Indexes
  • _id フィールド
  • 読み取り/書込みクエリのサポート

Queryable Encryption を有効にする前に、これらの制限と制約を考慮してください。 一部の操作はサポートされていません。他の操作の動作は異なります。

Queryable Encryption は MongoDB Atlas Search と互換性がありません。

コレクションで Queryable Encryption を有効にすると、一部の診断コマンドのフィールドが編集され、クエリ ログから一部の操作が省略されます。これにより、特にクエリのパフォーマンスを分析する際、MongoDBサポートエンジニアが利用できるデータが制限されます。暗号化されたコレクションに対する操作の影響を測定するには、サードパーティのアプリケーションパフォーマンス監視ツールを使用してメトリクスを収集します。

詳しくは、「 リダクション 」セクションを参照してください。

競合係数は、同時操作の数に基づいてパフォーマンスを調整するのに役立つ設定です。 設定されていない場合、競合はデフォルト値の 8を使用し、ほとんどのワークロードで高パフォーマンスを提供します。

競合係数は、暗号化のフィールドを指定するときにのみ設定できます。 暗号化のフィールドを指定すると、競合係数は不変です。

詳細については、「競合係数の構成 」を参照してください。

Manually run metadata collection compaction when your metadata collections exceed 1 GB. 圧縮により、暗号化されたフィールドに関連付けられたメタデータ コレクションのサイズが縮小され、パフォーマンスが向上します。

に渡されるencryptedFieldsMap MongoClientは変更しないでください。指定すると、クエリ時に予期しない誤った動作が発生する可能性があります。

mongodは暗号化されたBinData } のみを保存し、暗号化されたフィールドを指定する任意の集計式またはクエリ演算子をBinDataの値に対して適用します。 式または演算子はBinDataフィールドをサポートする場合がありますが、復号化された値に対して同じ式または演算子を発行すると、結果の値が誤った値や予期しない値になる可能性があります。 式または演算子がBinData値をサポートしていない場合、 mongodはエラーをスローします。

セキュリティを向上させるために、Queryable Encryption は、暗号化されたコレクションの一部の診断コマンドのフィールドを編集し、クエリ ログから特定の操作を省略します。 暗号化されたコレクションとは、 encryptedFieldsオプションを持つ任意のコレクションです。

以下の CRUD 操作は、暗号化されたコレクションで実行すると、低速操作クエリ ログとデータベースプロファイラーsystem.profileコレクションから省略されます。

collStatsコマンドと$collStats集計ステージ

  • Omit "queryExecStats"

  • Omit "latencyStats"

  • "WiredTiger"が存在する場合は、編集してurlフィールドのみを含めます。

currentOpコマンドと$currentOp集計ステージ

  • "command"の後のすべてのフィールドを省略します。

  • 最初の要素、 $comment$dbのみを含むように"command"を編集します。

topコマンドは暗号化されたコレクションのコレクション名のみを返します。

$planCacheStats集計ステージでは、暗号化されたコレクションに対する操作は通常どおりキャッシュされますが、操作は省略されます。

  • レプリカセットとシャーディングされたクラスターはサポートされています

  • スタンドアロン配置はサポートされていません

  • セカンダリ読み取りはサポートされていません

  • メタデータコレクションはシャーディングしてはなりません

  • シャードキーは暗号化されたフィールドであってはなりません

  • Queryable Encryption を使用するシャーディングされたクラスターのトランザクションの場合、 readConcernsnapshotに設定する必要があります。

  • Queryable Encryption は、 マルチドキュメントの更新操作 をサポートしていません。 db.collection.updateMany()はサポートされていません。

  • Queryable Encryption は、 マルチステートメントのアップデートまたは削除操作をサポートしていません。 複数のアップデートまたは削除操作を持つdb.collection.bulkWrite()はサポートされていません。

  • Queryable Encryption はdb.collection.findAndModify()引数を制限します。

    • fields は許可されていません

    • new は false である必要があります

  • アップサート操作を実行すると、フィルター内の暗号化されたフィールドは挿入から除外されます。

  • 同じコレクションでは、クライアント側のフィールドレベル暗号化と Queryable Encryption は併用できません。

    • Queryable Encryption は、 クライアント側のフィールド レベル暗号化 で暗号化されたコレクションからの移行をサポートしていません。 ドキュメントを復号化し、1 つずつ挿入する必要があります。

    • Queryable Encryption は、暗号化されていないコレクションからの自動移行をサポートしていません。 ドキュメントは 1 つずつ挿入する必要があります。

  • Queryable Encryption は新しいコレクションのみをサポートします。 既存のコレクションに Queryable Encryption を追加または削除することはできません。

  • 暗号化されたフィールドを含むコレクションの名前を変更することはできません。

  • jsonSchemaencryptキーワードが含まれている場合、Queryable Encryption コレクションの作成時にjsonSchemaからdb.createCollection()を指定することはできません。

    • jsonSchema encryptedFieldsjsonSchemadb.createCollection()に暗号化されたフィールドの検証が含まれていない限り、 と の両方を に指定できます。

  • Queryable Encryption は、ビュー時系列コレクション、またはCapped コレクション をサポートしていません。

  • Queryable Encryption は、 TTL インデックスまたは一意のインデックスをサポートしていません。

  • jsonSchema検証を無効にすることはできません。

  • コレクションでencryptedFieldsオプションが使用される場合:

    • validationLevelnoneに設定することはできません。

    • validationActionwarnに設定することはできません。

  • Queryable Encryption が設定されていないMongoClientからコレクションを削除しても、関連付けられているメタデータコレクションは削除されません。 メタデータ コレクションを削除する前に暗号化されたフィールドを含むコレクションを削除すると、 mongodは警告を記録します。

Tip

Queryable Encryption 用に構成されたMongoClientでコレクションを削除すると、互換性のあるドライバーは関連するメタデータ コレクションも削除します。

Queryable Encryption を使用するコレクションは常に明示的に作成します。 暗黙的なコレクション作成では、必要なインデックスとメタデータ コレクションが作成されないため、クエリのパフォーマンスが低下します。

encryptedFieldsMapでコレクションを作成するときにフィールドに指定するクエリタイプは不変です。 既存のフィールドに新しいクエリ タイプを追加することはできません。また、既存のクエリ タイプを変更することもできません。

暗号化されたフィールド名は不変です。 たとえば、暗号化するフィールドとしてssnを指定した場合、フィールド名をtaxPayerID$renameすることはできません。

暗号化されたフィールドを持つコレクションに対するビューに対するサポートされていないクエリを防ぐために、アプリケーションは自動暗号化検証に依存することはできません。

Queryable Encryption で暗号化された値を含むコレクションのビューに対するクエリでは、基礎となるビュー集計パイプラインまたはクエリが暗号化されたフィールドを参照している場合、予期しない結果や不正確な結果が返されることがあります。 Queryable Encryption で暗号化された値を含むコレクションにビューを作成する場合は、予期しない結果や誤った結果のリスクを軽減するために、暗号化されたフィールドでの操作を避けてください。

ビューの詳細については、「ビュー 」を参照してください。

Queryable Encryption は、ユーザー指定の照合またはコレクションのデフォルトの照合を無視します。 暗号化により、フィールド値がぼかして表示され、通常の照合動作が妨げられます。 暗号化されたフィールドに対する照合を区別するクエリでは、予期しない結果や誤った結果が返されることがあります。

照合の詳細については、照合ドキュメント を参照してください。

Queryable Encryption 互換ドライバーには、自動暗号化 でサポートされている操作のリストがあります。 サポートされていない読み取りおよび書込み操作の場合、基礎となるサポート ライブラリはコレクション カタログをイントロスペクションしてデフォルトの照合を識別できません。 したがって、アプリケーションは Queryable Encryption の検証に依存して、照合のデフォルトを持つ暗号化されたフィールドに対するクエリを防ぐことはできません。

一意なインデックスは、インデックス キーで暗号化されたフィールドが指定されている場合、一意であることを保証できません。

Queryable Encryption では、同じ入力でも、常に異なる暗号化値が出力されます。 サーバーでは、復号化された値が一意でない場合でも、暗号化された各値が一意であると見なされます。 つまり、コレクションでフィールドに対してインデックスによって強制される一意の制約を使用しても、コレクションにはそのフィールドのプレーンテキスト値が重複する複数のドキュメントを含めることができます。

自動暗号化用に構成された Queryable Encryption と互換性のあるドライバーは、 自動暗号化の一部の操作をサポートします。 サポートされていない読み取りおよび書込み操作の場合、基礎のライブラリはインデックスカタログを内部検証して、特定のフィールドを一意として識別することはできません。 アプリケーションは、ランダムに暗号化されたフィールドでの一意の制約違反を防ぐために、自動暗号化検証に依存することはできません。

MongoDB によって自動生成された値に依存しているため、 _idフィールドを暗号化するように Queryable Encryption を構成することはできません。

自動暗号化は、コマンド、クエリ演算子、更新演算子、集計ステージ、および集計式のサブセットをサポートします。 サポートされている操作のリストについては、「自動暗号化がサポートする操作 」を参照してください。

戻る

互換性