Database Rotation
Database Rotation は、テーブルサイズの増加を管理し、古いデータをアーカイブします。
- テーブルローテーションは、少数のテーブル間でローテーションし、古いテーブルを削除して新しいデータを再利用することで機能します。
- テーブル拡張は、定期的に新しいテーブルを開始し、古いテーブルを簡単にアーカイブしてシステムから削除できるようにすることで機能します。
- テーブルシャーディングは、レコードをドキュメント ID で単一のテーブルにグループ化できるようにすることで機能します。
テーブルローテーションプラグイン
- Database Rotations プラグインは、自動的にテーブルを含めずにテーブルのローテーションと拡張を有効にします (com.snc.db.rotation)
- Database Rotations Default Tables プラグインは、特定のテーブルにテーブルローテーションと拡張を適用します (com.snc.db.rotation_default_tables)
| 機能 | テーブルの適用先 |
|---|---|
| テーブルローテーション | syslog
|
| テーブル拡張 | sys_audit
|
文字列に変換された参照値
アーカイブされたデータは、他のテーブルへの参照フィールドを持たないフラットファイルとして格納されます。アーカイブプロセスは、他のテーブルへの参照を文字列値に変換します。
参照フィールドの場合、文字列は発信者のユーザー名などの表示値を使用します。たとえば、インシデントの [発信者] 参照フィールドには、文字列「ITIL User」が表示されます。参照がドキュメント ID で、アーカイブルールに関連ドキュメント ID をアーカイブするオプションが含まれている場合、文字列は関連レコードのドキュメント ID です。
アーカイブレコードは、参照値に対する将来の変更を受け取らないことに注意してください。たとえば、「John Smith」のユーザー名を「John A Smith」に変更すると、インシデントテーブルとユーザーテーブル間の参照により、すべてのアクティブなインシデントレコードで発信者が自動的に「John A Smith」と表示されます。ただし、アーカイブされたすべてのインシデントレコードには、アーカイブ時に存在していたユーザー名が表示されます。「John Smith」のインシデントはこのユーザーを引き続き参照します。同様に、システムからユーザーを削除すると、現在のインシデントでは削除されたユーザーは発信者として表示されなくなります。ただし、アーカイブされた時点でユーザーが存在していると、ユーザーとして「John Smith」という文字列が表示され続けるアーカイブ化済みインシデントがある場合があります。
テーブルローテーションと拡張
システム定義テーブルローテーションモジュールを使用すると、新しいテーブルローテーション、新しいテーブル拡張、新しいテーブルシャードを定義したり、既存のテーブルを変更したりすることができます。
- 名前:テーブル名から自動生成されます
- 期間:関数の全体的な時間パラメーター
- 初期化済み:機能をアクティブ (true) または非アクティブ (false) に設定します
- ローテーション:期間内に作成されるテーブルの数
- タイプ:拡張 (アーカイブ)、ローテーション (削除)、またはシャード (ドキュメント ID) 機能を示します
新しいローテーションを定義すると、スケジュールが作成され、その後、新しいデータがローテーショングループのテーブルのいずれかに書き込まれます。グループには、元のテーブルといくつかの追加のテーブルが含まれていることがわかります。ローテーションを削除すると、追加のテーブルとすべてのデータが削除されるため、データが必要な場合はローテーションを削除しないでください。