データ抽出エージェント

時間トリガーエージェントは、 IBM Sterling® Order Managementシステム用に構成される。 このエージェントは構成された時間間隔で実行されてデータを抽出します。 データを取得する必要があるときに確実にデータが抽出されるように、 この間隔や頻度をエージェントに構成できます。
また、複数のスレッドおよび JVM を使用して実行するようにエージェントを構成することもできます。
  • エージェントが n 分ごとにトリガーされるように構成できます。 デフォルトでは、 エージェントは 10 分ごとにトリガーされます。
  • エージェントは複数の並列スレッドと複数の JVM を使用して実行するように構成することもできます。 デフォルトでは、 エージェントは 20 個のスレッドを使用して実行されます。

データ抽出は、特定の時間に専用エージェント・サーバー上で単一のデータ追加エージェント基準のみを使用して実行する必要があります。 複数のエージェント条件を使用して同時にデータ抽出を実行してはなりません。

ご使用の環境内で機能するようにデータ抽出エージェントを構成する方法について詳しくは、 データ抽出の構成を参照してください。

データ抽出プロセス

データ抽出エージェントがトリガーされると、以下のステップが実行されます。
  1. データ抽出エージェントにより、抽出ツールが実行され、実動データベースから抽出テーブル構成が読み取られます。 有効な各表構成の状況がチェックされ、 データを抽出する必要のある表が判別されます。 データ抽出プロセスを開始する前に、バックアップ・データベースがダウンしているか正しく構成されていない場合、抽出ツールは警告メッセージを表示します。
    注:
    • 初めて抽出ツールを実行し、警告メッセージが表示された場合は、バックアップ・データベース構成を確認して、抽出ツールを再実行してください。 それ以外の場合は、データ抽出ツールがバックアップ・データベースとの接続を確立するまで待ちます。
    • バックアップ・データベースが保守モードまたは再生モードの場合、データ抽出は遅延します。
    エージェントが初めて実行されるときには、 この n 日間に変更されたすべてのレコードが照会に含められます。 ここで、n は、指定された FirstRunExtractInDays 属性によって指定されます。 照会が後で実行されるたびに、抽出エージェントは開始時刻を、その照会に対して抽出ツールが最後に実行された時点からの終了時刻と見なします。 現在時刻から 1 時間引いた時刻が、 終了時刻と計算されます。 1 時間の間隔により、抽出されるすべてのデータがバックアップ・データベースにコピーされます。 また、1 時間の間隔では、すべてのデータがバックアップ・データベースにロードされ、このツールは最新のデータ・セグメントに負荷をかけません。
    注: デフォルトでは、 yfs.yfs.coc.dataextract.fetch.maxhoursold プロパティーの値> 1 でオーバーライドされない限り、エージェントは 1 時間の時間間隔を使用します。 yfs.yfs.coc.dataextract.fetch.maxminsold プロパティーを使用して、1 時間の値を減らすこともできます。
  2. その後、抽出ツールは、表構成に基づいて照会を形成します。
  3. 抽出ツールはバックアップ実動データベースに接続し、データベースに対して SQL 照会を実行して、照会結果に一致するデータを取得します。 データ抽出ツールは、バックアップ・トランザクション・データベースからのみデータを抽出し、1 次実動データベースからは抽出しません。 データをバックアップ・データベースから抽出することで、抽出プロセスが 1 次データベースのパフォーマンスに影響することはありません。

    抽出ツールは、抽出プロセスの開始時刻と終了時刻の間のデータを抽出します。 これらの時刻は、 抽出プロセスの前回の実行時に最後に抽出されたレコードに対して、 最後に行われた変更のタイム・スタンプに基づいています。

    抽出に関わるデータ量が多すぎる場合、 データは、別の開始時刻と終了時刻の範囲を持つ別のジョブで抽出される可能性があります。 抽出ツールは、表構成ごとに、抽出されるデータの対応する量を検査します。 次に、エージェントは、必要な数のデータ抽出ジョブを作成します。

  4. 抽出ツールは、照会結果を CSV 形式の出力ファイルに書き込み、各ファイルを圧縮 (.zip) ファイルに組み込みます。 各出力ファイルの名前は、対応するデータ転送用の圧縮ファイルと同じです。 ファイル名は、次の命名規則を使用します。
    • taskID__tableName__extractQueryStart_extractQueryEnd_jobNumber_of_totalNumberOfJobs.csv
    各項の説明は次のとおりです。
    taskID
    タスクの ID。
    tableName
    データベース表名。
    extractQueryStart
    抽出プロセスが開始した時点のタイム・スタンプ。
    extractQueryEnd
    抽出プロセスが完了した時点のタイム・スタンプ。
    jobNumber_of_totalNumberOfJobs
    データ抽出ジョブの総数に対する、データ抽出ジョブのシリアル番号。
  5. 解凍ツールは、ストリーム内の圧縮ファイルをファイル転送サーバーに送信します。 IBM Sterling Order Managementシステム環境内では、ファイルはファイルシステムに書き込まれない。 最後のジョブが処理されると、エージェントは、実行される表構成ごとに、 すべてのジョブのすべてのファイルのファイル転送が完了したかどうか確認します。 転送が完了すると、 エージェントは、各表構成に 0 バイトの .DONE ファイルを作成して転送します。

