開発Blog

IM-共通マスタ CSVスナップショットインポートのパフォーマンス検証

投稿日:2013-09-04 更新日:

WebPlatform/AppFramework Ver.7.2 パッチ6の要件16570にて、IM-共通マスタからアプリケーション共通マスタへの同期処理のパフォーマンス改善を行い、下記効果を確認しました。

インポート種別と改善効果

インポートを行う度の処理時間上昇率の改善

同データ量でのインポート処理時間の改善率

ユーザプロファイル 平均 9% が 8% に改善 約50%~60%改善
会社・組織 平均 26% が 12% に改善 約50%~80%改善

たとえばCSVのスナップショットインポートに3時間かかっていたのが1時間ほどに短縮されるような改善効果が期待できます。

検証内容および検証結果については下記の通りです。

検証環境および検証内容

下記環境にて、ユーザアカウント500人、102組織、19役職から構成される会社のデータを、毎日連続して同じデータを10日間インポートします。
※英語と日本語の多言語環境のため、データ量は2倍となります。

env.png

ユーザプロファイル比較検証結果

ユーザプロファイルのデータを1日ごとに10日間連続でインポートした場合をパッチ5とパッチ6の環境での比較検証結果です。
※1回目はデータが空の状態からインポートしています。

IMMUserImport.png

会社・組織比較検証結果

会社・組織(組織/組織内包/役職/組織所属/組織所属役職)のデータを1日ごとに10日間連続でインポートした場合をパッチ5とパッチ6の環境で比較検証結果です。
※1回目はデータが空の状態からインポートしています。

IMMComapnyImport.png

検証結果考察

はじめに、要件16570の改善内容の詳細は下記の通りです。

終了日移動処理 スナップショットインポート処理では、インポートの開始日、終了日と既存データの開始日、終了日を比較して処理を分岐しています。
インポートの終了日と対象データの終了日を比較して、インポートの終了日が小さい場合は対象データの分割処理を行い、それ以外の場合は対象データの終了日移動処理を行っていました。
インポートの終了日と対象データの終了日が等しい場合は終了日移動処理を行う必要はないので、処理をしないように改善しました。
主所属取得処理 同期処理の中で、組織に所属するユーザのリスト、または、ユーザが所属する組織のリストを取得する箇所があります。
ここでは主所属と主所属以外の所属を取得していますが、主所属と主所属以外の所属を一度に取得できるため、一度に取得するように改善しました。
所属同期処理期間 組織の同期処理の中で、所属の同期処理を行うときに、該当所属の全期間を同期対象として処理をしていました。これを、同期処理の対象期間内に絞って所属の同期処理を行うように改善しました。

パッチ5の場合、インポート回数が増えていくと遅くなる原因については以下のように分析しております。

IM-共通マスタで組織/組織内包情報をインポートした場合、アプリケーション共通マスタでは新たな会社組織構成のバージョンが作成されます。
バージョンが増えることで、パッチ5では全バージョンで整合性チェックを行っていたため、インポートする度にバージョンが増え、インポートの回数を重ねる度にインポート処理が遅くなっていきます。。

パッチ6では、[終了日移動処理]と[所属同期処理期間]の改善を行いました。この度の結果は、この改善による効果と分析しております。スナップショットで過去のデータをインポートするようなケースは稀で、未来日のデータをインポートするケースがほとんどと想定されます。そのため、お客様運用環境にて同様の改善効果が期待できると考えております。

ただ、お客様環境の登録されているデータ量や、インポートするデータの内容やインポートするデータ量により、この効果には違いがあると考えられます。

できればパッチ6適用後のインポート処理のお客様環境での改善結果を是非コメントいただきたいです。
「今まで??時間かかったのが、??時間になりました!」という声をお待ちしております。
逆に「効果がありませんでした。。」というお話もあればデータ量やインポートのデータ内容について教えてください。

皆様のコメントをお待ちしております。

ちなみに、今回のパフォーマンス改善では、IM共通マスタのAPI内部で実装された同期処理の1つ1つはすべて必要な処理で、仕組み自体を変えることはできません。。。
そこで、少しでも省ける処理、またはまとめられる処理はないかと約1ヶ月にわたり徹底的に調査し、効果の高そうな3箇所を対応しました。なかなか大変でした。。。。。

-開発Blog
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

intra-mart製品の外字対応方針について

<intra-mart製品の外字対応方針について> 以前より問い合わせの多いintra-mart製品の外字対応方針について資料をまとめましたので参考にしてください。 (1)BM/FW Ver.5 Fo …

no image

intra-mart Advent Calendar 2013 第12日:認可リソースの拡張方法

この記事は、intra-mart Advent Calendar 2013 第12日の記事です。 今回は「認可リソースの拡張方法」をご紹介したいと思います。 intra-mart Accel Plat …

no image

データベースの登録、更新、削除メソッドをカスタマイズする

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。 最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 データベースを操作するプログラムを …

no image

intra-mart Advent Calendar 2013 第17日:Warファイル作成時の実行環境の違いについて

この記事は、intra-mart Advent Calendar 2013 第17日の記事です。 IM-JugglingでWarファイルを作成する際、以下の画面で、実行環境という項目があり、選択するよ …

no image

ERP連携モジュール(SAP)の実現方法

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   ERP( …