パフォーマンス最適化のための設計ガイドライン

パフォーマンスが最適化されるようデータフローを慎重に設計することは、Spectrum™ Technology Platformのパフォーマンス向上のために実行できる最も重要な作業です。これらのガイドラインでは、データフローのパフォーマンス最適化に使用できる手法について説明します。

ステージ数の最小化

Spectrum™ Technology Platformは、並列処理によって高パフォーマンスを実現します。従来のワークフロー サーバーの多くがワークフローの各ステップを逐次処理する (つまり、最初のステップですべてのデータを処理してから次のステップにデータを渡す) のに対し、Spectrum™ Technology Platformは各ステージをそれぞれのスレッドで非同期に処理するため、データフローの並列処理とパフォーマンスに優れた実行が可能です。

ただし、ある種のデータフローを実行するときプロセッサがオーバースレッドになる可能性があります。これは、"実際の仕事" を行う以上の時間がスレッドの管理に費やされることを意味します。130 の個別ステージを持つデータフローの場合、1 つまたは 2 つのプロセッサを搭載した小規模なサーバーでのパフォーマンスが非常に悪いことが確認されています。

したがって、パフォーマンスに優れたデータフローを設計するためにまず検討すべきは、必要なだけのステージを使用し、それ以上は使用しないということです。必要以上のステージを使用した例としては、次のものがあります。

  • 1 つで十分にもかかわらず複数のconditional routerを使用する
  • 複数のトランスフォームを 1 つのステージに結合する代わりに複数の Transformer ステージを定義する

幸いなことに、通常はこのようなデータフローを設計し直して、冗長または不要なステージを削除し、パフォーマンスを向上させることができます。

フローが複雑な場合は、埋め込みタイプのフローを使用してキャンバスの混乱を減らすことを検討してください。これでフローを容易に確認して操作できるようになります。埋め込みタイプのフローを使用しても実行時のパフォーマンス上のメリットはありませんが、Enterprise Designer でのフローの操作が容易になります。

レコード長の短縮

同時並行で実行されるステージ間でデータが渡されるため、入力レコードの長さについても検討する必要があります。一般的に、長いレコードの入力では、短いレコードの入力に比べ、処理に時間がかかります。これは、読み込み、書き出し、ソートするデータが多いためです。複数のソート操作を行うデータフローは、レコード長を短くすることで特に恩恵を受けます。非常に長いレコードを処理する場合は、Spectrum™ Technology Platformジョブを実行する前に入力から不要なフィールドを削除し、その後、生成された出力ファイルにフィールドを戻すことで、処理速度を向上させることができます。

ソートの適切な使用

ソート操作の最小化についても検討する必要があります。ソートは他の操作よりも時間がかかることが多いため、入力レコードの数およびサイズが増加すると問題となる場合があります。しかし、多くのSpectrum™ Technology Platformステージが、ソートされた入力データを必要としたり、優先したりします。例えば、Universal Addressing モジュールと Enterprise Geocoding モジュールは、入力が国および郵便番号によってソートされている場合にパフォーマンスが最適化されます。Intraflow Match や Interflow Match などのステージでは、入力が [グループ化方法] フィールドによってソートされている必要があります。外部ソート アプリケーションを使用して、入力データを事前にソートできる場合もあります。この場合、Spectrum™ Technology Platformデータフロー内でのソートより速く処理できます。