出力ファイルの形式

各データ抽出ジョブの出力は、CSV 形式のファイルにフォーマットされます。
  • 構成管理サービスで定義されているのと同じ順序で抽出される各列のコンマ区切り値
  • 列名のヘッダー行はありません。
  • それぞれの値は二重引用符で囲まれます。 値の中に実際の二重引用符がある場合、その二重引用符は別の二重引用符でエスケープされます。
  • 改行文字が含まれる値 (例えば、-remove all) は、削除されます。
次に、生成された CSV ファイルは、 構成されたファイル転送サーバーに転送するために圧縮ファイル (.zip) 内に含められます。

サンプルの実行シナリオ

以下の条件および構成された設定で実行するように、抽出を構成します (現在の日付を 2016 年 6 月 24 日と想定しています)。
  • タスク OrderExt およびデータベース表 YFS_ORDER_HEADER の頻度は 24 時間です。 データ抽出は、毎日 8:00 AM ころに発生します。
  • 前日の 7:00 AM から当日の 7:00 AM の間に、24,000 のレコードが存在します。
  • 内部メモリーの計算により、抽出プロセスが一度に抽出するレコード数は 7000 に制限されます。
データ抽出エージェントが当日の午前 8:00 以降にトリガーされると、データ抽出ツールはレコードを抽出するための 4 つのジョブを作成します。 それぞれのジョブは単独で処理されます。 ジョブごとに必要なデータがフェッチされ、生成される出力ファイル内に含められます。 その後、ファイルは構成済みのファイル転送サーバーに転送されます。

生成される出力ファイルは、以下のファイルのようになります。 各ファイルには、ファイル名の中に抽出プロセスのタイム・スタンプが含まれています。

データ抽出ツールからの出力例を示す表。
# ファイル名
1 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_1_of_4.zip 7000
2 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_2_of_4.zip 7000
3 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_3_of_4.zip 7000
4 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000_4_of_4.zip 3000
5 OrderExt__YFS_ORDER_HEADER_20160623050000_20160623070000.DONE  

特定の表の 1 つ以上のファイルが抽出または構成済みファイル・ストレージ・サービスへの転送に失敗し、他のファイルが正常に抽出または転送された場合、表抽出全体が再度処理されます。 正常に抽出および転送されたファイルについても、抽出および転送が再度行われます。

例えば、このサンプルの抽出シナリオでは、 ジョブ 1 とジョブ 4 が失敗してジョブ 2、ジョブ 3、およびジョブ 5 が成功した場合、プロセス全体が再度実行されます。 プロセスが再度実行されると、5 つのすべてのジョブのファイルが抽出および転送され、 ジョブ 2、ジョブ 3、およびジョブ 5 のファイルも再度転送されます。

データ抽出ジョブのクリーンアップ

データ抽出を広範囲にわたって使用している場合は、データ抽出ジョブ・テーブルがすぐにいっぱいになります。 この表のデータは、過去に失敗した抽出をトリアージするのに役立ちます。 そのため、直近過去のデータを削除することは推奨されません。 ただし、この表に対する照会のパフォーマンスを向上させるには、古いデータの大部分をメイン表からクリーンアップする必要があります。

データ抽出ジョブを開始する前にテーブルをクリーンアップするには、 yfs.yfs.coc.dataextract.jobpurge.leadDays プロパティーを設定して、テーブルからレコードを削除する必要がある日数を指定できます。

このプロパティーはデフォルトでは設定されません。つまり、ジョブ・レコードはデフォルトでクリーンアップされません。 このプロパティーの値は 120 日より大きくなければなりません。

このプロパティーを 120 以下の値に設定すると、エラーがスローされます。 120 日までの日数のレコードは削除できません。 何らかの理由でクリーンアップ・プロセスが失敗した場合でも、データ抽出プロセスは、データ抽出の基本タスクを続行します。