SQL 最適化

パフォーマンスを向上させるために、さまざまなデータ準備操作とマイニング操作をデータベース内に直接プッシュできます。

SPSS Modeler の最も強力な機能の 1 つは、データの準備とマイニングの多くの操作をデータベースで直接実行できることです。 データベースにブッシュバックして実行可能な SQL コードを生成することにより、サンプリング、ソート、新しいフィールドの作成、およびある種のグラフ化などの多くの処理を、クライアントまたはサーバー・コンピューターではなく、データベース内で実行できます。 大規模なデータ・セットを処理している場合、これらのプッシュバック により、いくつかある手段で、劇的にパフォーマンスを改善できます。

  • DBMS から Cloud Pak for Data に転送される結果セットのサイズを小さくする。 大きな結果のセットが、ODBC ドライバ、ネットワーク I/O またはドライバーを介して読み込まれる場合、効率が低下する可能性があります。 この理由のため、SQL 最適化からもっとも利益を受ける操作は、行と列の選択と集計です (条件抽出ノード、サンプリング・ノード、レコード集計ノード)。これらの操作は通常、転送されるデータ・セットのサイズを減らします。 データは、将来パフォーマンスを改善するために、フロー内の重要な地点 (例えば、レコード結合ノードや条件抽出ノードの後) で、データベース内の一時テーブルへキャッシュできます。
  • データベースのパフォーマンスとスケーラビリティを活用する方法。 効率は、DBMS が並列処理、より高性能なハードウェア、より洗練されたディスク ストレージの管理、およびインデックスの存在などをしばしば活用することで改善されます。

これらの利点を考慮して、 Cloud Pak for Data は、各 SPSS Modeler フローによって生成される SQL の量を最大化するように設計されています。これにより、 SQL にコンパイルできない操作のみが Cloud Pak for Data によって実行されます。 ただし、標準 SQL (SQL-92) で説明されている制限のため、ある種の操作がサポートされないことがあります。

現在サポートされているデータベースについて詳しくは、 サポートされているデータ・ソース SPSS Modeler を参照してください。

ヒント:
  • フローを実行すると、データベースにプッシュバックされるノードが強調表示され、そのノードの横に小さい SQL アイコンが表示されます。 実行が完了したフローの編集を開始すると、次にフローを実行するまで、このアイコンが表示されなくなります。
    図1: SQL プッシュバック・インディケーター
    SQL プッシュバック・インディケーター
  • フローの実行 前に どのノードがプッシュバックするかを確認するには、「 SQL プレビュー 」をクリックします。 これにより、フローを変更してから実行することで、例えば、プッシュバックされない操作を可能な限り下流に移動してパフォーマンスを向上させることができます。
  • フロー内の特定のノードをプッシュバックできない場合、そのノードでプッシュバックが停止するため、そのノード以降のすべてのノードについてもプッシュバックされなくなります。 これにより、フロー内でのノード順序の設定方法に影響する場合があります。
注: SQL に関しては、以下の情報を考慮してください。
  • SQL の実装には小さな違いがあるため、データベースで実行されるフローは、 Cloud Pak for Data で実行されると、少し異なる結果を返す場合があります。 これらの違いは、似たような理由で、データベース・ベンダーによっても異なる可能性があります。 例えば、ストリング比較およびストリング照合での大/小文字の区別に関するデータベース構成によっては、 SQL プッシュバックを使用して実行される SPSS Modeler フローが、 SQL プッシュバックを使用しない場合とは異なる結果を生成する場合があります。 データベース構成の詳細は、データベース管理者に問い合わせてください。 Cloud Pak for Data との互換性を最大にするには、データベース・ストリング比較で大/小文字を区別する必要があります。
  • Cloud Pak for Data を使用して SQL を生成する場合、 SQL プッシュバックを使用した結果が一部のプラットフォーム (例えば Linux) で整合しない可能性があります。 これは、各プラットフォームで、浮動小数点が異なる方法で処理されるためです。