監査セットと履歴セットの違い
監査 [sys_audit]、履歴セット [sys_history_set]、および履歴 [sys_history_line] テーブルは同じデータを格納しますが、目的やデータの管理方法は異なります。
監査 [sys_audit] テーブル
監査 [sys_audit] テーブルには、すべてのレコードの履歴情報が格納されます。これらのレコードは、アドミニストレーターが監査済みレコードの履歴を常に追跡できるように、永久に保持されるようになっています。監査レコードの数は時間の経過とともに増加するため、履歴情報について監査テーブルを直接クエリーするのは非効率的です。実際に履歴情報を表示する必要がある、より少量のサブセットレコードでのみクエリーを実行する方がはるかに効率的です。
履歴セット [sys_history_set] テーブル
履歴セット [sys_history_set] テーブルは、監査対象テーブルのどのレコードに履歴情報があるかを識別します。履歴 [sys_history_line] テーブルには、発生したフィールド値に加えた実際の変更が保存されます。
- ユーザーがレコードを作成するか、その履歴をリクエストすると、必要に応じて、監査テーブルから履歴セットと履歴レコードが自動的に生成されます。
- 履歴セットと履歴レコードには、システム内のすべての変更の完全な履歴ではなく、ユーザーが履歴情報の作成やリクエストを行った、レコードの履歴情報の最近のサブセットのみが含まれます。
- 監査データに加えて、履歴セットには、レコードの挿入中に設定された情報 (ジャーナルフィールドエントリなど) も含まれます。レコードの作成前に作成したジャーナルフィールドエントリは、レコード作成時に作成されたジャーナルエントリと同じ方法で処理されます。これらのジャーナルエントリは、関連レコード自体と同じ作成時刻と作成者のデータで履歴セットに表示されます。
履歴セットと履歴レコードは次のように制限されます。
- テーブルクリーナーを使用して、30 日間更新されていない履歴セットレコードを削除できます。
- テーブルローテーションを使用して、4 つの履歴テーブルを 7 日ごとにローテーションします。28 日以上経過した履歴レコードは削除されます。
後日、履歴情報が再度必要になった場合は、監査ソースレコードから再生成することができます。
履歴セットレコードが生成された後は、コンテキストメニューの [履歴] で監査レコードではなく履歴セットが使用されます。ユーザーの側から捉えた場合、同じ履歴データを同じユーザーインターフェイスで使用できますが、情報の保存方法は異なります。