2015年

12月

14日

【iDempiere Lab】iDempiereを早く&軽くするパラメータ設定4:更新ログ

 オープンソースのERP iDempiereには、データの更新履歴(以下、"更新ログ")を取得するログ管理の機能が備わっています。しかし、この更新ログの取得の設定が、iDempiereをインストールした初期の状態で適切な設定になっているとは限りません。

 iDempiereでは、更新ログを取得するかどうかは、データベーステーブルやそのカラム、そして職責(Role)毎に細かく設定する事ができます。更新ログを取得するかどうか適切に設定しなおす事により、データ更新に係るサーバー側の処理を軽減する事ができます。

更新ログの取得は必要最小限にする(不要な更新ログは取得しない)

更新ログの取得は、カラム毎に設定するのがベスト!

 iDempiereでは、更新ログを取得するかどうかは、データベーステーブルの項目(カラム)毎に細かく設定する事ができます。基本的にiDempiereの初期設定では非常に多くの項目が更新ログを取得する設定になっていますので、更新ログを取得する必要のない項目は、取得しない設定に変更する事により、データ更新に係るサーバー側の処理を軽減する事ができます。

 iDempiereでは、テーブルや職責(Role)毎にも、更新ログを取得するかどうか大きな方針として設定する事ができますが、もっとも大きな効果を得たいのであれば、カラム毎に細かく設定するのがベストです。

 カラムの設定を1つ1つ判断して、適切に設定していくのは気の遠くなるような作業ですし、1つ1つの設定変更の効果を、実感する事はできないと思います。しかし、チリも積もれば山となりますので、主要なテーブルだけでも、更新ログの取得の設定を見直しする事をおススメ致します。

【技術情報】カラム毎に更新ログの取得を設定するのがベストな理由

 前述している通り、iDempiereの更新履歴の管理機能では、カラムという細かい単位だけではなく、テーブル単位や職責(Role)単位でも大きな方針として更新ログを取得するかどうか設定する事ができます。テーブル単位と職責(Role)の両方の設定で更新ログを取らないようになっていれば、iDempiereは更新ログは取らないので、サーバー側の負担は確かに軽くなります。しかし、さらに少しでも処理を軽くしたいのであれば、カラム毎に変更ログを取得するかどうか細かく設定するのがベストです。

 

   更新ログを取得するかどうかの判断として、iDempiereはまずカラムの設定で更新ログを取得する設定になっているかどうかチェックします。

 カラムの設定で更新ログを取得しないようになっていれば、それでもうログの取得処理は行われません。

 カラムの設定で更新履歴を取得するようになっていれば、次に職責(Role)とテーブルのログの取得の設定を確認します。それで、どちらかが更新ログを取得するように設定されていれば、iDempiereは更新ログを取得します。

 

 更新ログを取得するかどうかの最初の判定がカラムの設定ですので、その後の判定処理を必要としない分、サーバー側の処理がほんの少し軽くなります。 

【技術情報】テーブルと職責の両方とも更新ログを取得しない設定になっていても、更新ログを取得するケース

 前述している通り、iDempiereはテーブルと職責で、大きな方針として更新ログを取得するかどうか設定する事ができます。カラムの設定で更新ログを取得するようになっており、さらにテーブルか職責のどちらかの設定で更新ログを取得するようになっていれば、iDempiereは更新ログを取得します。

 しかしながら、テーブルと職責の両方とも更新ログを取得しない設定になっているにもかかわらず、更新ログを取得する場合があります。それは次のケースです。

  • アプリケーション辞書の設定に関するテーブルの多くは、テーブルと職責の両方で更新ログを取得しないようになっていても、更新ログを取得します。 

 正確な表現としては、エンティティタイプをカラムとして持っているテーブルは、テーブルと職責の両方の設定で更新ログを取得しない設定になっていても、iDempiereは更新ログを取得します。

 しかし、この場合でもカラムで更新ログを取得しないようになっていたら、更新ログは取得しませんので注意して下さい。

【技術情報】テーブルの設定で更新ログの設定を変更した場合には、それを有効にするためにはサーバーの再起動が必要

 アプリケーション辞書のテーブルの設定で、更新ログの設定を変更した場合、その設定を有効にするためにはサーバーの再起動が必要です。

中小企業、零細企業において更新ログの取得はどこまで必要なのか

 システム監査が行われるような大企業においては、内部統制上、更新ログの取得は必須でしょう。そのようなケースでiDempiereを使用する場合には、上述した内容にそって設定を見直して頂ければと思います。

 ここでは、システム監査など行われない(であろう)、中小企業、零細企業において更新ログの取得がどこまで必要が考えたいと思います。

レコード情報ポップアップウィンドウ
レコード情報ポップアップウィンドウ

 iDempiereでは更新ログの取得をしない場合でも、必ずそのデータを登録した人とその日時、そして直近でデータを更新した人とその日時は記録しています。私は、中小企業、零細企業であれば、これで十分なのではないかと思っています。

 仮に誰かが間違ってデータを更新してしまっていたとして、その犯人探しが更新ログを確認する事でできたとして、中小企業、零細企業においてメリットはほとんど無いのではないかと思います。

 間違ったデータは、修正するしかありません。更新ログを取っていればボタン一つで元に戻す機能もあるのですが、この機能が必要なケースは稀でしょう。犯人探しをして、その犯人がわかった所で、その犯人も故意で間違ったわけではないでしょうから、気まずい雰囲気になるだけだと思います。(´・ω・`)

 それよりも、サクサクとシステムが動いで、業務がはかどった方がメリットが大きいと思います。

 ですので、中小企業、零細企業においては、思い切って更新ログを取得しない設定にしてしまっても良いのではないかと個人的には思っています。そこまで、さすがに割り切れなくても、トランザクションデータの一部の項目だけ更新ログを取得するようにするなど、更新ログを取得するカラムを厳選する方針が良いのではないかと思います。

【補足説明】JPiereでは主要テーブルで更新ログを取得するカラムを厳選しています

 JPiereではバージョン3.1より主要テーブルで更新ログを取得するカラムを厳選しています。そして、テーブルの設定上は、基本的に更新ログは取得しない設定にしています。

 これは、JPiereを手間なく簡単に使って欲しい、中小企業、零細企業において、更新ログの取得の必要性は低いだろうという判断のもと、もし必要であれば、そこだけ設定変更してらもう事を意図しています。

 更新ログのテーブルがiDempiereで一番レコード数が多くなるテーブルでもありますので、この設定によりデータ削除等のメンテナンスする頻度も少なくする事も意図しています。

関連するコンテンツ