目次


SPSS+dashDB連携 —SQLプッシュバックによる分析処理のパフォーマンス向上—

Comments

1. はじめに - SPSS Modeler / dashDBとは

SPSS Modelerとは

データの入力・加工・視覚化・モデリング・出力までをサポートする統計ツール/ワークベンチです。親しみやすいインターフェースを用いて、行いたい処理のアイコンを配置することで非常に高度な統計解析を可能とする製品です。

dashDBとは

NetezzaやDB2 BLUのテクノロジーの“いいとこ取り”をした大量データの分析処理を得意とするDBです。Full Managed のクラウドサービスで、事前のハードウェア調達や物理設計、バックアップや統計情報取得等の運用は一切必要ありません。
コンセプトは「Load & Go」、データを準備してから実際に使えるようになるまでがとにかく簡単かつすぐに使える、そして分析処理や集計を高速に行うことができるというのがdashDBの強みで、Bluemix上から気軽にすぐ試していただくことの出来るクラウドサービスです。

2. SPSSとdashDBの連携—SQLプッシュバックとは

2009年にIBMがSPSSを買収して以来、SPSSとIBMデータベース製品の技術融合が進んでいます。この技術融合のトレンドのうちの一つが、SPSS Modeler17.1からサポートされたdashDBとの連携、「SQLプッシュバック」という技術です。
SQLプッシュバックとは、SPSS Modelerで構築した分析プロセスを、データソースのDB用に最適化したSQLに変換 / DBへ自動発行し、それを受け取ったDB側はデータ抽出や集計等を行いSPSS Modelerに結果を戻す、という一連の処理を指します。SPSS ModelerのデータソースとしてdashDBが使える、というだけでなく、dashDB用に最適化されたSQLを発行する、というのが重要なポイントとなります。

簡単な例を交えて、具体的な挙動とメリットを見ていきましょう。
売上明細表というテーブルがDBにあり、その集計処理をSPSS Modelerで行いたいとします。

 

このような処理で有りがちなのは、「統計解析ツール側(ここではSPSS Modeler)に一度全データを持ってきて、ツール側でデータ処理をする」という流れです。上記例はシンプルな処理内容のため、負荷を心配するまでもないように見えますが、この売上明細表が数億件レベル、サイズにしてギガ・テラバイト級のデータだった場合どうなるでしょうか。統計解析ツールとDBの間を、大量のデータが行き来することでネットワークへの負荷がかかり、結果として処理が長時間化することが予想されます。

実際に、下図のような筆者環境にて5億5000万件(サイズは25GB)の表を用いて試したところ、インターネット経由でのデータ転送が発生したこともあり、数時間以上を要して集計結果がクライアントに返されました。

 

最終的に欲しいのは「集計結果」の値のみにも関わらず、数億件ものデータ全件をダウンロードするのは少々大げさです。特にdashDBはクラウドサービスであり、インターネットを経由しての接続となるため、従来のオンプレミス環境での運用以上にネットワーク通信による影響を考慮する必要があります。
さらに、せっかく高速なDBエンジンを持つdashDBにデータが格納されていたにも関わらず、この恩恵を得ずにデータをただ外に出してしまうのも、ある意味もったいないと言えます。

 

ここで登場するのが「SQLプッシュバック」です。SQLプッシュバックを用いると

① SPSS Modelerから集計処理に必要なクエリをdashDBに発行し、必要最低限の結果セットのみを受け取ることで、大量のデータをダウンロードする必要がなくなり、ネットワーク負荷が下がる

② 集計結果の算出は、大量データ処理を得意とするdashDBの高速DBエンジンに処理をさせることで性能が向上

というメリットを享受することができます。実際、SQLプッシュバックによって先ほど数時間単位で必要だった処理をわずか2.4秒で完了する結果となりました(*1)。

(*1)処理時間はデータ型や処理内容等、サーバ環境にも依存しますので、あくまで一つの実行例/実行時間のサンプルとしてお考えください。

 

実際の統計分析においては、ベースとなるデータに対して「表の結合」「ソート」「サンプリング」といった、必要なデータの準備、いわゆる「データの前処理」というフェーズがあります。データが大規模になればなるほど、この前処理という作業は時間を要する作業となります。先ほどの例では単純な集計処理のみでしたが、データの前処理は高速なDBの中でなるべく済ませ、必要最低限のデータのみを返すというSQLプッシュバックは、大規模なデータを処理する場面においては特に劇的なパフォーマンス向上が期待できると言えます。

3. 環境セットアップ(概要)

ここからは、SQLプッシュバックを利用するためのセットアップ手順をご紹介します。

(1) SPSS Modeler Client、Modeler Serverをそれぞれインストールします。

(2) dashDB環境を作成し、データをロードします。詳細はこちらをご参照ください。

(3) dashDBへのODBC接続情報を確認します。

ModelerサーバからdashDBへの接続を行うために、接続情報を確認します。

① dashDBにログイン後、左ペインの「Connect」から「Connection Information」を選択します。

