データアーカイブのメリットと制限についての質問

d-aizawa
Kilo Sage

コミュニティの皆様、お世話になっております。

私のプロジェクトでは、ログ(syslog・sysevent・syslog_transaction)テーブルを

アーカイブしたいという要望があり、調べています。

ただし、ローテンションテーブルはアーカイブできない制約がありますので、

1件テーブルAを作成して、そのテーブルに1日1回上記ログテーブルのレコードを一括Insertした後、

アーカイブしようと考えております。

データアーカイブについて、以下の不明点があります。

知見ある方はご教示頂けないでしょうか。

・アーカイブはXML形式になると思いますが、具体的にどのくらい容量削減になる?

 (アーカイブしないとテーブルAにレコードが毎日万件レベルで溜まってしまうので、
 それと比べて効果があるか)

 

・アーカイブできるレコード数について、上限はある?

・その他懸念・注意事項があれば、ご教示頂きたいです。

1件の返信1

iwai
Giga Sage

「ローテーションテーブルはアーカイブできない制約がある」という前提から推測すると、この要件で書かれている「アーカイブ」とは「アーカイブルールによるレコードの退避のこと」であると解釈しました。要件としてログが格納されているローテーションテーブルはアーカイブルールで処理できないのでテーブルを作成してレコードをコピーしてアーカイブルールでアーカイブする。

アーカイブ |一般的な概要 - サポートとトラブルシューティング (servicenow.com)

レコードのアーカイブ (servicenow.com)

 

このアーカイブルールは、XML形式でのアーカイブはしません。メインテーブルのレコードをアーカイブ用のテーブルにレコードを移動する処理になります。上記の記載も参考にしてください。

このアーカイブの処理として、アーカイブできるレコード数の上限は、調べた限りなさそうです。

この処理で要件はあっているでしょうか。

 

今回の要件のアーカイブとはこのアーカイブルールの要件ではなく、バックアップ目的のデータ退避で、XML形式のデータにして、外部のストレージサーバーにでもXMLファイルを蓄積していく。そう言う要件でしょうか。

その場合、ログテーブルもそのままXML形式のファイルにすることが出来ます。別のテーブルに退避する必要はありません。「ローテーションテーブルはアーカイブできない」とはアーカイブルールでは処理できない意味です。

ServiceNowのデータベースのデータ容量とXML形式のテキストファイルにしたときのデータ容量は、データの媒体や形式や格納方法が違うので単純比較したりできるようなものではないです。 XML形式のデータは他のテキスト形式データと比較して少々大きくなります。XMLファイルを小さくしておくならZIPなどで圧縮することでとても小さくなります。
データベースのデータをXMLファイルに退避して、データベースから削除するとしたら、これはデータベースのレコード数が削減されるため、処理速度が改善するのでとても良い効果があるとは思います。 
しかし今回の対象がServiceNowのシステムログならば、XML形式で退避してもログを削除することは普通しません。ログテーブルはローテーションテーブルなので自動的に古いものは削除されます、何万件あっても、そのまま使うことが最も良いです。システムのログを意図的に消す行為は危険だと思っています。

XMLファイルをエクスポートできる最大数のプロパティ―はあります。最大数があっても分割してダウンロードすれば問題はないです。
エクスポート制限 (servicenow.com)