ドキュメントのプレイメージ
Overview
すべてのデータベースtrigger実行には、関連する変更イベントがあります。 これらの変更イベントをドキュメント プレイメージを含めるように構成できます。 プレイメージとは、変更前のドキュメントのスナップショットです。
例
プレイメージを含むコレクションの updateOne
について考えます。
pets.updateOne( { name: "Fido" }, { $inc: { age: 1 } } )
プレイメージは、書込み (write) 操作変更イベントに次のデータを追加します。
fullDocumentBeforeChange
フィールドの ドキュメントのプレイメージプレイメージ - 変更前に存在していたドキュメント全体{ "name": "Fido", "age": 3 } fullDocument
フィールドのドキュメントの変更後のイメージ変更後イメージ - 変更後すぐの完全なドキュメント{ "name": "Fido", "age": 4 }
パフォーマンス
MongoDB バージョン6.0以降を実行しているクラスターの場合、trigger はクラスターに組み込まれている変更ストリーム プレイメージ機能を使用します。 MongoDB の古いバージョンでは、プレイメージは oplog に直接保存されます。 これらはどちらもコレクションの各操作にストレージとコンピューティングのオーバーヘッドを追加するため、書込みスループットの高いコレクションではパフォーマンスの問題が発生する可能性があります。
ドキュメントのプレイメージの有効化
データベースtriggerを構成するときに、プレイメージを有効にできます。 Document Preimageは trigger 構成の設定です。 これを切り替えて、コレクションのドキュメント プレイメージを有効にします。
プレイメージが有効なコレクションの表示
ドキュメントのプレイメージを保存しているコレクションのリストを表示するには:
Linked Data Sourceの構成画面に移動します。
Advanced Configurationセクションを展開します。
このセクションにはPreimage Preferences by Collectionテーブルが含まれています。
この表では、oplog にプレイメージを保存するすべてのコレクションを一覧表示しています。 コレクションのプレイメージを有効にすると、すべてのコレクションに適用されます。 これには、別のアプリの trigger に関連付けられたコレクションが含まれます。 プレイメージを使用する trigger がないコレクションもここに表示されます。
コレクションのプレイメージを無効にする
App Services UI でコレクション レベルのプレイメージを無効にできます。
コレクションのプレイメージを無効にするには、以下の手順に従います。
(任意) コレクション内の trigger のドキュメント プレイメージを無効にします。 プレイメージを無効にした後も、プレイメージを持つ trigger は引き続き起動します。 しかし、変更イベントには
fullDocumentBeforeChange
フィールドはありません。 これには、他の App Services アプリの trigger が含まれます。コレクションが同期されたクラスターの一部である場合は、同期 を終了します。
[ Prename Preferences By Collection ] テーブルを表示します。 コレクションのDisableボタンを押します。 これにより、そのコレクションのプレイメージがオフになります。
コレクションが同期されたクラスターの一部である場合は、同期 を再度有効にします。
警告
同期終了後の同期の復元
Atlas Device Sync を終了して再度有効にすると、クライアントは同期できなくなります。 同期を復元するには、クライアントがクライアント リセット ハンドラーを実装する必要があります。 このハンドラーは、同期されていない変更を破棄したり、回復を試行したりできます。