※ 本記事は、Uma Shanker Oruganti, Priyesh Lakar, Debajyoti Royによる”Unlocking performance and efficiency: Enhancing throughput with full pushdown in OCI Data Integration“を翻訳したものです。

2023年8月15日


このブログでは、Oracle Cloud Infrastructure (OCI) Data Integrationデータ・パイプラインの完全プッシュダウン機能について説明します。ジョブのコンカレント処理を数十から数百に拡張して、スループットを向上させる最近の拡張機能について説明します。この拡張により、時間単位の処理時間が削減され、コスト削減につながります。Data Integrationの現在のライセンス・モデルによると、同等のデータ量を使用してタスクを実行するコストは50から80%削減されました。

OCI Data Integrationの最近の拡張機能によりETLのパフォーマンスが向上し、コストを削減

最新のリリースでは、完全プッシュダウンを実行するタイミングを決定するロジックを最適化しました。完全プッシュダウンを実行できるかどうかの決定は、フローの前の時点に移動しました。この最適化は、短時間で実行するジョブが多数ある場合に役立ちます。完全プッシュダウンが実行されたときにタスクを実行する待機時間を短縮しました。さらに重要なのは、ボトルネックを取り除いたことです。現在では、何十ものジョブを事前に実行するのではなく、何百ものジョブを同時に実行できるようになりました。以前は、ナッツを割るためにハンマーを使用していました。今はナットクラッカーを使用しています。

パフォーマンスの向上とコスト削減を提示する前に、プッシュダウン最適化の意味を説明します。プッシュダウンとは、データ統合および抽出、変換、ロード(ETL)プロセスにおけるデータ処理の最適化手法のことで、適用可能なすべての変換がデータベース内で直接実行されます。データ統合サービスまたはフレームワーク内で変換を実行する代わりに、変換がデータベースにプッシュダウンされます。このプロセスでは、データベースに対して一般的に割り当てられる機能を利用して、コストを削減し、パフォーマンスと効率を向上させます。プッシュダウン最適化は、データベース・サーバーで直接変換を実行することにより、ジョブ・パフォーマンスを向上させ、データの移動を削減する上で重要な役割を果たします。

OCI Data Integrationデータ・フローを利用して、データ移行、データ・ウェアハウジング、およびOCI環境内のデータ・レイクに関するユースケース向けに、データ・パイプラインのデータ変換を設計および実装できます。

A graphic depicting a dataflow design.

このプラットフォームでは、データ変換のために複雑なコードを記述する必要がなくなりますが、場合によってはコードを最適化できます。たとえば、データ・フローの例では、すべての表が同じデータベースにある場合、別のステージング領域で外部ジョブとしてではなく、データベースで変換を実行できます。

プッシュダウン最適化は、Data Integrationデータ・フローがこれらの最適化を認識して利用する機能です。プッシュダウン最適化では、変換ロジックをソース・データベースにプッシュします。OCI Data Integrationは、一般的で表現性の高いデータ変換機能を提供しながら、適切なケースの最適化を可能にします。

データ・パイプラインの変換へのアプローチ

Data Integrationの世界のデータ・パイプラインには、抽出、変換およびロード(ETL)、抽出、ロードおよび変換(ELT)という2つの主要なアプローチがあります。

ETLアプローチでは、データ変換は通常、データ・ウェアハウスの外部に存在する別のステージング領域で実行されます。このアプローチは、変換が複雑なシナリオや、ソース・データベースとターゲット・データベースが異なるサーバーでホストされている場合に有益であることがわかります。また、データベースに十分なメモリーまたはストレージ・リソースがない場合、ステージング領域の使用も必要になります。ただし、個別のステージング領域を使用する場合は、システム間でデータを移動する必要があります。

A graphic depicting the workflow for an ETL approach.

ELTアプローチでは、個別のステージング領域を必要とせずに、ソース・システムまたはターゲット・システムでデータ変換が実行されます。この方法により、システム間のデータ移動の量が削減されます。ソース・システムとターゲット・システムが同じデータベースに存在し、データベース自体で簡単に変換できる場合に最適です。ステージング領域を排除する場合は、プッシュダウン最適化を使用します。

A graphic depicting an ELT approach.

プッシュダウン最適化のタイプ

プッシュダウン最適化には、ソース、ターゲットおよび完全プッシュダウンの3つのタイプがあります。

一部の変換をソース・データベースにプッシュ・ダウンし、外部プログラムで残りの変換を別のステージング領域で実行する場合、ソース・プッシュダウンを実行しています。一部の変換をターゲット・データベースにプッシュダウンし、外部プログラムで残りの変換を別のステージング領域で実行する場合は、ターゲット・プッシュダウンを実行しています。完全プッシュダウンでは、ソースとターゲットが同じデータベース上にあり、すべての変換は個別のステージング領域なしでデータベースで実行されます。