② ホスト名、DB名、接続ユーザ名、パスワード等の設定を確認します(メモ帳等にコピーしておくと便利です)

③ 確認が終わったら、その情報をModeler Server内の設定ファイルに反映させて、Modeler Serverを起動します。

 

(4) Modeler Clientを立ち上げ、Modeler Serverへの接続が可能かどうかを確認してください。

(5) SQLプッシュバック有効化の設定を行います。

① ウィンドウ下部の「...」をクリックします。

② 「オプション」タブをクリックし、「最適化」へと進みます。「ストリームのリライトを有効にする」「SQL生成」にチェックを入れます。同時に、「SQL生成の最適化」にもチェックが入ることを確認してください。

 

③ 同じく「オプション」タブにある「ログとステータス」をクリックします。上2つのチェックボックにチェックを入れます。この設定は必須ではありませんが、SQLプッシュバックが機能していることを確認する上で便利な設定です。

 

(6) SPSS ModelerからdashDB上のDBへの接続する

① ウィンドウ上部のバーにある「ツール」から「データベース」を選択します。

② 「データソース」を選択した状態でModeler Serverで定義したデータソースが表示されることを確認し、クリックします。その後「認証」にて前準備で情報を控えたDBユーザ名、パスワードを入力し、「接続」をクリックします。

③ ②までで設定をしたデータソースは今後多用しますので、「デフォルト」「保存」にチェックを入れた状態で「OK」をクリックします。

 

(7) 入力データとして、DB内のテーブルをSPSS Modeler上に定義する。

(6)までの手順にてSQLプッシュバックが利用可能な環境が出来上がりました。環境セットアップが正常に完了しているかの確認も込めて、試しに1つ、入力データとしてDB内のテーブルをSPSS Modeler上で定義してみます。

① ウィンドウ下部の「入力」タブから「データベース」を選択し、パレット上にドラッグ&ドロップします。ダブルクリックで詳細設定用のウィンドウが表示されます。

② 「データの選択」をクリックし、表示されている接続先DB内にあるテーブル名一覧から今回使う対象表を選択し「OK」で設定を反映させます。

 

無事、稼働確認できたでしょうか。以上で設定は完了です。

4. 「データの前処理」でSQLプッシュバックを活用する

先ほどは非常に簡単な例で、SQLプッシュバックの中身を見てきましたが、前述のように実際にデータのモデリングをする際には、より複雑な「データの前処理」が必要です。
例えば、先ほどの売上明細表をベースに「顧客のクラスタリング分析」をやってみます。

  • 売上明細表には、「どの顧客がどのカテゴリの何の製品をどれくらい購入したか」が1行分のデータとして格納されています。
  • データの前処理では、売上明細表の全5億5000万件から1000万人の顧客を対象に、購入した製品のカテゴリや販売データを集計して、クラスタリングに必要なデータへと整形します。
  • モデリングでは「前処理フェーズでの整形データを元に、K-meansモデルでクラスタリング」を行います。
 

では、前処理フェーズをSQLプッシュバックが有効な状態で実行してみます。
SQLプッシュバックが有効になってる際は、ストリーム実行時に各ノードが紫になります。この例では前処理の全て(データの抽出、集計、横持ち/縦持ちの変換)を、SQLとしてdashDB内で処理しています。また、ウィンドウ下部の「...」をクリックし「メッセージ」タブを見ると、実際にdashDBへプッシュバックされたSQLを確認することが可能です。

 

K-meansモデルは、クラスタの数(kの数値)を変えながら何度も何度も試行を繰り返し、どのクラスタの切り方がより適しているか試行錯誤する必要があります。筆者環境では上記の前処理は約30秒で完了していますが、SQLプッシュバック無効時は数時間というオーダーの時間が必要でした。前処理に長時間を要するということは、試行錯誤を繰り返す回数には限界が生じるということです。
「データを分析しモデルを作る」「そのモデルを使ってマイニングをして、結果をビジネスにつなげる」というのが本来のデータ分析の主眼ですがその途中地点で多くの時間を費やせば元も子もありません。SQLプッシュバックはこういった悩みの一助となりうる機能であり、これを実現しているのがSPSSとdashDBが連携したデータ基盤と言えます。

おわりに

この記事では、SPSS ModelerとdashDBの連携による「SQLプッシュバック」の機能概要と性能向上について例を交えながらご紹介をしました。
繰り返しにはなりますが、SPSS自体も高速に処理を返す製品です。しかしそこに、分析処理を得意とするdashDBの馬力を組み合わせることで、大量データ分析のさらなら性能向上およびモデリング・分析業務の効率化を可能とするのがSQLプッシュバックです。
SPSS Modelerの使いやすいGUIと、クラウドサービスだからこそすぐに使えるdashDB、そして手元にある大量のデータとを組み合わせて手軽にデータ分析をスタートする、といった活用からはじめてみませんか。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=1033526
ArticleTitle=SPSS+dashDB連携 —SQLプッシュバックによる分析処理のパフォーマンス向上—
publish-date=06292016