インポート Pro

操作:レコードのインポート ProStandard Edition+

紹介

インポート Pro プラグインは、通常のインポート機能に加えて、さらに強化された機能を提供します。

インストール

このプラグインは非同期タスク管理プラグインに依存しています。使用する前に、非同期タスク管理プラグインを有効にする必要があります。

機能強化

20251029172052

  • 非同期インポート操作に対応しており、独立したスレッドで実行されるため、大量のデータをインポートできます。

20251029172129

  • 高度なインポートオプションに対応しています。

利用ガイド

非同期インポート

インポートを実行すると、インポート処理はユーザーの手動設定なしに、独立したバックグラウンドスレッドで実行されます。ユーザーインターフェースでは、インポート操作を開始した後、右上に現在実行中のインポートタスクが表示され、リアルタイムでタスクの進捗状況を確認できます。

index-2024-12-30-09-21-05

インポートが完了した後、インポートタスクからインポート結果を確認できます。

並行処理について

非同期タスクの並行実行によるシステムリソースの消費を制限したい場合は、以下の環境変数を使用して制御できます。

  • ASYNC_TASK_MAX_CONCURRENCY

非同期タスクの並行実行数を制限します。デフォルト値は 3 です。

  • ASYNC_TASK_CONCURRENCY_MODE

並行実行の制限モードを指定します。選択可能な値は appprocess で、デフォルトは app です。

この環境変数の値が app の場合、各サブアプリケーションの最大並行非同期タスク実行数を ASYNC_TASK_MAX_CONCURRENCY で指定した値に制限します。

この環境変数の値が process の場合、プロセス内のすべてのサブアプリケーションの並行タスク実行数の合計が ASYNC_TASK_MAX_CONCURRENCY で指定した値を超えないように制限します。

  • ASYNC_TASK_WORKER_MAX_OLDASYNC_TASK_WORKER_MAX_YOUNG

非同期タスクを実行する worker スレッドに割り当て可能な最大オールド世代ヒープメモリ(MB)とヤング世代ヒープメモリ(MB)を制限します。

パフォーマンスについて

大規模なデータインポートのパフォーマンスを評価するため、さまざまなシナリオ、フィールドタイプ、トリガー設定で比較テストを実施しました(サーバーやデータベースの構成によって結果は異なる場合がありますので、あくまで参考としてください):

データ量フィールドタイプインポート設定処理時間
100万件文字列、数値、日付、メールアドレス、長文テキスト・ワークフローをトリガー:なし
・重複識別子:なし
約1分
50万件文字列、数値、日付、メールアドレス、長文テキスト、多対多・ワークフローをトリガー:なし
・重複識別子:なし
約16分
50万件文字列、数値、日付、メールアドレス、長文テキスト、多対多、多対一・ワークフローをトリガー:なし
・重複識別子:なし
約22分
50万件文字列、数値、日付、メールアドレス、長文テキスト、多対多、多対一・ワークフローをトリガー:非同期トリガー通知
・重複識別子:なし
約22分
50万件文字列、数値、日付、メールアドレス、長文テキスト、多対多、多対一・ワークフローをトリガー:非同期トリガー通知
・重複識別子:重複を更新、5万件の重複データあり
約3時間

上記のパフォーマンステスト結果と既存の設計に基づき、影響要因について以下の説明と提案があります:

  1. 重複レコードの処理メカニズム:「重複レコードを更新」または「重複レコードのみを更新」オプションを選択すると、システムはレコードを 1 件ずつ検索・更新するため、インポート効率が著しく低下します。Excel ファイルに不要な重複データが含まれている場合、インポート速度にさらに大きな影響を与えるため、インポート前に Excel ファイル内の不要な重複データをクリーンアップ(例:専門の重複排除ツールを使用)してからシステムにインポートすることをおすすめします。これにより、無駄な時間を省くことができます。

  2. リレーションフィールドの処理効率:システムがリレーションフィールドを処理する際、関連付けを 1 件ずつ検索する実装方式を採用しているため、大量データのシナリオではパフォーマンスのボトルネックとなる可能性があります。シンプルなリレーション構造(例:2 つのテーブル間の一対多関連)の場合、段階的なインポート戦略をおすすめします。まずメインテーブルの基本データをインポートし、完了後にテーブル間のリレーションを確立します。ビジネス要件によりリレーションデータを同時にインポートする必要がある場合は、上記の表のパフォーマンステスト結果を参考に、インポート時間を適切に計画してください。

  3. ワークフローの処理メカニズム:大規模なデータインポートのシナリオでワークフロートリガーを有効にすることは推奨されません。主な理由は以下の 2 点です:

    • インポートタスクのステータスが 100% と表示されても、すぐに終了するわけではありません。システムはワークフロー実行計画の作成に追加の時間を必要とします。この段階では、システムはインポートされた各データに対応するワークフロー実行計画を生成し、インポートスレッドを占有しますが、すでにインポートされたデータの使用には影響しません。
    • インポートタスクが完全に完了した後、大量のワークフローが並行実行されることでシステムリソースが逼迫し、システム全体の応答速度やユーザー体験に影響を与える可能性があります。

上記 3 つの影響要因については、今後さらなる最適化を検討していきます。

インポート設定

インポートオプション - ワークフローをトリガーするかどうか

20251029172235

インポート時にワークフローをトリガーするかどうかを選択できます。このオプションをチェックし、そのデータテーブルがワークフロー(データテーブルイベント)にバインドされている場合、インポートは各行に対してワークフローの実行をトリガーします。

インポートオプション - 重複レコードの識別

20251029172421

このオプションをチェックし、対応するモードを選択すると、インポート時に重複レコードが識別され、処理されます。

インポート設定のオプションはデフォルト値として適用されます。管理者は、アップロード者がこれらのオプション(ワークフローをトリガーするオプションを除く)を変更することを許可するかどうかを制御できます。

アップロード者の権限設定

20251029172516

  • アップロード者がインポートオプションを変更することを許可する

20251029172617

  • アップロード者がインポートオプションを変更することを禁止する

20251029172655

モードの説明
  • 重複レコードをスキップ:「識別フィールド」の内容に基づいて既存のレコードを検索し、レコードがすでに存在する場合はその行をスキップします。存在しない場合は、新しいレコードとしてインポートします。
  • 重複レコードを更新:「識別フィールド」の内容に基づいて既存のレコードを検索し、レコードがすでに存在する場合はそのレコードを更新します。存在しない場合は、新しいレコードとしてインポートします。
  • 重複レコードのみを更新:「識別フィールド」の内容に基づいて既存のレコードを検索し、レコードがすでに存在する場合はそのレコードを更新します。存在しない場合はスキップします。
識別フィールド

システムはこのフィールドの値に基づいて、行が重複レコードであるかどうかを識別します。