OCI Data Integrationでプッシュダウンを使用する方法

デフォルトでは、OCI Data Integrationのデータ・フローはプッシュダウン最適化を使用します。データ・フロー・ジョブを構成する場合、次の図に示すように、プッシュダウンを有効または無効にするかどうかを柔軟に選択できます。プッシュダウンの最適化を有効にすると、ジョブのパフォーマンスが向上し、データの移動が最小限に抑えられます。この柔軟性により、データベース・メモリーやロードなどの様々なリソース容量に適応し、ジョブの実行場所に関する情報に基づいた意思決定を行うことができます。

A screenshot of the advanced options tab with the allow pushdown option circled in red.

完全プッシュダウン最適化では、データベース内のすべての変換が実行されます。ステージング領域なしで、すべてのデータをターゲット・データベースにロードします。一方、部分プッシュダウン最適化では変換が分割され、一部の変換がデータベース・サーバーで実行され、残りの変換が指定のステージング領域に移動されます。

次の図は、プッシュダウン最適化を実行するタイミングを決定するロジックを示しています。

A screenshot for the cecision criteria for full pushdown.

  • データ・フロー・ジョブを作成すると、プッシュダウンを許可または無効化するオプションが使用可能になります。

  • ジョブが処理のために送信されるときに、プッシュダウンが有効な場合、Data Integrationによってプッシュダウンの条件が満たされるかどうかが判断されます。

  • プッシュダウン最適化の条件が満たされた場合、データベース上でSQLコードを実行します(左ブランチ)。

  • 条件が満たされない場合は、ステージング領域(右ブランチ)で変換用の外部コードを実行します

完全プッシュダウンは、次の条件がある場合に実行されます。:

  • 単一のソースとターゲットを持つデータ・フローでは、ソースとターゲットの両方が、サポートされているリレーショナル・データ・システムへの同じ接続を使用します。

  • 複数のソースおよびターゲットがあるデータ・フローでは、すべてのソースおよびターゲットも同じデータベースおよび接続を使用する必要があります。

  • データ・フロー内のすべての変換演算子および関数がデータベースでサポートされます。

パフォーマンスとコストが大幅に向上

次の図は、最適化されたコードの実行時に処理できる同時ジョブ数の増加を示しています。ソフトウェア開発者キット(SDK)を使用して、様々な並行性レベルでタスクを送信し、平均タスク期間についてメモしました。最適化前のコードを使用して数百回の実行を行い、比較用に最適化されたコードを使用して同じ実験を繰り返しました。最適化の前に、ジョブ実行の平均期間は同時実行性のレベルに応じて直線的に増加しました。線形増加は最適化前に存在していたスロットルによるものです。

スロットルを削除することで、さらに多くの同時リクエストを実行できるようになりました。同時ジョブのレベルが低い場合、最適化されたコードによってパフォーマンスが大幅に50%向上します。この顕著な違いは、最適化によって達成される低レイテンシに起因します。さらに、この最適化の利点は、並行性のレベルが上がると、さらに明白になり、指数関数的に増加するため、効率の向上により高いワークロードを処理する能力が示されます。

完全プッシュダウン最適化のためにステージング領域で外部サーバーを使用する必要がなくなったため、ジョブの実行コストも大幅に低くなります。OCI Data Integrationの現在のライセンス・モデルによると、同等のデータ量を使用してタスクを実行するコストは50から80%削減されました。

Performance graph

まとめ

OCI Data Integrationの最新リリースでは、プッシュダウンの実現可能性を判断し、待機時間を短縮してボトルネックを解消するロジックが改善されています。この機能拡張により、数百のジョブの同時処理が可能になり、全体的な効率が向上します。この最適化により、ユーザーにとってよりスムーズで高速なデータ処理が実現します。

OCI Data Integrationは、ジョブ作成中にプッシュダウン最適化を有効または無効にするかどうかを柔軟に判断できるため、データベースの計算およびメモリー容量が増える可能性のあるシナリオを処理できます。プッシュダウン最適化では、データベース・サーバーで変換を実行することによって、ジョブ・パフォーマンスが向上し、データの移動が削減されます。完全なプッシュダウン最適化は、単一のETLフローのソースとターゲットに同じ接続を使用するなど、特定の条件が満たされたときに実行され、すべての変換をデータベースで効率的に実装できます。

このブログを通じて、プッシュダウン最適化の可能性を最大限に引き出すことを可能にするOracle Cloud Infrastructure Data Integrationでの完全プッシュダウンの機能およびメリットについて説明しました。この強力な機能を使用してワークロードを著しく高速化し、生産性とコスト効率の両方を大幅に向上させることができるようになりました。データ・フローのドキュメントで説明されているように、より複雑なユースケースを使用して、より高いレベルの同時実行性を実現できるようになりました。

詳細は、次のリソースを参照してください。: